Jonathan Hart
Committed by Brian O'Connor

Add a configuration option to vary how heavyweight anti-entropy is.

Change-Id: I57cea61182b3d19deb47608ffb7dd617529ae34c
...@@ -98,6 +98,7 @@ public class EventuallyConsistentMapImpl<K, V> ...@@ -98,6 +98,7 @@ public class EventuallyConsistentMapImpl<K, V>
98 // TODO: Make these anti-entropy params configurable 98 // TODO: Make these anti-entropy params configurable
99 private long initialDelaySec = 5; 99 private long initialDelaySec = 5;
100 private long periodSec = 5; 100 private long periodSec = 5;
101 + private boolean lightweightAntiEntropy = true;
101 102
102 /** 103 /**
103 * Creates a new eventually consistent map shared amongst multiple instances. 104 * Creates a new eventually consistent map shared amongst multiple instances.
...@@ -567,24 +568,18 @@ public class EventuallyConsistentMapImpl<K, V> ...@@ -567,24 +568,18 @@ public class EventuallyConsistentMapImpl<K, V>
567 568
568 private void handleAntiEntropyAdvertisement(AntiEntropyAdvertisement<K> ad) { 569 private void handleAntiEntropyAdvertisement(AntiEntropyAdvertisement<K> ad) {
569 List<EventuallyConsistentMapEvent<K, V>> externalEvents; 570 List<EventuallyConsistentMapEvent<K, V>> externalEvents;
570 - boolean sync = false;
571 571
572 externalEvents = antiEntropyCheckLocalItems(ad); 572 externalEvents = antiEntropyCheckLocalItems(ad);
573 573
574 antiEntropyCheckLocalRemoved(ad); 574 antiEntropyCheckLocalRemoved(ad);
575 575
576 + if (!lightweightAntiEntropy) {
576 externalEvents.addAll(antiEntropyCheckRemoteRemoved(ad)); 577 externalEvents.addAll(antiEntropyCheckRemoteRemoved(ad));
577 578
578 // if remote ad has something unknown, actively sync 579 // if remote ad has something unknown, actively sync
579 for (K key : ad.timestamps().keySet()) { 580 for (K key : ad.timestamps().keySet()) {
580 if (!items.containsKey(key)) { 581 if (!items.containsKey(key)) {
581 - sync = true;
582 - break;
583 - }
584 - }
585 -
586 // Send the advertisement back if this peer is out-of-sync 582 // Send the advertisement back if this peer is out-of-sync
587 - if (sync) {
588 final NodeId sender = ad.sender(); 583 final NodeId sender = ad.sender();
589 AntiEntropyAdvertisement<K> myAd = createAdvertisement(); 584 AntiEntropyAdvertisement<K> myAd = createAdvertisement();
590 try { 585 try {
...@@ -594,8 +589,11 @@ public class EventuallyConsistentMapImpl<K, V> ...@@ -594,8 +589,11 @@ public class EventuallyConsistentMapImpl<K, V>
594 "Failed to send reactive anti-entropy advertisement to {}", 589 "Failed to send reactive anti-entropy advertisement to {}",
595 sender); 590 sender);
596 } 591 }
597 - }
598 592
593 + break;
594 + }
595 + }
596 + }
599 externalEvents.forEach(this::notifyListeners); 597 externalEvents.forEach(this::notifyListeners);
600 } 598 }
601 599
......