modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/configuration/job/AbstractGroupConfigurationUpdateJob.java
| 18 ++++++++--
1 file changed, 16 insertions(+), 2 deletions(-)
New commits:
commit bfd6f7dbff8de49c9ad47712499f106945002127
Merge: 14cad58... eb5d619...
Author: Jay Shaughnessy <jshaughn(a)redhat.com>
Date: Fri Jun 25 15:47:19 2010 -0400
Merge branch 'release-3.0.0' into release-3.0.0-jay
commit 14cad58515eb7b4787e607df428d01702f31468c
Author: Jay Shaughnessy <jshaughn(a)redhat.com>
Date: Fri Jun 25 15:46:21 2010 -0400
[BZ 600543] An interim solution that hopefully will bridge the gap until we
impl BZ 608135. Try to ensure that all plugin config updates in a group
update get a chance to complete (barring a server loss).
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/configuration/job/AbstractGroupConfigurationUpdateJob.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/configuration/job/AbstractGroupConfigurationUpdateJob.java
index 2efe429..7b92b40 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/configuration/job/AbstractGroupConfigurationUpdateJob.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/configuration/job/AbstractGroupConfigurationUpdateJob.java
@@ -82,7 +82,15 @@ public abstract class AbstractGroupConfigurationUpdateJob implements
Job {
}
for (Integer childUpdateId : pagedChildUpdateIds) {
- executeConfigurationUpdate(configurationManager, childUpdateId,
subject);
+ // failing one update request is not reason to fail all of the
remaining updates
+ // so, wrap in a try catch and gather up the errors to subsequently
fail the group update. This
+ // will especially benefit group plugin config, which currently
executes synchronously.
+ try {
+ executeConfigurationUpdate(configurationManager, childUpdateId,
subject);
+ } catch (Exception e) {
+ errorMessages = appendErrorMessages(errorMessages, "Failed
Member Update Id=" + childUpdateId,
+ e.toString());
+ }
}
rowsProcessed += pagedChildUpdateIds.size();
@@ -93,12 +101,18 @@ public abstract class AbstractGroupConfigurationUpdateJob implements
Job {
pc.setPageNumber(pc.getPageNumber() + 1);
}
} catch (Exception e) {
- errorMessages = ThrowableUtil.getAllMessages(e);
+ errorMessages = appendErrorMessages(errorMessages, "Failed Group Update
Id=" + groupConfigurationUpdateId,
+ ThrowableUtil.getAllMessages(e));
} finally {
completeGroupConfigurationUpdate(configurationManager,
groupConfigurationUpdateId, errorMessages);
}
}
+ private String appendErrorMessages(String currentMessages, String header, String
newMessages) {
+ currentMessages = (null == currentMessages) ? "" : currentMessages +
"\n";
+ return currentMessages.concat(" [" + header + ": " +
newMessages);
+ }
+
private static String createUniqueJobName(ResourceGroup group, Subject subject,
String jobNamePrefix) {
return createJobGroupName(group, jobNamePrefix) + "-" +
subject.getName().hashCode() + "-"
+ System.currentTimeMillis();
Show replies by date