From 06096486d4f5a2260e48f5c0cf5fd5af71f30964 Mon Sep 17 00:00:00 2001 From: Friendika Date: Tue, 18 Oct 2011 00:18:21 -0700 Subject: [PATCH] hopefully solve db update issues bug #182 --- boot.php | 17 +++++++++++++++++ mod/admin.php | 11 ++--------- 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/boot.php b/boot.php index 37c530e81f..c2c1088e47 100644 --- a/boot.php +++ b/boot.php @@ -539,6 +539,8 @@ function check_config(&$a) { $current = intval(DB_UPDATE_VERSION); if(($stored < $current) && file_exists('update.php')) { + load_config('database'); + // We're reporting a different version than what is currently installed. // Run any existing update scripts to bring the database up to current. @@ -552,6 +554,21 @@ function check_config(&$a) { for($x = $stored; $x < $current; $x ++) { if(function_exists('update_' . $x)) { + + // There could be a lot of processes running or about to run. + // We want exactly one process to run the update command. + // So store the fact that we're taking responsibility + // after first checking to see if somebody else already has. + + // If the update fails or times-out completely you may need to + // delete the config entry to try again. + + if(get_config('database','update_' . $x)) + break; + set_config('database','update_' . $x, '1'); + + // call the specific update + $func = 'update_' . $x; $func($a); } diff --git a/mod/admin.php b/mod/admin.php index ebef1ccb93..f178e67f61 100644 --- a/mod/admin.php +++ b/mod/admin.php @@ -5,16 +5,9 @@ */ require_once("include/remoteupdate.php"); -function admin_init(&$a) { - if(!is_site_admin()) { - notice( t('Permission denied.') . EOL); - return; - } -} - function admin_post(&$a){ if(!is_site_admin()) { - return login(false); + return; } // urls @@ -672,7 +665,7 @@ function admin_page_logs(&$a){ function admin_page_remoteupdate_post(&$a) { // this function should be called via ajax post if(!is_site_admin()) { - return login(false); + return; }