Improve global config application 33/82233/1
authorRobert Varga <robert.varga@pantheon.tech>
Tue, 21 May 2019 11:37:51 +0000 (13:37 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Fri, 24 May 2019 12:10:11 +0000 (14:10 +0200)
Rather than iterating through all reported changes and publishing
configuration for each of them, acquire the last component and
publish only that.

This leads to faster DTCL (as not all roots need to be acquired)
as well as better atomicity, as readers do not observe intermediate
state if there are multiple changes reported.

Change-Id: I5805566291ea6ebdd6a6c49594fded5aa4243bcb
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
(cherry picked from commit 3c9bfd451c6b862079a1eb5bb31ec98150b1d18f)

netconf/callhome-provider/src/main/java/org/opendaylight/netconf/callhome/mount/CallHomeAuthProviderImpl.java

index 840dca1ffdee9baea59490135af263efb92a3541..9a345b02f3fe1e39ce8e1980fe0aa8f8484291a2 100644 (file)
@@ -7,6 +7,7 @@
  */
 package org.opendaylight.netconf.callhome.mount;
 
+import com.google.common.collect.Iterables;
 import com.google.common.net.InetAddresses;
 import java.io.IOException;
 import java.net.InetSocketAddress;
@@ -239,9 +240,9 @@ public class CallHomeAuthProviderImpl implements CallHomeAuthorizationProvider,
         private volatile Global current = null;
 
         @Override
-        public void onDataTreeChanged(@Nonnull final Collection<DataTreeModification<Global>> mods) {
-            for (DataTreeModification<Global> dataTreeModification : mods) {
-                current = dataTreeModification.getRootNode().getDataAfter();
+        public void onDataTreeChanged(final Collection<DataTreeModification<Global>> mods) {
+            if (!mods.isEmpty()) {
+                current = Iterables.getLast(mods).getRootNode().getDataAfter();
             }
         }