Merge pull request #2835 from owncloud/move-maint-start
Move maintenance start to ajax call
This commit is contained in:
commit
27f7ef49e4
5 changed files with 32 additions and 7 deletions
|
@ -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();
|
||||
}
|
||||
|
||||
|
@ -108,4 +113,4 @@ class UpdateWatcher {
|
|||
$this->eventSource->close();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
|
@ -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();
|
||||
|
|
|
@ -187,7 +187,7 @@ class OC_Config{
|
|||
}
|
||||
// Prevent others not to read the config
|
||||
@chmod($filename, 0640);
|
||||
|
||||
OC_Util::clearOpcodeCache();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
20
lib/util.php
20
lib/util.php
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue