Merge pull request #2835 from owncloud/move-maint-start

Move maintenance start to ajax call
This commit is contained in:
Thomas Müller 2013-06-14 02:13:18 -07:00
commit 27f7ef49e4
5 changed files with 32 additions and 7 deletions

View File

@ -5,11 +5,15 @@ require_once '../../lib/base.php';
if (OC::checkUpgrade(false)) {
\OC_DB::enableCaching(false);
OC_Config::setValue('maintenance', true);
$installedVersion = OC_Config::getValue('version', '0.0.0');
$currentVersion = implode('.', OC_Util::getVersion());
OC_Log::write('core', 'starting upgrade from ' . $installedVersion . ' to ' . $currentVersion, OC_Log::WARN);
$updateEventSource = new OC_EventSource();
$watcher = new UpdateWatcher($updateEventSource);
OC_Hook::connect('update', 'success', $watcher, 'success');
OC_Hook::connect('update', 'error', $watcher, 'error');
OC_Hook::connect('update', 'error', $watcher, 'failure');
OC_Hook::connect('update', 'failure', $watcher, 'failure');
$watcher->success('Turned on maintenance mode');
try {
$result = OC_DB::updateDbFromStructure(OC::$SERVERROOT.'/db_structure.xml');
@ -99,6 +103,7 @@ class UpdateWatcher {
OC_Util::obEnd();
$this->eventSource->send('failure', $message);
$this->eventSource->close();
OC_Config::setValue('maintenance', false);
die();
}

View File

@ -235,10 +235,7 @@ class OC {
$currentVersion = implode('.', OC_Util::getVersion());
if (version_compare($currentVersion, $installedVersion, '>')) {
if ($showTemplate && !OC_Config::getValue('maintenance', false)) {
OC_Config::setValue('maintenance', true);
OC_Log::write('core',
'starting upgrade from ' . $installedVersion . ' to ' . $currentVersion,
OC_Log::WARN);
OC_Config::setValue('theme', '');
$minimizerCSS = new OC_Minimizer_CSS();
$minimizerCSS->clearCache();
$minimizerJS = new OC_Minimizer_JS();

View File

@ -187,7 +187,7 @@ class OC_Config{
}
// Prevent others not to read the config
@chmod($filename, 0640);
OC_Util::clearOpcodeCache();
return true;
}
}

View File

@ -50,6 +50,9 @@ class OC_Connector_Sabre_MaintenancePlugin extends Sabre_DAV_ServerPlugin
if (OC_Config::getValue('maintenance', false)) {
throw new Sabre_DAV_Exception_ServiceUnavailable();
}
if (OC::checkUpgrade(false)) {
throw new Sabre_DAV_Exception_ServiceUnavailable('Upgrade needed');
}
return true;
}

View File

@ -832,6 +832,26 @@ class OC_Util {
return $theme;
}
/**
* Clear the opcode cache if one exists
* This is necessary for writing to the config file
* in case the opcode cache doesn't revalidate files
*/
public static function clearOpcodeCache() {
// APC
if (function_exists('apc_clear_cache')) {
apc_clear_cache();
}
// Zend Opcache
if (function_exists('accelerator_reset')) {
accelerator_reset();
}
// XCache
if (function_exists('xcache_clear_cache')) {
xcache_clear_cache(XC_TYPE_VAR, 0);
}
}
/**
* Normalize a unicode string
* @param string $value a not normalized string