chg: [update] Do not release the lock if update fails more than 3 times

pull/5002/head
mokaddem 2019-10-10 10:14:22 +02:00
parent 80b1061639
commit 571b4887f0
No known key found for this signature in database
GPG Key ID: 164C473F627A06FA
1 changed files with 27 additions and 1 deletions

View File

@ -1696,6 +1696,9 @@ class AppModel extends Model
if ($db_update_success) {
$db_version['AdminSetting']['value'] = $update;
$this->AdminSetting->save($db_version);
$this->__resetUpdateFailNumber();
} else {
$this->__increaseUpdateFailNumber();
}
if ($verbose) {
echo "\033[32mDone\033[0m" . PHP_EOL;
@ -1705,7 +1708,10 @@ class AppModel extends Model
if (!empty($job)) {
$job['Job']['message'] = __('Update done');
}
$this->__changeLockState(false);
$fail_number = $this->__getUpdateFailNumber();
if ($fail_number < 3) { // Do not release the lock if update failed more than 3 time
$this->__changeLockState(false);
}
$this->__queueCleanDB();
} else {
if (!empty($job)) {
@ -1854,6 +1860,26 @@ class AppModel extends Model
return $remainingTime > 0;
}
public function getUpdateFailNumber()
{
$this->AdminSetting = ClassRegistry::init('AdminSetting');
$update_fail_number = $this->AdminSetting->getSetting('update_fail_number');
return ($update_fail_number !== false && $update_fail_number !== '') ? $update_fail_number : 0;
}
public function resetUpdateFailNumber()
{
$this->AdminSetting = ClassRegistry::init('AdminSetting');
$this->AdminSetting->changeSetting('update_fail_number', 0);
}
public function increaseUpdateFailNumber()
{
$this->AdminSetting = ClassRegistry::init('AdminSetting');
$update_fail_number = $this->AdminSetting->getSetting('update_fail_number');
$this->AdminSetting->changeSetting('update_fail_number', $update_fail_number+1);
}
private function __queueCleanDB()
{
$this->AdminSetting = ClassRegistry::init('AdminSetting');