* Simpilified synchronization around the permit Set in Rebalancer * Introduced ReadWriteLock to guard rebalancer state in RedirectingStore, MetadataStore and Rebalancer
…tional in doFetch in Read-only store servlet
* Centralized rebalancer state in RebalanceState class * Using a Map instead of a List for rebalance steal info * Using a Set instead of Map<Integer,Boolean> for permits
* Since transfers of different stores may finish at different times, it's important to look at unbalancedStoreList and not just the partition ids when selecting the right steal info to use.
Removed un-needed CountDownLatch from RebalanceController. Increased default number of async operation scheduler threads to 6. Improvements to MetadataStore: * Corrected mutations of REBALANCE_STEAL_INFO * Improved synchronization (using a simple lock for now) * Corrected clean up behaviour.
- Refactored RebalancePartitionsInfo(String) to a factory method. - Support for serializing/deserializing lists of RebalancePartitionInfo from/to Json - Additional unit tests. - Storing StealInfo as a list inside MetadataStore. - Adjusted MetadaStoreTest to account for REBALANCE_STEAL_INFO storing a List. - Updating RedirectingStore to handle multiple donors per stealer.
1. RemoteTest adds the ability to specify interval as -1 to disable 2. Reduced (greatly) the runtime of the ThresholdFailureDetector test (80 sec -> 2.5) 3. Added @Test annotations to the AbstractByteArrayStoreTest and AbstractStoreTest so that the test methods would get picked up properly (they'd previously been ignored)