modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/bundle/BundleManagerBean.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-)
New commits: commit 6989c4226703feb73454442a9f19e0febce35056 Author: Jay Shaughnessy jshaughn@redhat.com Date: Wed Aug 21 11:36:12 2013 -0400
Fix issues with ConcurrentModificationException when deleting bundles assigned to, or unassigning, multiple bundle groups.
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/bundle/BundleManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/bundle/BundleManagerBean.java index 386b4c3..1124564 100644 --- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/bundle/BundleManagerBean.java +++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/bundle/BundleManagerBean.java @@ -1883,8 +1883,10 @@ public class BundleManagerBean implements BundleManagerLocal, BundleManagerRemot entityManager.flush(); }
- // remove bundle from relevant any assigned bundle groups - for (BundleGroup bg : bundle.getBundleGroups()) { + // remove bundle from any assigned bundle groups + // wrap in new HashSet to avoid ConcurrentModificationExceptions. + Set<BundleGroup> BundleGroupsToRemove = new HashSet<BundleGroup>(bundle.getBundleGroups()); + for (BundleGroup bg : BundleGroupsToRemove) { bg.removeBundle(bundle); }
@@ -2077,7 +2079,9 @@ public class BundleManagerBean implements BundleManagerLocal, BundleManagerRemot }
// unassign any bundles assigned to the bundle group - for (Bundle b : bundleGroup.getBundles()) { + // wrap in new HashSet to avoid ConcurrentModificationExceptions. + Set<Bundle> bundlesToRemove = new HashSet<Bundle>(bundleGroup.getBundles()); + for (Bundle b : bundlesToRemove) { bundleGroup.removeBundle(b); }
rhq-commits@lists.fedorahosted.org