[rhq] modules/core modules/enterprise
Jay Shaughnessy
jshaughn at fedoraproject.org
Tue Aug 21 20:31:09 UTC 2012
modules/core/client-api/src/main/java/org/rhq/core/clientapi/server/drift/DriftServerService.java | 5 ++
modules/core/plugin-container/src/main/java/org/rhq/core/pc/drift/sync/DriftSyncManager.java | 12 +++---
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/DriftServerServiceImpl.java | 20 +++++-----
3 files changed, 22 insertions(+), 15 deletions(-)
New commits:
commit 5ffd6e1eb155bf0208690cce526fb18b832ba344
Author: Jay Shaughnessy <jshaughn at redhat.com>
Date: Tue Aug 21 16:04:42 2012 -0400
Make drift def sync more efficient, and possibly avoid an NPE that was
seen intermittently.
- DriftServerServiceImpl.getDriftDefinitions() now only generates
Map entries for resources with drift definitions, avoiding unnecessary
list creation and subsequent processing.
- Added jdoc to that effect
- Changed private DriftSyncManager.syncConfigs() to syncDriftDefinitions
for clarity.
diff --git a/modules/core/client-api/src/main/java/org/rhq/core/clientapi/server/drift/DriftServerService.java b/modules/core/client-api/src/main/java/org/rhq/core/clientapi/server/drift/DriftServerService.java
index a6df831..1b2d048 100644
--- a/modules/core/client-api/src/main/java/org/rhq/core/clientapi/server/drift/DriftServerService.java
+++ b/modules/core/client-api/src/main/java/org/rhq/core/clientapi/server/drift/DriftServerService.java
@@ -121,6 +121,11 @@ public interface DriftServerService {
@Asynchronous
void repeatChangeSet(int resourceId, String driftDefName, int version);
+ /**
+ * @param resourceIds The resourceIds for which to fetch definitions.
+ * @return A Map from resourceId to its list of DriftDefinitions. Resources without DriftDefinitions are not included
+ * in the Map.
+ */
Map<Integer, List<DriftDefinition>> getDriftDefinitions(Set<Integer> resourceIds);
DriftSnapshot getCurrentSnapshot(int driftDefinitionId);
diff --git a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/drift/sync/DriftSyncManager.java b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/drift/sync/DriftSyncManager.java
index b24849b..5f4ec36 100644
--- a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/drift/sync/DriftSyncManager.java
+++ b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/drift/sync/DriftSyncManager.java
@@ -111,11 +111,11 @@ public class DriftSyncManager {
synchronizer = synchronizerFactory.getRuntimeSynchronizer(driftMgr);
}
- syncConfigs(synchronizer, resourceIds);
+ syncDriftDefinitions(synchronizer, resourceIds);
syncContent(synchronizer);
}
- private void syncConfigs(DriftSynchronizer synchronizer, Set<Integer> resourceIds) {
+ private void syncDriftDefinitions(DriftSynchronizer synchronizer, Set<Integer> resourceIds) {
log.info("Starting server sync for drift definitions...");
long startTime = System.currentTimeMillis();
@@ -127,15 +127,15 @@ public class DriftSyncManager {
int totalAdded = 0;
for (Integer resourceId : driftDefs.keySet()) {
- Set<DriftDefinition> resourceConfigsOnServer = new TreeSet<DriftDefinition>(comparator);
- resourceConfigsOnServer.addAll(driftDefs.get(resourceId));
+ Set<DriftDefinition> driftDefinitionsOnServer = new TreeSet<DriftDefinition>(comparator);
+ driftDefinitionsOnServer.addAll(driftDefs.get(resourceId));
List<DriftDefinition> deletedDefs = synchronizer.getDeletedDefinitions(resourceId,
- resourceConfigsOnServer);
+ driftDefinitionsOnServer);
totalDeleted += deletedDefs.size();
synchronizer.purgeFromLocalInventory(resourceId, deletedDefs);
- List<DriftDefinition> addedDefs = synchronizer.getAddedDefinitions(resourceId, resourceConfigsOnServer);
+ List<DriftDefinition> addedDefs = synchronizer.getAddedDefinitions(resourceId, driftDefinitionsOnServer);
totalAdded += addedDefs.size();
synchronizer.addToLocalInventory(resourceId, addedDefs);
}
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/DriftServerServiceImpl.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/DriftServerServiceImpl.java
index b22caa7..b206b54 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/DriftServerServiceImpl.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/DriftServerServiceImpl.java
@@ -84,17 +84,19 @@ public class DriftServerServiceImpl implements DriftServerService {
Subject overlord = getSubjectManager().getOverlord();
PageList<DriftDefinition> definitions = getDriftManager().findDriftDefinitionsByCriteria(overlord, criteria);
- Map<Integer, List<DriftDefinition>> map = new HashMap<Integer, List<DriftDefinition>>();
- for (Integer resourceId : resourceIds) {
- map.put(resourceId, new ArrayList<DriftDefinition>());
- }
- for (DriftDefinition c : definitions) {
- List<DriftDefinition> list = map.get(c.getResource().getId());
- list.add(c);
- map.put(c.getResource().getId(), list);
+ Map<Integer, List<DriftDefinition>> result = new HashMap<Integer, List<DriftDefinition>>();
+
+ for (DriftDefinition driftDef : definitions) {
+ Integer resourceId = driftDef.getResource().getId();
+ List<DriftDefinition> list = result.get(resourceId);
+ if (null == list) {
+ list = new ArrayList<DriftDefinition>();
+ result.put(resourceId, list);
+ }
+ list.add(driftDef);
}
- return map;
+ return result;
}
@Override
More information about the rhq-commits
mailing list