ONOS-4858 Resubmit pending intents with same timestamp

This will avoid needless recomputation if the intent processing is delayed.

Change-Id: I851c4ce65271a250da89f919886a3f26a774d20c
diff --git a/core/store/dist/src/main/java/org/onosproject/store/intent/impl/GossipIntentStore.java b/core/store/dist/src/main/java/org/onosproject/store/intent/impl/GossipIntentStore.java
index 2eb1d2e..c52b35e 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/intent/impl/GossipIntentStore.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/intent/impl/GossipIntentStore.java
@@ -38,6 +38,7 @@
 import org.onosproject.net.intent.IntentStoreDelegate;
 import org.onosproject.net.intent.Key;
 import org.onosproject.store.AbstractStore;
+import org.onosproject.store.Timestamp;
 import org.onosproject.store.serializers.KryoNamespaces;
 import org.onosproject.store.service.EventuallyConsistentMap;
 import org.onosproject.store.service.EventuallyConsistentMapEvent;
@@ -272,13 +273,15 @@
     public void addPending(IntentData data) {
         checkNotNull(data);
 
-        if (data.version() == null) {
-            pendingMap.put(data.key(), new IntentData(data.intent(), data.state(),
-                                                      new WallClockTimestamp(), clusterService.getLocalNode().id()));
-        } else {
-            pendingMap.put(data.key(), new IntentData(data.intent(), data.state(),
-                                                      data.version(), clusterService.getLocalNode().id()));
-        }
+        Timestamp version = data.version() != null ? data.version() : new WallClockTimestamp();
+        pendingMap.compute(data.key(), (key, existingValue) -> {
+            if (existingValue == null || existingValue.version().isOlderThan(version)) {
+                return new IntentData(data.intent(), data.state(),
+                                      version, clusterService.getLocalNode().id());
+            } else {
+                return existingValue;
+            }
+        });
     }
 
     @Override