From 3c212290916c8be767c094479d0a2ba6566001b6 Mon Sep 17 00:00:00 2001 From: Fabricio Duarte Date: Thu, 6 Aug 2026 09:07:13 -0300 Subject: [PATCH] Add back missing changes from #10008 --- .../META-INF/db/schema-42210to42300-cleanup.sql | 3 +++ .../main/java/com/cloud/user/AccountManagerImpl.java | 11 +++++++++-- .../java/com/cloud/user/AccountManagerImplTest.java | 12 ++++++++++++ 3 files changed, 24 insertions(+), 2 deletions(-) diff --git a/engine/schema/src/main/resources/META-INF/db/schema-42210to42300-cleanup.sql b/engine/schema/src/main/resources/META-INF/db/schema-42210to42300-cleanup.sql index e2b066af7800..d984288edf5a 100644 --- a/engine/schema/src/main/resources/META-INF/db/schema-42210to42300-cleanup.sql +++ b/engine/schema/src/main/resources/META-INF/db/schema-42210to42300-cleanup.sql @@ -18,3 +18,6 @@ --; -- Schema upgrade cleanup from 4.22.1.0 to 4.23.0.0 --; + +-- Delete `project_account` entries for users that were removed +DELETE FROM `cloud`.`project_account` WHERE `user_id` IN (SELECT `id` FROM `cloud`.`user` WHERE `removed`); diff --git a/server/src/main/java/com/cloud/user/AccountManagerImpl.java b/server/src/main/java/com/cloud/user/AccountManagerImpl.java index db9c1d1dafde..189df97b15f1 100644 --- a/server/src/main/java/com/cloud/user/AccountManagerImpl.java +++ b/server/src/main/java/com/cloud/user/AccountManagerImpl.java @@ -2521,9 +2521,16 @@ public boolean deleteUser(DeleteUserCmd deleteUserCmd) { checkAccountAndAccess(user, account); verifyCallerPrivilegeForUserOrAccountOperations(user); - removeUserApiKeys(id); + return Transaction.execute((TransactionCallback) status -> deleteAndCleanupUser(user)); + } + + protected boolean deleteAndCleanupUser(User user) { + long userId = user.getId(); + + removeUserApiKeys(userId); + _projectAccountDao.removeUserFromProjects(userId); - return _userDao.remove(id); + return _userDao.remove(userId); } @Override diff --git a/server/src/test/java/com/cloud/user/AccountManagerImplTest.java b/server/src/test/java/com/cloud/user/AccountManagerImplTest.java index 61cdde697dd0..dfdb712a5b2d 100644 --- a/server/src/test/java/com/cloud/user/AccountManagerImplTest.java +++ b/server/src/test/java/com/cloud/user/AccountManagerImplTest.java @@ -2131,4 +2131,16 @@ public void testCreateUserSuccess() { ); Assert.assertNotNull(userResultVO); } + + @Test + public void deleteAndCleanupUserTestUserCleanup() { + long userId = userVoMock.getId(); + Mockito.doNothing().when(accountManagerImpl).removeUserApiKeys(userId); + Mockito.doNothing().when(_projectAccountDao).removeUserFromProjects(userId); + + accountManagerImpl.deleteAndCleanupUser(userVoMock); + + Mockito.verify(accountManagerImpl).removeUserApiKeys(userId); + Mockito.verify(_projectAccountDao).removeUserFromProjects(userId); + } }