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