belliottsmith opened a new pull request, #3765: URL: https://github.com/apache/cassandra/pull/3765
- Fix notifying unmanaged after update redundant before/bootstrap - Do not infer invalid if we have a single round of replies with minKnown not decided and maxKnown erased - in this case store the knowledge for next request. - Fix SyncPoint topology selection - Fix CheckStatusOkFull.with(InvalidIf) - Fix NotifyWaitingOn - ExecuteTxn should only contact latest topology for follow-up requests - DurableBefore.min should not go backwards on new epoch topology, journal replay was not correctly handling PreApplied, partialTxn can be null if not owned - Fix notify pre-bootstrap that arrives post-bootstrap - Avoid GC race condition on Propagate where we can incorrectly infer a shard is stale - Ensure redundantBefore on previously-owned range does not imply redundant before for overlapping queries on still-owned range - Ensure we don't mark stale unless all of the quorum we contacted had erased, else we may have raced with the agreement and erase - Fix Invalidate when no route found for FetchData does not report to all requested local epochs - Fix WAS_OWNED_RETIRED without durableBefore at Universal can lead to assertions with RX that we permit to execute but that have not yet - Fix initialiseWaitingOn can in some cases transitively notify the command we're updating via maybeCleanup of dependencies, but the command isn't yet updated so isn't ready - Fix encountering a command that is pre-bootstrap, and for which we have locally 'applied' a supserseding RX, so that we do not know its outcome locally (so we do not cleanup the command), but also it must have been decided - and we should not respond with future dependencies. - Epoch failures on CoordinatePreAccept should trigger the CoordinatePreAccept failure handler - Use the shard bound rather than GC bound for fallback dependency - LatestDeps should be sliced to actual route, so as not to use both PreAccepted AND Stable deps as though Stable - Fix various callback issues with node.withEpoch and Recover/Propose.isDone - RecoverWithRoute can encounter a partially truncated transaction where the Deps for one shard are not committed. Must fetch LatestDeps. - Tighten LatestDeps semantics for Recover - CommandsForKey: do not restore pruned as APPLIED - Ensure prune points execute in the epoch in which they are declared - must merge all fast path votes including those from earlier epochs that may have witnessed a later transaction - Recoveries that know the transaction is committed a priori should skip the Accept phase - Maintain GC behaviour for redundant commands that are pre-bootstrap - don't apply ERASE to CommandsForKey to avoid breaking pruning - Introduce clearBefore to ProgressLog to more consistently handle cleaning up redundant transactions (and avoid triggering burn test invariants) - don't replay journal of a bootstrapping node in burn test - Recover, Accept or Commit reply from epoch that has been retired should be treated as Success rather than Redundant - Distinguish completely REDUNDANT+PRE_BOOTSTRAP from partially GC_BEFORE and REDUNDANT+PRE_BOOTSTRAP - latter can make stronger inferences based on the GC_BEFORE intersection (could perhaps be treated as simply GC_BEFORE) - RX must register historical transactions with CFK - CommandStore.bootstrapper must wait for coordinate sync via same mechanism as sync() - Don't start topology change for shard where all replicas are already bootstrapping - Reify executes et al in StoreParticipants - LocalListeners txn listener reentry may erase the entry entirely - use registerAt in AbstractRequest for expirations, use correct time for expiresAt in ListAgent - use txnId.epoch() for pruning, as must be before both txnId and executeAt of prune point for coordinating dependencies - compute accurate KnownMap when affected by bootstrap or staleness - upgradeTruncated should calculate Definition and Deps separately - Invalidate should not sort before Erased when calculating max reply or max knowledge reply - avoid another infinite loop at end of burn test - avoid another epoch loading edge case - pass through low/high epochs to ensure we propagate information to all waiting command stores - RX must adopt a non-pruned dependency that has a higher TxnId (if is itself behind prune point) - rejects should also be calculated on COMMITTED started before - remove Apply Factory wrapper for RX, redundant now we have CoordinationAdapters (and has faulty epoch logic) - for RX ensure we return maximum writes for each epoch we intersect (same effectively as pruning logic) - rework updateUnmanaged to improve clarity - BeginRecovery constructor of LatestDeps should use touches() not owns() for compute localDeps - BeginRecovery superseding calculation was incorrectly treating startedBefore Committed and Accepted the same, when the point at which a dep should be known differs - Refactor Command visiting, porting C* integration to accord-core - RelationMultiMap Builder should resize keys and keyLimits independently - CommandsForKey Serialization moved to accord-core - losing ownership of range should trigger re-registration of unmanaged waiting on commit of a no-longer owned txn patch by Benedict; reviewed by Alex Petrov for CASSANDRA-20172 Thanks for sending a pull request! Here are some tips if you're new here: * Ensure you have added or run the [appropriate tests](https://cassandra.apache.org/_/development/testing.html) for your PR. * Be sure to keep the PR description updated to reflect all changes. * Write your PR title to summarize what this PR proposes. * If possible, provide a concise example to reproduce the issue for a faster review. * Read our [contributor guidelines](https://cassandra.apache.org/_/development/index.html) * If you're making a documentation change, see our [guide to documentation contribution](https://cassandra.apache.org/_/development/documentation.html) Commit messages should follow the following format: ``` <One sentence description, usually Jira title or CHANGES.txt summary> <Optional lengthier description (context on patch)> patch by <Authors>; reviewed by <Reviewers> for CASSANDRA-##### Co-authored-by: Name1 <email1> Co-authored-by: Name2 <email2> ``` The [Cassandra Jira](https://issues.apache.org/jira/projects/CASSANDRA/issues/) -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: pr-unsubscr...@cassandra.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: pr-unsubscr...@cassandra.apache.org For additional commands, e-mail: pr-h...@cassandra.apache.org