From 23c57b22cbb52edd5e875ef4ff44ca8ed42f88e3 Mon Sep 17 00:00:00 2001 From: Bjoern Schiessle Date: Mon, 7 Jan 2019 12:15:11 +0100 Subject: [PATCH 1/4] 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 --- .../lib/BackgroundJobs/RetryJob.php | 21 ++++++++++++++++++- .../lib/UpdateLookupServer.php | 20 +++++++++++++++++- 2 files changed, 39 insertions(+), 2 deletions(-) diff --git a/apps/lookup_server_connector/lib/BackgroundJobs/RetryJob.php b/apps/lookup_server_connector/lib/BackgroundJobs/RetryJob.php index 5a7212a6522dc..3b110ead1e3f8 100644 --- a/apps/lookup_server_connector/lib/BackgroundJobs/RetryJob.php +++ b/apps/lookup_server_connector/lib/BackgroundJobs/RetryJob.php @@ -75,7 +75,7 @@ public function execute($jobList, ILogger $logger = null) { } protected function run($argument) { - if ($argument['retryNo'] === 5 || empty($this->lookupServer)) { + if ($this->killBackgroundJob((int)$argument['retryNo'])) { return; } @@ -110,4 +110,23 @@ protected function run($argument) { 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); + } } diff --git a/apps/lookup_server_connector/lib/UpdateLookupServer.php b/apps/lookup_server_connector/lib/UpdateLookupServer.php index 7902ede881616..727dff70cbb9b 100644 --- a/apps/lookup_server_connector/lib/UpdateLookupServer.php +++ b/apps/lookup_server_connector/lib/UpdateLookupServer.php @@ -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 @@ public function __construct(AccountManager $accountManager, 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 @@ public function __construct(AccountManager $accountManager, * @param IUser $user */ public function userUpdated(IUser $user) { - if(empty($this->lookupServer)) { + + if (!$this->shouldUpdateLookupServer()) { return; } @@ -150,4 +155,17 @@ protected function sendToLookupServer(IUser $user, array $publicData) { ); } } + + /** + * 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); + } + } From edbe99d44eccb9eea6a32f09567fbce1105771fd Mon Sep 17 00:00:00 2001 From: Bjoern Schiessle Date: Wed, 20 Feb 2019 10:20:45 +0100 Subject: [PATCH 2/4] increase timespan between each retry Signed-off-by: Bjoern Schiessle --- .../lib/BackgroundJobs/RetryJob.php | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/apps/lookup_server_connector/lib/BackgroundJobs/RetryJob.php b/apps/lookup_server_connector/lib/BackgroundJobs/RetryJob.php index 3b110ead1e3f8..ed859a7197633 100644 --- a/apps/lookup_server_connector/lib/BackgroundJobs/RetryJob.php +++ b/apps/lookup_server_connector/lib/BackgroundJobs/RetryJob.php @@ -36,8 +36,8 @@ class RetryJob extends Job { private $jobList; /** @var string */ private $lookupServer; - /** @var int how much time should be between two tries (10 minutes) */ - private $interval = 600; + /** @var int how much time should be between two, will be increased for each retry */ + private $interval = 100; /** * @param IClientService $clientService @@ -108,7 +108,9 @@ protected function run($argument) { * @return bool */ protected function shouldRun($argument) { - return !isset($argument['lastRun']) || ((time() - $argument['lastRun']) > $this->interval); + $retryNo = (int)$argument['retryNo']; + $delay = $this->interval * 6 ** $retryNo; + return !isset($argument['lastRun']) || ((time() - $argument['lastRun']) > $delay); } /** From 6e56160123d39fe7c997b505a143bffb7a4ef819 Mon Sep 17 00:00:00 2001 From: Daniel Kesselberg Date: Mon, 4 Mar 2019 19:12:46 +0100 Subject: [PATCH 3/4] Fix Undefined property: OCA\LookupServerConnector\UpdateLookupServer::$config Signed-off-by: Daniel Kesselberg --- apps/lookup_server_connector/lib/UpdateLookupServer.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/lookup_server_connector/lib/UpdateLookupServer.php b/apps/lookup_server_connector/lib/UpdateLookupServer.php index 727dff70cbb9b..f96b3d787f297 100644 --- a/apps/lookup_server_connector/lib/UpdateLookupServer.php +++ b/apps/lookup_server_connector/lib/UpdateLookupServer.php @@ -70,7 +70,7 @@ public function __construct(AccountManager $accountManager, return; } - $this->lookupServerEnabled = $this->config->getAppValue('files_sharing', 'lookupServerUploadEnabled', 'yes') === 'yes'; + $this->lookupServerEnabled = $config->getAppValue('files_sharing', 'lookupServerUploadEnabled', 'yes') === 'yes'; $this->lookupServer = $config->getSystemValue('lookup_server', 'https://lookup.nextcloud.com'); if(!empty($this->lookupServer)) { From ee6426024d3c996a770bd26b857be031b6233d78 Mon Sep 17 00:00:00 2001 From: Morris Jobke Date: Tue, 5 Mar 2019 10:08:27 +0100 Subject: [PATCH 4/4] Fix missing $config dependency in RetryJob Signed-off-by: Morris Jobke --- apps/lookup_server_connector/lib/BackgroundJobs/RetryJob.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/apps/lookup_server_connector/lib/BackgroundJobs/RetryJob.php b/apps/lookup_server_connector/lib/BackgroundJobs/RetryJob.php index ed859a7197633..242b0c713fe9c 100644 --- a/apps/lookup_server_connector/lib/BackgroundJobs/RetryJob.php +++ b/apps/lookup_server_connector/lib/BackgroundJobs/RetryJob.php @@ -38,6 +38,8 @@ class RetryJob extends Job { private $lookupServer; /** @var int how much time should be between two, will be increased for each retry */ private $interval = 100; + /** @var IConfig */ + private $config; /** * @param IClientService $clientService @@ -49,6 +51,7 @@ public function __construct(IClientService $clientService, IConfig $config) { $this->clientService = $clientService; $this->jobList = $jobList; + $this->config = $config; if ($config->getSystemValue('has_internet_connection', true) === false) { return;