Anton, Very good point. Valentin is already doing per-partition topic in his work for Continuous Queries: https://issues.apache.org/jira/browse/IGNITE-104
Perhaps it makes sense for both of you to sync up. Also, as a side note, whenever starting a dev list discussion about a ticket, it always helps to include a link to the dev list thread into Jira (I already did it for IGNITE-1093). D. On Thu, Jul 30, 2015 at 11:31 AM, Anton Vinogradov <avinogra...@gridgain.com > wrote: > Hello, > I think that speed of rebalancing can be increased by parallel handling > of supply messages. > Main Idea is to use per-partition topics. > > At the start of DemandPool we can create topics for every partition and > handle each partition's supply messages at separated listener. In this case > only one thread will request lock for partition it have to relocate. > > Also we can do the same at SupplyPool, and make supply messages in > parallel way. > > Amount of simultaneous messages should be limited to prevent overloading. > Current idea is to request N partitions at start and request one next > partition when one of prevous relocated. > > Per-partition listeners can be created this way: > for (int p = 0; p <= maxP; p++) { > cctx.io().addOrderedHandler(topic(p), new CI2<UUID, > GridDhtPartitionSupplyMessage>() { > @Override public void apply(UUID nodeId, > GridDhtPartitionSupplyMessage msg) { > handleSupplyMessage(new SupplyMessage(nodeId, msg)); > } > }); > } > > Thoughts? >