diff options
author | Anna Larch <anna@nextcloud.com> | 2023-08-17 10:19:10 +0200 |
---|---|---|
committer | Daniel <mail@danielkesselberg.de> | 2023-08-26 17:21:50 +0200 |
commit | 7f11ee8c4af3305ad2ecb90b1f400ee79b74c51c (patch) | |
tree | 05df07ea22b353b2490c6a6fb9118044b69e8b9d /apps/dav/lib/Migration | |
parent | efeb517eddc7f29857a5d633b5a00655c74f2465 (diff) | |
download | nextcloud-server-7f11ee8c4af3305ad2ecb90b1f400ee79b74c51c.tar.gz nextcloud-server-7f11ee8c4af3305ad2ecb90b1f400ee79b74c51c.zip |
fix(CardDAV): only run upgrade sync if 1000 users or less
Signed-off-by: Anna Larch <anna@nextcloud.com>
Diffstat (limited to 'apps/dav/lib/Migration')
-rw-r--r-- | apps/dav/lib/Migration/Version1027Date20230504122946.php | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/apps/dav/lib/Migration/Version1027Date20230504122946.php b/apps/dav/lib/Migration/Version1027Date20230504122946.php index be3d19e8a80..998be8111ca 100644 --- a/apps/dav/lib/Migration/Version1027Date20230504122946.php +++ b/apps/dav/lib/Migration/Version1027Date20230504122946.php @@ -29,6 +29,8 @@ namespace OCA\DAV\Migration; use Closure; use OCA\DAV\CardDAV\SyncService; use OCP\DB\ISchemaWrapper; +use OCP\IConfig; +use OCP\IUserManager; use OCP\Migration\IOutput; use OCP\Migration\SimpleMigrationStep; use Psr\Container\ContainerExceptionInterface; @@ -37,22 +39,27 @@ use Psr\Log\LoggerInterface; use Throwable; class Version1027Date20230504122946 extends SimpleMigrationStep { - private SyncService $syncService; - private LoggerInterface $logger; - - public function __construct(SyncService $syncService, LoggerInterface $logger) { - $this->syncService = $syncService; - $this->logger = $logger; - } + public function __construct(private SyncService $syncService, + private LoggerInterface $logger, + private IUserManager $userManager, + private IConfig $config) {} /** * @param IOutput $output * @param Closure(): ISchemaWrapper $schemaClosure * @param array $options */ public function postSchemaChange(IOutput $output, Closure $schemaClosure, array $options): void { + if($this->userManager->countUsers() > 1000) { + $this->config->setAppValue('dav', 'needs_system_address_book_sync', 'yes'); + $output->info('Could not sync system address books during update - too many user records have been found. Please call occ dav:sync-system-addressbook manually.'); + return; + } + try { $this->syncService->syncInstance(); + $this->config->setAppValue('dav', 'needs_system_address_book_sync', 'no'); } catch (Throwable $e) { + $this->config->setAppValue('dav', 'needs_system_address_book_sync', 'yes'); $this->logger->error('Could not sync system address books during update', [ 'exception' => $e, ]); |