The way this works is when a new entry retriever is acquired it first calculates the remote node that has the most segments and sends a request to it (this is done asynchronously). Also another thread is spawned off that processes the local data asynchronously. When either is done (remote sends response) then it will process the entries found and complete all segments that were marked as completed. If it is a remote invocation then it will send a new remote request to the node that now has the most remaining segments. If it is local it will complete those segments and stop running, unless a rehash has caused it to regain new local segments. If a rehash occurs during a remote node processing then those segments will automatically marked as suspect to not complete them.
Values retrieved for suspect segments are sent to the iterator and it is noted that they were raised. When these segments are requested again the noted keys are sent along to reduce value payload size.
@author wburns @since 7.0
|
|