On 03/13/2013 05:33 PM, Johannes Renner wrote:
> attached is a patch that should take care that only kickstartable channels 
> are actually
> returned by the getKickstartableChannels() method in the ChannelFactory class.

Argh, this fixes ConcurrentModificationException, sorry!

-- 
SUSE LINUX Products GmbH, HRB 16746 (AG Nürnberg)
GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer
>From acaadc6ee2a54f2e803f33ff5d401559b2e35359 Mon Sep 17 00:00:00 2001
From: Johannes Renner <jren...@suse.de>
Date: Thu, 14 Mar 2013 17:52:15 +0100
Subject: [PATCH] Prevent from concurrent modification

---
 .../code/src/com/redhat/rhn/domain/channel/ChannelFactory.java |    8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/java/code/src/com/redhat/rhn/domain/channel/ChannelFactory.java b/java/code/src/com/redhat/rhn/domain/channel/ChannelFactory.java
index 5509f2b..f60cfb4 100644
--- a/java/code/src/com/redhat/rhn/domain/channel/ChannelFactory.java
+++ b/java/code/src/com/redhat/rhn/domain/channel/ChannelFactory.java
@@ -35,6 +35,7 @@ import org.hibernate.criterion.CriteriaSpecification;
 import org.hibernate.criterion.Projections;
 import org.hibernate.criterion.Restrictions;
 
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
@@ -631,6 +632,7 @@ public class ChannelFactory extends HibernateFactory {
      * @return List of Channel objects
      */
     public static List<Channel> getKickstartableChannels(Org org) {
+        List<Channel> ret = new ArrayList<Channel>();
         Map params = new HashMap();
         params.put("org_id", org.getId());
         List<Channel> channels = singleton.listObjectsByNamedQuery(
@@ -639,11 +641,11 @@ public class ChannelFactory extends HibernateFactory {
         for (Channel c : channels) {
             List packages = ChannelManager.listLatestPackagesEqual(c.getId(),
                     ConfigDefaults.DEFAULT_ANACONDA_PACKAGE_NAME);
-            if (packages.size() <= 0) {
-                channels.remove(c);
+            if (packages.size() > 0) {
+                ret.add(c);
             }
         }
-        return channels;
+        return ret;
     }
 
     /**
-- 
1.7.10.4

_______________________________________________
Spacewalk-devel mailing list
Spacewalk-devel@redhat.com
https://www.redhat.com/mailman/listinfo/spacewalk-devel

Reply via email to