Signal loop#4788
Open
belliottsmith wants to merge 4 commits intoapache:trunkfrom
Open
Conversation
- Clean Shutdown/Restart - Rebootstrap to allow nodes to rejoin consensus if they are out of sync, or did not shutdown cleanly Improve: - Improve efficiency of BTreeReducingRangeMap - DurableBefore backed by BTreeReducingRangeMap - Soft reject new transactions when a replica has a backlog of work - system_accord_debug.command_store_ops supports starting journal replay Fix: - Ensure SequentialExecutor.owner is unset only by the owner - Detect and avoid taking two AccordExecutor locks simultaneously - MaxConflicts serializer - tryToExecuteListening after replay, to handle invalidated dependencies - TxnNamedRead does not close a RowIterator, leading to native memory leaks - GetLatestDepsNack serialization - journal.readLast() did not read last - DefaultRemoteListeners not correctly synchronised - RangeTxnScanner cancellation assumes was already started - Start cfk compaction before replay - txn_graph should avoid visiting parents twice (possible if two different dependency chains connecting them in the graph) - Topology.cloneEquivalentWithEpoch should also share nodeLookup and ranges, especially to accelerate computeWaitForEpoch/computeScope - Do not invoke slowReplicaDelay or slowCoordinatorDelay during restore - Do not fail if slowReplicaDelay or slowCoordinatorDelay are invoked without knowing the transaction
- TransactionStatement token aware routing
- Mitigate convoy effect:
- ExecuteTxnBacklog v1 can execute single key transaction backlogs and disseminate the result
- Direct local execution possible for single key transactions
- Use shardAppliedBefore instead of gcBefore to cleanup CFK faster
Also Improve:
- Introduce distributed tracing
- Combine RejectBefore and MaxConflicts
- Self-addressed messages are delivered directly
- Disable AccordSyncPropagator by default, as incompatible with large clusters
- FastPathStrategy.SIMPLE should not modify fast path contents; FastPathStrategy.UP introduced to adopt this behaviour
- Configurable queue prioritisation
- ProtocolModifiers mostly final
- Remove unnecessary condition check when serializing TxnUpdate
Also Fix:
- SequentialExecutor ownership bug
- BTree.XUpdater.reset()
- consumer and producer threads wait signal without acquiring the lock first - lock owners may prepare more work than they need, moving some dynamically-adjusted portion of the work from the prioritised lock-managed structures onto a non-blocking queue, so that other threads may consume work from there; the portion is continually micro-adjusted to target some available work whenever the lock is acquired. - adopts/supports some features of the SEPExecutor: - threads may auto-adjust the number of running threads based on how much time is collectively spent waiting, to minimise time spent signalling - consumers may (timed-sleep) poll rather than await a signal, reducing the number of kernel interactions needed; relying on the auto-adjustment to bound the time the scheduler spends waking threads with no work to do
Contributor
|
+1 |
This file contains hidden or 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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Thanks for sending a pull request! Here are some tips if you're new here:
Commit messages should follow the following format:
The Cassandra Jira