From 4727b4da995e14cd7ff4e1616b15a47b545f5ac1 Mon Sep 17 00:00:00 2001 From: Abhijeet <41686026+abhvsn@users.noreply.github.com> Date: Thu, 28 Nov 2024 11:15:24 +0530 Subject: [PATCH] fix: Super user cache eviction when user is added via env variable (#37785) --- .../appsmith/server/migrations/DatabaseChangelog2.java | 5 ++--- .../server/migrations/MigrationHelperMethods.java | 8 ++++---- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/migrations/DatabaseChangelog2.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/migrations/DatabaseChangelog2.java index 24acdcdda6..ba30d97b56 100644 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/migrations/DatabaseChangelog2.java +++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/migrations/DatabaseChangelog2.java @@ -28,7 +28,6 @@ import com.appsmith.server.dtos.Permission; import com.appsmith.server.helpers.TextUtils; import com.appsmith.server.migrations.solutions.UpdateSuperUserMigrationHelper; import com.appsmith.server.repositories.CacheableRepositoryHelper; -import com.appsmith.server.repositories.PermissionGroupRepository; import com.appsmith.server.solutions.PolicySolution; import com.github.cloudyrock.mongock.ChangeLog; import com.github.cloudyrock.mongock.ChangeSet; @@ -451,7 +450,7 @@ public class DatabaseChangelog2 { @ChangeSet(order = "10000", id = "update-super-users", author = "", runAlways = true) public void updateSuperUsers( MongoTemplate mongoTemplate, - PermissionGroupRepository permissionGroupRepository, + CacheableRepositoryHelper cacheableRepositoryHelper, PolicySolution policySolution, PolicyGenerator policyGenerator) { // Read the admin emails from the environment and update the super users accordingly @@ -497,7 +496,7 @@ public class DatabaseChangelog2 { Set oldSuperUsers = instanceAdminPG.getAssignedToUserIds(); Set updatedUserIds = findSymmetricDiff(oldSuperUsers, userIds); - evictPermissionCacheForUsers(updatedUserIds, mongoTemplate, permissionGroupRepository); + evictPermissionCacheForUsers(updatedUserIds, mongoTemplate, cacheableRepositoryHelper); Update update = new Update().set(PermissionGroup.Fields.assignedToUserIds, userIds); mongoTemplate.updateFirst(permissionGroupQuery, update, PermissionGroup.class); diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/migrations/MigrationHelperMethods.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/migrations/MigrationHelperMethods.java index 51abd5c67c..277a3ac576 100644 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/migrations/MigrationHelperMethods.java +++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/migrations/MigrationHelperMethods.java @@ -21,7 +21,7 @@ import com.appsmith.server.dtos.ApplicationJson; import com.appsmith.server.exceptions.AppsmithError; import com.appsmith.server.exceptions.AppsmithException; import com.appsmith.server.helpers.CollectionUtils; -import com.appsmith.server.repositories.PermissionGroupRepository; +import com.appsmith.server.repositories.CacheableRepositoryHelper; import com.fasterxml.jackson.databind.ObjectMapper; import net.minidev.json.JSONObject; import org.apache.commons.lang.StringUtils; @@ -211,7 +211,7 @@ public class MigrationHelperMethods { } public static void evictPermissionCacheForUsers( - Set userIds, MongoTemplate mongoTemplate, PermissionGroupRepository permissionGroupRepository) { + Set userIds, MongoTemplate mongoTemplate, CacheableRepositoryHelper cacheableRepositoryHelper) { if (userIds == null || userIds.isEmpty()) { // Nothing to do here. @@ -223,8 +223,8 @@ public class MigrationHelperMethods { User user = mongoTemplate.findOne(query, User.class); if (user != null) { // blocking call for cache eviction to ensure its subscribed immediately before proceeding further. - permissionGroupRepository - .evictAllPermissionGroupCachesForUser(user.getEmail(), user.getTenantId()) + cacheableRepositoryHelper + .evictPermissionGroupsUser(user.getEmail(), user.getTenantId()) .block(); } });