Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
ISPN-902, ISPN-493, ISPN-914 combined into one. Details:
* Change the DistSyncTimeout default from 1 minute to 4 minutes * Update RehashControlCommand to contain 3 more phases, for draining and applying transaction logs from providers onto joiners * Add a RemoteTransactionLogDetails object to encapsulate a state map and incomplete transaction log * Add externalizer hooks for the above * Add a RemoteTransactionLog facade around a TransactionLog, to allow joiners to control transaction log draining on a provider in an easy manner. The RemoteTransactionLog just issues RehashControlCommands, but presents this to the join task in a more readable manner. * Clean up ConsistentHash implementations (logging, redundant methods, etc) * Add Configuration and ComponentRegistry to CacheRpcCommands, so that InboundInvocationHandler wouldn't need to look these components up every time when retrying commands. * CommitCommand now has a return type that can request for a resend of the prepare if the global transaction is not recognised. This can happen if a node sees a commit but not the prepare, for example during a rehash when a prepared node fails and the commit is sent to a new data owner. * TransactionLogger now blocks and holds all new transactions from starting when applying state on a node during a LEAVE, to prevent overwriting. Note that this doesn't affect the state provider, just the recipient. * TransactionLogger's logic on determining whether shouldDrainWithoutLock() is much more sophisticated now, watching for progress being made during a non-blocking drain. * DistTxInterceptor checks on transaction logging is reordered now, to provide more accurate semantics and to minimise races. Note that races are NOT eliminated, and will need to be handled during the commit-retry process. But this minimises it, since transaction logging is faster and cheaper. * Update DistributionInterceptor to deal with retries when committing, and also to broadcast commit messages to freshly calculated target nodes as well as nodes that the prepare had previously been sent to, as this could be a disjoint set. * CommandAwareRpcDispatcher now doesn't handle retries or acquiring processing locks with the DistributedSync. Instead this is handled by the InboundInvocationHandler, the retry logic encapsulated in the RetryQueue inner class. This is a far more robust approach than relying on the sender to re-send a message. * Rehash tasks should not block on invalidations * Rehash state pulls should happen in parallel.
- Loading branch information
1 parent
4921368
commit 0b87cdb
Showing
29 changed files
with
1,315 additions
and
571 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
20 changes: 20 additions & 0 deletions
20
core/src/main/java/org/infinispan/commands/remote/BaseRpcCommand.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.