Skip to content

Commit 8096511

Browse files
committed
perf(group): Cache group membership in distributed cache
And move the group management listener registration in the core app instead of the files_sharing app (which can be disabled). Signed-off-by: Carl Schwan <carl@carlschwan.eu>
1 parent d64c8bf commit 8096511

4 files changed

Lines changed: 85 additions & 125 deletions

File tree

apps/files_sharing/lib/AppInfo/Application.php

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,6 @@
88

99
namespace OCA\Files_Sharing\AppInfo;
1010

11-
use OC\Group\DisplayNameCache as GroupDisplayNameCache;
12-
use OC\User\DisplayNameCache;
1311
use OCA\Files\Event\LoadAdditionalScriptsEvent;
1412
use OCA\Files\Event\LoadSidebar;
1513
use OCA\Files_Sharing\Capabilities;
@@ -50,7 +48,6 @@
5048
use OCP\Files\Events\Node\BeforeNodeReadEvent;
5149
use OCP\Files\Events\UserHomeSetupEvent;
5250
use OCP\Group\Events\BeforeGroupDeletedEvent;
53-
use OCP\Group\Events\GroupChangedEvent;
5451
use OCP\Group\Events\GroupDeletedEvent;
5552
use OCP\Group\Events\UserAddedEvent;
5653
use OCP\Group\Events\UserRemovedEvent;
@@ -62,8 +59,6 @@
6259
use OCP\Share\Events\ShareCreatedEvent;
6360
use OCP\Share\Events\ShareMovedEvent;
6461
use OCP\Share\Events\ShareTransferredEvent;
65-
use OCP\User\Events\UserChangedEvent;
66-
use OCP\User\Events\UserDeletedEvent;
6762
use OCP\Util;
6863
use Psr\Container\ContainerInterface;
6964
use Symfony\Component\EventDispatcher\GenericEvent as OldGenericEvent;
@@ -98,10 +93,6 @@ function () use ($c) {
9893
$context->registerCapability(Capabilities::class);
9994

10095
$context->registerNotifierService(Notifier::class);
101-
$context->registerEventListener(UserChangedEvent::class, DisplayNameCache::class);
102-
$context->registerEventListener(UserDeletedEvent::class, DisplayNameCache::class);
103-
$context->registerEventListener(GroupChangedEvent::class, GroupDisplayNameCache::class);
104-
$context->registerEventListener(GroupDeletedEvent::class, GroupDisplayNameCache::class);
10596

10697
// Sidebar and files scripts
10798
$context->registerEventListener(LoadAdditionalScriptsEvent::class, LoadAdditionalListener::class);

core/AppInfo/Application.php

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,12 @@
3737
use OC\Core\Sharing\Recipient\TeamShareRecipientType;
3838
use OC\Core\Sharing\Recipient\TokenShareRecipientType;
3939
use OC\Core\Sharing\Recipient\UserShareRecipientType;
40+
use OC\Group\DisplayNameCache as GroupDisplayNameCache;
41+
use OC\Group\Manager as GroupManager;
4042
use OC\OCM\OCMDiscoveryHandler;
4143
use OC\OCM\OCMJwksHandler;
4244
use OC\TagManager;
45+
use OC\User\DisplayNameCache;
4346
use OCP\AppFramework\App;
4447
use OCP\AppFramework\Bootstrap\IBootContext;
4548
use OCP\AppFramework\Bootstrap\IBootstrap;
@@ -48,13 +51,19 @@
4851
use OCP\AppFramework\Http\Events\BeforeTemplateRenderedEvent;
4952
use OCP\DB\Events\AddMissingIndicesEvent;
5053
use OCP\DB\Events\AddMissingPrimaryKeyEvent;
54+
use OCP\Group\Events\BeforeGroupDeletedEvent;
55+
use OCP\Group\Events\BeforeUserAddedEvent;
56+
use OCP\Group\Events\BeforeUserRemovedEvent;
57+
use OCP\Group\Events\GroupChangedEvent;
58+
use OCP\Group\Events\GroupDeletedEvent;
5159
use OCP\IAppConfig;
5260
use OCP\Interaction\RestrictInteractionEvent;
5361
use OCP\Navigation\Events\LoadAdditionalEntriesEvent;
5462
use OCP\Server;
5563
use OCP\Sharing\ISharingRegistry;
5664
use OCP\User\Events\BeforeUserDeletedEvent;
5765
use OCP\User\Events\PasswordUpdatedEvent;
66+
use OCP\User\Events\UserChangedEvent;
5867
use OCP\User\Events\UserDeletedEvent;
5968
use OCP\Util;
6069

@@ -103,6 +112,14 @@ public function register(IRegistrationContext $context): void {
103112
$context->registerEventListener(UserDeletedEvent::class, UserDeletedWebAuthnCleanupListener::class);
104113
$context->registerEventListener(PasswordUpdatedEvent::class, PasswordUpdatedListener::class);
105114

115+
$context->registerEventListener(UserChangedEvent::class, DisplayNameCache::class);
116+
$context->registerEventListener(UserDeletedEvent::class, DisplayNameCache::class);
117+
$context->registerEventListener(GroupChangedEvent::class, GroupDisplayNameCache::class);
118+
$context->registerEventListener(GroupDeletedEvent::class, GroupDisplayNameCache::class);
119+
$context->registerEventListener(BeforeGroupDeletedEvent::class, GroupManager::class);
120+
$context->registerEventListener(BeforeUserAddedEvent::class, GroupManager::class);
121+
$context->registerEventListener(BeforeUserRemovedEvent::class, GroupManager::class);
122+
106123
// Tags
107124
$context->registerEventListener(UserDeletedEvent::class, TagManager::class);
108125

0 commit comments

Comments
 (0)