2 commits - java/code java/spacewalk-java.spec rel-eng/packages

StephenHerr sherr at fedoraproject.org
Fri Jun 22 20:04:28 UTC 2012


 java/code/src/com/redhat/rhn/frontend/events/NewCloneErrataAction.java |   10 ++
 java/code/src/com/redhat/rhn/frontend/events/NewCloneErrataEvent.java  |   30 ++------
 java/code/src/com/redhat/rhn/frontend/xmlrpc/errata/ErrataHandler.java |   34 ++++++++--
 java/code/src/com/redhat/rhn/manager/errata/ErrataManager.java         |    8 +-
 java/spacewalk-java.spec                                               |    6 +
 rel-eng/packages/spacewalk-java                                        |    2 
 6 files changed, 58 insertions(+), 32 deletions(-)

New commits:
commit 78463ed559b0b10344d3981cc9158ba646bb30b9
Author: Stephen Herr <sherr at redhat.com>
Date:   Fri Jun 22 16:03:01 2012 -0400

    Automatic commit of package [spacewalk-java] release [1.8.94-1].

diff --git a/java/spacewalk-java.spec b/java/spacewalk-java.spec
index 991d45c..3b9d6bf 100644
--- a/java/spacewalk-java.spec
+++ b/java/spacewalk-java.spec
@@ -23,7 +23,7 @@ Name: spacewalk-java
 Summary: Spacewalk Java site packages
 Group: Applications/Internet
 License: GPLv2
-Version: 1.8.93
+Version: 1.8.94
 Release: 1%{?dist}
 URL:       https://fedorahosted.org/spacewalk
 Source0:   https://fedorahosted.org/releases/s/p/spacewalk/%{name}-%{version}.tar.gz 
@@ -615,6 +615,10 @@ fi
 %{jardir}/postgresql-jdbc.jar
 
 %changelog
+* Fri Jun 22 2012 Stephen Herr <sherr at redhat.com> 1.8.94-1
+- 829485 - fixed asynchronous errata cloning internal server errors
+- 829790 - handle spoiled browsers separatelly
+
 * Fri Jun 22 2012 Jan Pazdziora 1.8.93-1
 - Fixing checkstyle.
 
diff --git a/rel-eng/packages/spacewalk-java b/rel-eng/packages/spacewalk-java
index 47c5ed4..afc5726 100644
--- a/rel-eng/packages/spacewalk-java
+++ b/rel-eng/packages/spacewalk-java
@@ -1 +1 @@
-1.8.93-1 java/
+1.8.94-1 java/


commit 32b55cbe8222607a9c8f59d109f3f90ed96e1fee
Author: Stephen Herr <sherr at redhat.com>
Date:   Fri Jun 22 15:31:48 2012 -0400

    829485 - fixed asynchronous errata cloning internal server errors

diff --git a/java/code/src/com/redhat/rhn/frontend/events/NewCloneErrataAction.java b/java/code/src/com/redhat/rhn/frontend/events/NewCloneErrataAction.java
index a5873e9..74a64a5 100644
--- a/java/code/src/com/redhat/rhn/frontend/events/NewCloneErrataAction.java
+++ b/java/code/src/com/redhat/rhn/frontend/events/NewCloneErrataAction.java
@@ -14,7 +14,12 @@
  */
 package com.redhat.rhn.frontend.events;
 
+import java.util.ArrayList;
+import java.util.List;
+
 import com.redhat.rhn.common.messaging.EventMessage;
+import com.redhat.rhn.domain.errata.Errata;
+import com.redhat.rhn.domain.errata.ErrataFactory;
 import com.redhat.rhn.manager.errata.ErrataManager;
 import org.apache.log4j.Logger;
 
