diff --git a/enterprise-module/src/main/java/com/inteligr8/alfresco/asie/enterprise/service/ShardDiscoveryService.java b/enterprise-module/src/main/java/com/inteligr8/alfresco/asie/enterprise/service/ShardDiscoveryService.java index cc0bd7e..60eeff4 100644 --- a/enterprise-module/src/main/java/com/inteligr8/alfresco/asie/enterprise/service/ShardDiscoveryService.java +++ b/enterprise-module/src/main/java/com/inteligr8/alfresco/asie/enterprise/service/ShardDiscoveryService.java @@ -264,7 +264,7 @@ public class ShardDiscoveryService implements com.inteligr8.alfresco.asie.spi.Sh ShardInstanceState nodeShardState = ShardInstanceState.from(shardState); Pair pair = new Pair<>(node, nodeShardState); - if (comparator.compare(pair, shardNodeStates.get(shardId)) < 0) + if (!shardNodeStates.containsKey(shardId) || comparator.compare(pair, shardNodeStates.get(shardId)) < 0) shardNodeStates.put(shardId, pair); } } diff --git a/shared/src/main/java/com/inteligr8/alfresco/asie/spi/ShardDiscoveryService.java b/shared/src/main/java/com/inteligr8/alfresco/asie/spi/ShardDiscoveryService.java index e947a15..284a3af 100644 --- a/shared/src/main/java/com/inteligr8/alfresco/asie/spi/ShardDiscoveryService.java +++ b/shared/src/main/java/com/inteligr8/alfresco/asie/spi/ShardDiscoveryService.java @@ -125,7 +125,9 @@ public interface ShardDiscoveryService { public class ShardedNodeShardStateComparator implements Comparator> { @Override public int compare(Pair p1, Pair p2) { - return - Long.compare(p1.getSecond().getLastIndexedTxId(), p2.getSecond().getLastIndexedTxId()); + if (p1 == null) return 1; + else if (p2 == null) return -1; + else return - Long.compare(p1.getSecond().getLastIndexedTxId(), p2.getSecond().getLastIndexedTxId()); } }