Repository: cloudstack Updated Branches: refs/heads/4.4 60563d395 -> 024efbfbd
CLOUDSTACK-6303 [Automation] [UI] Account creation hang in UI Changes: - Caused due to a MySql error during 'Project' account cleanup. The MySql error hits a deadlock bug in the MessageBus code that does not release the lock/decrement the counter Eventually all callers on the MessageBus end up waiting to enter - This fixes the account cleanup MySql error. Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/024efbfb Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/024efbfb Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/024efbfb Branch: refs/heads/4.4 Commit: 024efbfbd4da262a81a738be4a3f9452546d5a9c Parents: 60563d3 Author: Prachi Damle <pra...@cloud.com> Authored: Fri Mar 28 14:00:39 2014 -0700 Committer: Prachi Damle <pra...@cloud.com> Committed: Fri Mar 28 14:00:39 2014 -0700 ---------------------------------------------------------------------- server/src/com/cloud/user/AccountManagerImpl.java | 6 ++++-- .../src/org/apache/cloudstack/iam/server/IAMServiceImpl.java | 3 +++ 2 files changed, 7 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/024efbfb/server/src/com/cloud/user/AccountManagerImpl.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/user/AccountManagerImpl.java b/server/src/com/cloud/user/AccountManagerImpl.java index f0d129a..2070ee6 100755 --- a/server/src/com/cloud/user/AccountManagerImpl.java +++ b/server/src/com/cloud/user/AccountManagerImpl.java @@ -660,8 +660,10 @@ public class AccountManagerImpl extends ManagerBase implements AccountManager, M // delete the account from project accounts _projectAccountDao.removeAccountFromProjects(accountId); - //delete the account from group - _messageBus.publish(_name, MESSAGE_REMOVE_ACCOUNT_EVENT, PublishScope.LOCAL, accountId); + if (account.getType() != Account.ACCOUNT_TYPE_PROJECT) { + // delete the account from group + _messageBus.publish(_name, MESSAGE_REMOVE_ACCOUNT_EVENT, PublishScope.LOCAL, accountId); + } // delete all vm groups belonging to accont List<InstanceGroupVO> groups = _vmGroupDao.listByAccountId(accountId); http://git-wip-us.apache.org/repos/asf/cloudstack/blob/024efbfb/services/iam/server/src/org/apache/cloudstack/iam/server/IAMServiceImpl.java ---------------------------------------------------------------------- diff --git a/services/iam/server/src/org/apache/cloudstack/iam/server/IAMServiceImpl.java b/services/iam/server/src/org/apache/cloudstack/iam/server/IAMServiceImpl.java index 097d84f..56c931a 100644 --- a/services/iam/server/src/org/apache/cloudstack/iam/server/IAMServiceImpl.java +++ b/services/iam/server/src/org/apache/cloudstack/iam/server/IAMServiceImpl.java @@ -147,6 +147,9 @@ public class IAMServiceImpl extends ManagerBase implements IAMService, Manager { List<Long> groupIds = _aclGroupAccountMapDao.customSearch(groupSc, null); + if (groupIds == null || groupIds.isEmpty()) { + return new ArrayList<IAMGroup>(); + } SearchBuilder<IAMGroupVO> sb = _aclGroupDao.createSearchBuilder(); sb.and("ids", sb.entity().getId(), Op.IN); SearchCriteria<IAMGroupVO> sc = sb.create();