From 4284ac3b0787d9f01f4e0956f90cdeddddd59901 Mon Sep 17 00:00:00 2001 From: Chinmay Soni Date: Tue, 14 Jul 2026 18:06:19 +0530 Subject: [PATCH 1/2] fix(server): prevent boolean overwrite in template cleanup during account removal (#13612) --- .../src/main/java/com/cloud/user/AccountManagerImpl.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/server/src/main/java/com/cloud/user/AccountManagerImpl.java b/server/src/main/java/com/cloud/user/AccountManagerImpl.java index db9c1d1dafde..fddce86110f0 100644 --- a/server/src/main/java/com/cloud/user/AccountManagerImpl.java +++ b/server/src/main/java/com/cloud/user/AccountManagerImpl.java @@ -1016,15 +1016,20 @@ protected boolean cleanupAccount(AccountVO account, long callerUserId, Account c logger.debug("Successfully deleted snapshots directories for all volumes under account {} across all zones", account); } + // clean up templates List userTemplates = _templateDao.listByAccountId(accountId); boolean allTemplatesDeleted = true; for (VMTemplateVO template : userTemplates) { if (template.getRemoved() == null) { try { - allTemplatesDeleted = _tmpltMgr.delete(callerUserId, template.getId(), null); + // Fix 1: Prevent boolean overwriting by checking failure explicitly + if (!_tmpltMgr.delete(callerUserId, template.getId(), null)) { + logger.warn("TemplateManager returned false when deleting template {} for account {}", template, account); + allTemplatesDeleted = false; + } } catch (Exception e) { - logger.warn("Failed to delete template {} while removing account {} due to: ", template, account, e); + logger.warn("Failed to delete template {} while removing account {} due to exception: ", template, account, e); allTemplatesDeleted = false; } } From e7c4135ba19b5cca395f02bed586dd5258eb7059 Mon Sep 17 00:00:00 2001 From: Chinmay Soni Date: Tue, 14 Jul 2026 13:11:13 +0000 Subject: [PATCH 2/2] fix(server): prevent boolean overwrite in template cleanup during account removal (#13612) --- server/src/main/java/com/cloud/user/AccountManagerImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/src/main/java/com/cloud/user/AccountManagerImpl.java b/server/src/main/java/com/cloud/user/AccountManagerImpl.java index fddce86110f0..4ec6f63fe95e 100644 --- a/server/src/main/java/com/cloud/user/AccountManagerImpl.java +++ b/server/src/main/java/com/cloud/user/AccountManagerImpl.java @@ -1016,7 +1016,7 @@ protected boolean cleanupAccount(AccountVO account, long callerUserId, Account c logger.debug("Successfully deleted snapshots directories for all volumes under account {} across all zones", account); } - + // clean up templates List userTemplates = _templateDao.listByAccountId(accountId); boolean allTemplatesDeleted = true;