improve lookup server behaviour

Don't try to connect to the lookup server if the lookup server was disabled
by the admin or an empty lookup server URL was given

Signed-off-by: Bjoern Schiessle <bjoern@schiessle.org>
This commit is contained in:
Bjoern Schiessle 2019-01-07 12:15:11 +01:00
parent 35a372dadd
commit d4134982f5
No known key found for this signature in database
GPG Key ID: 2378A753E2BF04F6
2 changed files with 39 additions and 2 deletions

View File

@ -75,7 +75,7 @@ class RetryJob extends Job {
}
protected function run($argument) {
if ($argument['retryNo'] === 5 || empty($this->lookupServer)) {
if ($this->killBackgroundJob((int)$argument['retryNo'])) {
return;
}
@ -110,4 +110,23 @@ class RetryJob extends Job {
protected function shouldRun($argument) {
return !isset($argument['lastRun']) || ((time() - $argument['lastRun']) > $this->interval);
}
/**
* check if we should kill the background job
*
* The lookup server should no longer be contacted if:
*
* - max retries are reached (set to 5)
* - lookup server was disabled by the admin
* - no valid lookup server URL given
*
* @param int $retryCount
* @return bool
*/
protected function killBackgroundJob($retryCount) {
$maxTriesReached = $retryCount >= 5;
$lookupServerDisabled = $this->config->getAppValue('files_sharing', 'lookupServerUploadEnabled', 'yes') !== 'yes';
return $maxTriesReached || $lookupServerDisabled || empty($this->lookupServer);
}
}

View File

@ -46,6 +46,8 @@ class UpdateLookupServer {
private $jobList;
/** @var string URL point to lookup server */
private $lookupServer;
/** @var bool */
private $lookupServerEnabled;
/**
* @param AccountManager $accountManager
@ -68,6 +70,8 @@ class UpdateLookupServer {
return;
}
$this->lookupServerEnabled = $this->config->getAppValue('files_sharing', 'lookupServerUploadEnabled', 'yes') === 'yes';
$this->lookupServer = $config->getSystemValue('lookup_server', 'https://lookup.nextcloud.com');
if(!empty($this->lookupServer)) {
$this->lookupServer = rtrim($this->lookupServer, '/');
@ -79,7 +83,8 @@ class UpdateLookupServer {
* @param IUser $user
*/
public function userUpdated(IUser $user) {
if(empty($this->lookupServer)) {
if (!$this->shouldUpdateLookupServer()) {
return;
}
@ -150,4 +155,17 @@ class UpdateLookupServer {
);
}
}
/**
* check if we should update the lookup server, we only do it if
*
* * we have a valid URL
* * the lookup server update was enabled by the admin
*
* @return bool
*/
private function shouldUpdateLookupServer() {
return $this->lookupServerEnabled || !empty($this->lookupServer);
}
}