[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