Fixed cyclic renderer config update 38/40238/1
authorMartin Sunal <msunal@cisco.com>
Mon, 13 Jun 2016 13:38:53 +0000 (15:38 +0200)
committerMartin Sunal <msunal@cisco.com>
Mon, 13 Jun 2016 13:38:53 +0000 (15:38 +0200)
After renderer processes configuration and reports status
it trigger RendererManager which take this as change
which generates creating of new configuration for renderer.
So this cyclic behavior is fixed in this commit.

Change-Id: I086e6c63d1e8da34943807a940aafe644ad2ae59
Signed-off-by: Martin Sunal <msunal@cisco.com>
groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/renderer/RendererManager.java

index 9f79a90a65ac005cb25300e01e1c8f45aad6f8cc..793ad887ac498befd8e319620576fe6953e09f21 100644 (file)
@@ -141,15 +141,17 @@ public class RendererManager implements AutoCloseable {
     public synchronized void renderersUpdated(final Renderers renderersCont) {
         ImmutableMultimap<InstanceIdentifier<?>, RendererName> renderersByNode =
                 RendererUtils.resolveRenderersByNodes(renderersCont.getRenderer());
+        Map<InstanceIdentifier<?>, RendererName> oldRendererByNode = rendererByNode;
         rendererByNode = new HashMap<>();
         for (InstanceIdentifier<?> nodePath : renderersByNode.keySet()) {
             ImmutableCollection<RendererName> renderers = renderersByNode.get(nodePath);
             // only first renderer is used
             rendererByNode.put(nodePath, renderers.asList().get(0));
         }
-        if (processingRenderers.isEmpty()) {
+        if (!rendererByNode.equals(oldRendererByNode)) {
             changesWaitingToProcess = true;
-        } else {
+        }
+        if (!processingRenderers.isEmpty()) {
             LOG.debug("Waiting for renderers. Version {} needs to be processed by renderers: {}", version,
                     processingRenderers);
             ImmutableMap<RendererName, Renderer> rendererByName =