diff options
author | Arthur Schiwon <blizzz@arthur-schiwon.de> | 2022-06-28 13:42:19 +0200 |
---|---|---|
committer | Arthur Schiwon <blizzz@arthur-schiwon.de> | 2022-06-28 14:35:18 +0200 |
commit | d97f32dd8e51e4fedc6c991b7d08b1c2e43fa99a (patch) | |
tree | f7502b608ed672cdd7ab545b1a9556e960d83112 /apps/user_ldap | |
parent | 632f2d77602bf53e2eec1f192c74f31b6eba4dbe (diff) | |
download | nextcloud-server-d97f32dd8e51e4fedc6c991b7d08b1c2e43fa99a.tar.gz nextcloud-server-d97f32dd8e51e4fedc6c991b7d08b1c2e43fa99a.zip |
delete groups in chunks instead of one by one
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
Diffstat (limited to 'apps/user_ldap')
-rw-r--r-- | apps/user_ldap/lib/Jobs/UpdateGroups.php | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/apps/user_ldap/lib/Jobs/UpdateGroups.php b/apps/user_ldap/lib/Jobs/UpdateGroups.php index a3b306485da..787a14f1241 100644 --- a/apps/user_ldap/lib/Jobs/UpdateGroups.php +++ b/apps/user_ldap/lib/Jobs/UpdateGroups.php @@ -32,6 +32,7 @@ use OCP\AppFramework\Utility\ITimeFactory; use OCP\BackgroundJob\TimedJob; use OCA\User_LDAP\Group_Proxy; use OCP\DB\Exception; +use OCP\DB\QueryBuilder\IQueryBuilder; use OCP\EventDispatcher\IEventDispatcher; use OCP\Group\Events\UserAddedEvent; use OCP\Group\Events\UserRemovedEvent; @@ -214,6 +215,7 @@ class UpdateGroups extends TimedJob { $query->insert('ldap_group_members') ->setValue('owncloudname', $query->createParameter('owncloudname')) ->setValue('owncloudusers', $query->createParameter('owncloudusers')); + foreach ($createdGroups as $createdGroup) { $this->logger->info( 'bgJ "updateGroups" – new group "' . $createdGroup . '" found.', @@ -243,16 +245,20 @@ class UpdateGroups extends TimedJob { $query = $this->dbc->getQueryBuilder(); $query->delete('ldap_group_members') - ->where($query->expr()->eq('owncloudname', $query->createParameter('owncloudname'))); + ->where($query->expr()->in('owncloudname', $query->createParameter('owncloudnames'))); - foreach ($removedGroups as $removedGroup) { + foreach (array_chunk($removedGroups, 1000) as $removedGroupsChunk) { $this->logger->info( - 'bgJ "updateGroups" – group "' . $removedGroup . '" was removed.', - ['app' => 'user_ldap'] + 'bgJ "updateGroups" – groups {removedGroups} were removed.', + [ + 'app' => 'user_ldap', + 'removedGroups' => $removedGroupsChunk + ] ); - $query->setParameter('owncloudname', $removedGroup); + $query->setParameter('owncloudnames', $removedGroupsChunk, IQueryBuilder::PARAM_STR_ARRAY); $query->executeStatement(); } + $this->logger->debug( 'bgJ "updateGroups" – FINISHED dealing with removed groups.', ['app' => 'user_ldap'] |