----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://reviews.apache.org/r/16746/ -----------------------------------------------------------
Review request for helix, Zhen Zhang and Kishore Gopalakrishna. Bugs: HELIX-281 Repository: helix-git Description ------- The key part of this is a new queue for callbacks. When a ClusterEvent is added, if an event with the same name already exists in the queue, it replaces that event. Otherwise, it is added to the tail of the queue. This prevents a large number of message events from starving other events. commit a0e0eff78ce56d28f436e943303220579897dc32 Author: Kanak Biscuitwala <[email protected]> Date: Wed Jan 8 17:18:35 2014 -0800 [HELIX-281] Prevent message callbacks from indefinitely starving other callbacks :100644 100644 9fef2da... b467bff... M helix-core/src/main/java/org/apache/helix/controller/GenericHelixController.java :000000 100644 0000000... 986437b... A helix-core/src/main/java/org/apache/helix/controller/stages/ClusterEventBlockingQueue.java :000000 100644 0000000... 2dba7b6... A helix-core/src/test/java/org/apache/helix/controller/stages/TestClusterEventBlockingQueue.java :100644 100644 30f5807... 67298b3... M helix-core/src/test/java/org/apache/helix/integration/TestSchedulerMessage.java Diffs ----- helix-core/src/main/java/org/apache/helix/controller/GenericHelixController.java 9fef2da helix-core/src/main/java/org/apache/helix/controller/stages/ClusterEventBlockingQueue.java PRE-CREATION helix-core/src/test/java/org/apache/helix/controller/stages/TestClusterEventBlockingQueue.java PRE-CREATION helix-core/src/test/java/org/apache/helix/integration/TestSchedulerMessage.java 30f5807 Diff: https://reviews.apache.org/r/16746/diff/ Testing ------- Ran this on a cluster with 100 resources, 100 partitions per resource, 100 nodes, FULL_AUTO. Took them all up and all down a few times, leading to a massive amount of entropy in the cluster. The controller was able to process all the callbacks in the expected order and outstanding callbacks were automatically coalesced. Existing tests pass locally, added unit tests for the queue. Thanks, Kanak Biscuitwala