@@ -33,7 +38,10 @@ extends AbstractDatabaseAction {
     @Override
     public void doExecute(EventMessage msgIn) {
         NewCloneErrataEvent msg = (NewCloneErrataEvent) msgIn;
-        ErrataManager.cloneErrataApi(msg.getChan(), msg.getHydratedErrata(),
+        Long eid = msg.getErrata();
+        List<Errata> errata = new ArrayList<Errata>();
+        errata.add(ErrataFactory.lookupById(eid));
+        ErrataManager.cloneErrataApi(msg.getChan(), errata,
                 msg.getUser(), msg.isInheritPackages());
     }
 }
diff --git a/java/code/src/com/redhat/rhn/frontend/events/NewCloneErrataEvent.java b/java/code/src/com/redhat/rhn/frontend/events/NewCloneErrataEvent.java
index 1dfb908..458d126 100644
--- a/java/code/src/com/redhat/rhn/frontend/events/NewCloneErrataEvent.java
+++ b/java/code/src/com/redhat/rhn/frontend/events/NewCloneErrataEvent.java
@@ -18,20 +18,17 @@ import com.redhat.rhn.common.hibernate.HibernateFactory;
 import com.redhat.rhn.common.messaging.EventDatabaseMessage;
 import com.redhat.rhn.domain.channel.Channel;
 import com.redhat.rhn.domain.channel.ChannelFactory;
-import com.redhat.rhn.domain.errata.Errata;
-import com.redhat.rhn.domain.errata.ErrataFactory;
 import com.redhat.rhn.domain.user.User;
 import com.redhat.rhn.domain.user.UserFactory;
 
 import org.hibernate.Transaction;
 
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-
 /**
  * NewCloneErrataAction - publish event to clone the errata into a channel.
  *
+ * I wanted this to contain a list of errata ids and do multiple
+ * clones per event, but I couldn't get it to recall the list of ids
+ * once the message got popped back off
  * @version $Rev$
  */
 public class NewCloneErrataEvent implements EventDatabaseMessage {
@@ -39,7 +36,7 @@ public class NewCloneErrataEvent implements EventDatabaseMessage {
 
 
     private Long chanId;
-    private Collection<Long> errata;
+    private Long errata;
     private final Transaction txn;
     private final Long userId;
     private boolean inheritPackages;
@@ -51,7 +48,7 @@ public class NewCloneErrataEvent implements EventDatabaseMessage {
      * @param userIn the user
      * @param inheritPackagesIn inheritPackages
      */
-    public NewCloneErrataEvent(Channel chanIn, Collection<Long> errataIn,
+    public NewCloneErrataEvent(Channel chanIn, Long errataIn,
             User userIn, boolean inheritPackagesIn) {
         chanId = chanIn.getId();
         errata = errataIn;
@@ -63,6 +60,7 @@ public class NewCloneErrataEvent implements EventDatabaseMessage {
     /**
      * {@inheritDoc}
      */
+    @Override
     public String toText() {
         // really a noop
         return "";
@@ -72,6 +70,7 @@ public class NewCloneErrataEvent implements EventDatabaseMessage {
      *
      * {@inheritDoc}
      */
+    @Override
     public Transaction getTransaction() {
         return txn;
     }
@@ -105,22 +104,11 @@ public class NewCloneErrataEvent implements EventDatabaseMessage {
         this.chanId = chanIn.getId();
     }
 
-    /**
-     * @return A List of Errata objects
-     */
-    public List<Errata> getHydratedErrata() {
-        List<Errata> errataList = new ArrayList<Errata>();
-        for (Long erratum : errata) {
-            errataList.add(ErrataFactory.lookupById(erratum));
-        }
-        return errataList;
-    }
-
 
     /**
      * @return Returns the errata.
      */
-    public Collection<Long> getErrata() {
+    public Long getErrata() {
         return errata;
     }
 
@@ -128,7 +116,7 @@ public class NewCloneErrataEvent implements EventDatabaseMessage {
     /**
      * @param errataIn The errata to set.
      */
-    public void setErrata(Collection<Long> errataIn) {
+    public void setErrata(Long errataIn) {
         this.errata = errataIn;
     }
 
diff --git a/java/code/src/com/redhat/rhn/frontend/xmlrpc/errata/ErrataHandler.java b/java/code/src/com/redhat/rhn/frontend/xmlrpc/errata/ErrataHandler.java
index bf29289..1ed18fb 100644
--- a/java/code/src/com/redhat/rhn/frontend/xmlrpc/errata/ErrataHandler.java
+++ b/java/code/src/com/redhat/rhn/frontend/xmlrpc/errata/ErrataHandler.java
@@ -864,10 +864,16 @@ public class ErrataHandler extends BaseHandler {
      * @return Returns an array of Errata objects, which get serialized into XMLRPC
      *
      * @xmlrpc.doc Clone a list of errata into the specified channel.
+     * 
+     * Warning: Issuing a synchronous clone request for a channel that has asynchronous
+     * errata cloning jobs pending can result in a database deadlock! Adding more
+     * asynchronous jobs is safe. If deadlock occurs one must re-schedule both the
+     * synchronous and asynchronous jobs to ensure all errata are cloned.
+     * 
      * @xmlrpc.param #session_key()
      * @xmlrpc.param #param("string", "channel_label")
      * @xmlrpc.param
-     *      #array_single("string", " advisory - The advisory name of the errata to clone.")
+     *     #array_single("string", " advisory - The advisory name of the errata to clone.")
      * @xmlrpc.returntype
      *          #array()
      *              $ErrataSerializer
@@ -889,10 +895,16 @@ public class ErrataHandler extends BaseHandler {
      * @return 1 on success, exception thrown otherwise.
      *
      * @xmlrpc.doc Asynchronously clone a list of errata into the specified channel.
+     * 
+     * Warning: Issuing a synchronous clone request for a channel that has asynchronous
+     * errata cloning jobs pending can result in a database deadlock! Adding more
+     * asynchronous jobs is safe. If deadlock occurs one must re-schedule both the
+     * synchronous and asynchronous jobs to ensure all errata are cloned.
+     * 
      * @xmlrpc.param #session_key()
      * @xmlrpc.param #param("string", "channel_label")
      * @xmlrpc.param
-     *      #array_single("string", " advisory - The advisory name of the errata to clone.")
+     *     #array_single("string", " advisory - The advisory name of the errata to clone.")
      * @xmlrpc.returntype
      *          #return_int_success()
      */
@@ -973,11 +985,17 @@ public class ErrataHandler extends BaseHandler {
      * @return Returns an array of Errata objects, which get serialized into XMLRPC
      *
      * @xmlrpc.doc Clones a list of errata into a specified cloned channel
-     * according the original erratas
+     * according the original erratas.
+     * 
+     * Warning: Issuing a synchronous cloneAsOriginal request for a channel that has
+     * asynchronous errata cloning jobs pending can result in a database deadlock! Adding
+     * more asynchronous jobs is safe. If deadlock occurs one must re-schedule both the
+     * synchronous and asynchronous jobs to ensure all errata are cloned.
+     * 
      * @xmlrpc.param #session_key()
      * @xmlrpc.param #param("string", "channel_label")
      * @xmlrpc.param
-     *      #array_single("string", " advisory - The advisory name of the errata to clone.")
+     *     #array_single("string", " advisory - The advisory name of the errata to clone.")
      * @xmlrpc.returntype
      *          #array()
      *              $ErrataSerializer
@@ -1001,10 +1019,16 @@ public class ErrataHandler extends BaseHandler {
      *
      * @xmlrpc.doc Asynchronously clones a list of errata into a specified cloned channel
      * according the original erratas
+     * 
+     * Warning: Issuing a synchronous cloneAsOriginal request for a channel that has
+     * asynchronous errata cloning jobs pending can result in a database deadlock! Adding
+     * more asynchronous jobs is safe. If deadlock occurs one must re-schedule both the
+     * synchronous and asynchronous jobs to ensure all errata are cloned.
+     * 
      * @xmlrpc.param #session_key()
      * @xmlrpc.param #param("string", "channel_label")
      * @xmlrpc.param
-     *      #array_single("string", " advisory - The advisory name of the errata to clone.")
+     *     #array_single("string", " advisory - The advisory name of the errata to clone.")
      * @xmlrpc.returntype
      *          #return_int_success()
      */
diff --git a/java/code/src/com/redhat/rhn/manager/errata/ErrataManager.java b/java/code/src/com/redhat/rhn/manager/errata/ErrataManager.java
index 622f432..3e3f5c8 100644
--- a/java/code/src/com/redhat/rhn/manager/errata/ErrataManager.java
+++ b/java/code/src/com/redhat/rhn/manager/errata/ErrataManager.java
@@ -1271,9 +1271,11 @@ public class ErrataManager extends BaseManager {
     public static void cloneErrataApiAsync(Channel chan, List<Long> errata,
             User user, boolean inheritPackages) {
         Logger.getLogger(ErrataManager.class).debug("Cloning");
-        NewCloneErrataEvent neve = new NewCloneErrataEvent(chan, errata, user,
-                inheritPackages);
-        MessageQueue.publish(neve);
+        for (long eid : errata) {
+            NewCloneErrataEvent neve = new NewCloneErrataEvent(chan, eid, user,
+                    inheritPackages);
+            MessageQueue.publish(neve);
+        }
     }
 
 




More information about the spacewalk-commits mailing list