)]}'
{
  "log": [
    {
      "commit": "fff32de2e915772fbc70d16b1c32346313877838",
      "tree": "bfa52131ad52bcac29b27305b238bc9fdd5fbaea",
      "parents": [
        "66cab49f1c9af471795339a5fdf9522e6e73b691"
      ],
      "author": {
        "name": "mck",
        "email": "mck@apache.org",
        "time": "Sun May 31 23:20:30 2026 +0200"
      },
      "committer": {
        "name": "mck",
        "email": "mck@apache.org",
        "time": "Wed Jul 01 18:45:42 2026 +0200"
      },
      "message": "Inherit pom from apache parent\n\nEnsures artifacts can be uploaded to apache\u0027s nexus during release staging\n\n patch by mick semb wever; reviewed by David Capwell for CASSANDRA-21261\n"
    },
    {
      "commit": "66cab49f1c9af471795339a5fdf9522e6e73b691",
      "tree": "1102e100647a4b4598449b07c1bfd9011202be06",
      "parents": [
        "2cdda7f976e02aa5c3dee603237baeaa32545db6"
      ],
      "author": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Thu Jun 04 19:20:56 2026 +0100"
      },
      "committer": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Thu Jun 18 10:53:31 2026 +0100"
      },
      "message": "Expunged records may be resurrected:\n  CommandChanges.shouldCleanup short-circuits to NO if there is no data, but this is incorrect as Cleanup.EXPUNGE may have dropped the data and the record must receive cleanup EXPUNGE and be reported as ERASED.\nAlso Fix:\n - ActiveEpochs.withNewEpochs should handle transition from 0 -\u003e more than 1\n - RedundantBefore.minGcBefore should be NONE if empty\n - Update RangesForEpoch directly, so that we cannot have race conditions where the ownership is unknown\n - Avoid reentrancy on local callbacks\n - Ensure ReadCoordinator callbacks are invoked on owning thread\n - Avoid deadlock when notifying ComplexListener(s)\n - Release IntrusivePriorityHeap memory from large capacity heaps when empty\n - Prevent SynchronousRecoverAwait reentrancy when invoking onDone (by exposing and invoking invokeOnDone that first sets isDone)\n - maybeExecute must invoke either notWaiting or notifyWaiting to ensure tryExecuteListening terminates\n\npatch by Benedict; reviewed by Alan Wang and Alex Petrov for CASSANDRA-21440\n"
    },
    {
      "commit": "2cdda7f976e02aa5c3dee603237baeaa32545db6",
      "tree": "9cb75d406acfc2aac72081235fc1465be55ed798",
      "parents": [
        "0a10cd056794c05588114f45ce86d49d6d6538db"
      ],
      "author": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Fri Jun 05 10:43:21 2026 +0100"
      },
      "committer": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Thu Jun 18 10:53:31 2026 +0100"
      },
      "message": "(BTree)?ReducingRangeMap fixes and improvements\nFix:\n - (BTree)?ReducingRangeMapTest\n - BTree: bad invariant check, latent foldl bug\nImprove:\n - Implement efficient unconstrained fold\n\npatch by Benedict; reviewed by Alan Wang for CASSANDRA-21439\n"
    },
    {
      "commit": "0a10cd056794c05588114f45ce86d49d6d6538db",
      "tree": "dcaabba4b259add558504a82e9cd4f88a4e1d7a5",
      "parents": [
        "3d6392f4eca41d3036a704f1513020c24689f1bb"
      ],
      "author": {
        "name": "Alan Wang",
        "email": "alanwang599@gmail.com",
        "time": "Thu Jun 04 14:13:05 2026 -0700"
      },
      "committer": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Mon Jun 08 14:06:51 2026 +0100"
      },
      "message": "Safely regain ranges and delete retired command stores\n\npatch by Alan Wang; reviewed by Benedict for CASSANDRA-21212\n"
    },
    {
      "commit": "3d6392f4eca41d3036a704f1513020c24689f1bb",
      "tree": "f3c905b41ce8630e647f2e41b66f1bc5df263b3b",
      "parents": [
        "b81408ccbd84f90278b6327402db08831ed61bcf"
      ],
      "author": {
        "name": "dcapwell",
        "email": "dcapwell@apache.org",
        "time": "Fri May 29 09:10:23 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 29 09:10:23 2026 -0700"
      },
      "message": "ShardDurability.markDefunct() called O(N²) times across topology updates, causing log spam and OOM in tests (#277)\n\npatch by David Capwell; reviewed by Benedict Elliott Smith for CASSANDRA-21410"
    },
    {
      "commit": "b81408ccbd84f90278b6327402db08831ed61bcf",
      "tree": "40bdd1174f93987e9d241aceb98a3e8bdc04c296",
      "parents": [
        "3caddca117a2ac154c8e0a4423b36df06569f2b0"
      ],
      "author": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Sat May 16 16:52:50 2026 +0100"
      },
      "committer": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Mon May 18 17:51:45 2026 +0100"
      },
      "message": "Slice PreLoadContext to owned keys in MapReduceCommandStores\n\npatch by Benedict; reviewed by Ariel Weisberg for CASSANDRA-21836\n"
    },
    {
      "commit": "3caddca117a2ac154c8e0a4423b36df06569f2b0",
      "tree": "bd0ce719f69af58e7b3609b6ab7305d451d0ea7a",
      "parents": [
        "a081e19e33ddeb91040f2ff8f0bef119f57d11fb"
      ],
      "author": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Mon May 18 13:09:48 2026 +0100"
      },
      "committer": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Mon May 18 17:51:04 2026 +0100"
      },
      "message": "CoordinateTransaction should not abort if LocalExecute fails, esp. in case of LogUnavailableException\n\npatch by Benedict; reviewed by Ariel Weisberg for CASSANDRA-21835\n"
    },
    {
      "commit": "a081e19e33ddeb91040f2ff8f0bef119f57d11fb",
      "tree": "351c091696b02c103d6faaaa7e219b7ed5927be5",
      "parents": [
        "e8c70e097f305a5097084079f136d8be7c085b29"
      ],
      "author": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Fri May 15 13:42:25 2026 +0100"
      },
      "committer": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Sat May 16 21:09:26 2026 +0100"
      },
      "message": "Result natively supports persistable/non-persistable distinction\n\npatch by Benedict; reviewed by Alex Petrov and Ariel Weisberg for CASSANDRA-21375\n"
    },
    {
      "commit": "e8c70e097f305a5097084079f136d8be7c085b29",
      "tree": "7918657143f1ce647c9a66fe77abf7e81cbcf7b8",
      "parents": [
        "01aff40402a55bada08f6e5753ee3a4010f407da"
      ],
      "author": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Wed May 13 21:02:46 2026 +0100"
      },
      "committer": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Fri May 15 10:26:21 2026 +0100"
      },
      "message": "CASSANDRA-21361 follow-up: recontact forbids self addressed messages and we ensure self-addressed messages send full information to avoid having multiple LocalDelivery contexts\n"
    },
    {
      "commit": "01aff40402a55bada08f6e5753ee3a4010f407da",
      "tree": "f27b8a4068ae33c9a02279c8c2f38547d1c93a20",
      "parents": [
        "d3c5935589082f784b10dbee4d89691612f680eb"
      ],
      "author": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Sun Mar 29 18:18:55 2026 +0100"
      },
      "committer": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Wed May 13 14:26:08 2026 +0100"
      },
      "message": "Improve Tail Latency\n - Introduce fast quorum medium path\n - Mitigate convoy effect:\n   - ExecuteTxnBacklog v1 can execute single key transaction backlogs and disseminate the result\n   - Direct local execution possible for single key transactions\n - Use shardAppliedBefore instead of gcBefore to cleanup CFK faster\nAlso Improve:\n - Introduce distributed tracing\n - Combine RejectBefore and MaxConflicts\n - Self-addressed messages are delivered directly\n - ProtocolModifiers mostly final\n - Remove SafeCallback\nAlso Fix:\n - BTree.XUpdater.reset()\n - computeUnsyncedEpoch was incorrect\n - Remove reject flag from MaxConflicts.Entry\n - Requeue waiting state polling mode requeues from callbacks to avoid crowding out other work\n\npatch by Benedict; reviewed by Alex Petrov and Ariel Weisberg for CASSANDRA-21361\n"
    },
    {
      "commit": "d3c5935589082f784b10dbee4d89691612f680eb",
      "tree": "b2686c381d13fefd8ded89e48a1736d8958700e5",
      "parents": [
        "8229cbf269f14553c338cf47efc9466bbc7ee81b"
      ],
      "author": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Mon Dec 22 14:08:16 2025 +0000"
      },
      "committer": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Sat May 09 12:44:20 2026 +0100"
      },
      "message": "Introduce:\n - Clean Shutdown/Restart\n - Rebootstrap to allow nodes to rejoin consensus if they are out of sync, or did not shutdown cleanly\nImprove:\n - Improve efficiency of BTreeReducingRangeMap\n - DurableBefore backed by BTreeReducingRangeMap\n - Soft reject new transactions when a replica has a backlog of work\n - Durably abandon failed transactions to reduce recovery\n - Track Read/Write conflicts separately\n - Add execution path to AccordCoordinatorMetrics\nFix:\n - Merge privileged coordinatorDeps with computed deps on recovery\n - tryToExecuteListening after replay, to handle invalidated dependencies\n - DefaultRemoteListeners not correctly synchronised\n - Topology.cloneEquivalentWithEpoch should also share nodeLookup and ranges, especially to accelerate computeWaitForEpoch/computeScope\n - Do not invoke slowReplicaDelay or slowCoordinatorDelay during restore\n - Do not fail if slowReplicaDelay or slowCoordinatorDelay are invoked without knowing the transaction\n - Do not replay pre-bootstrap commands\n - Prepend epoch race condition\n - Don\u0027t complain if Invalidated has not cleared WaitingState\n - Do not treat UNREADY as spanning was owned, as breaks pre-bootstrap calculation for sync points\n\npatch by Benedict; reviewed by Alex Petrov and Ariel Weisberg for CASSANDRA-21355\n"
    },
    {
      "commit": "8229cbf269f14553c338cf47efc9466bbc7ee81b",
      "tree": "c26db249640be518de9a570f7fb514a01a65876d",
      "parents": [
        "93d78be37ef904118da2426716b5d77c0fb227db"
      ],
      "author": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Fri Dec 19 13:40:06 2025 +0000"
      },
      "committer": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Mon Apr 13 15:38:37 2026 +0100"
      },
      "message": "InMemoryRangeIndex\nAlso Fix:\n - DefaultLocalListeners iterators do not handle multiple waiters on the same transaction correctly\n - Minor burn test edge case when cancelling bootstrap and resuming\n - NotifyWaitingOn stillExecutes-\u003estillWaitsOn\n - Privileged fast path commit failure should not send stable message\n - Erroneously populating executeAt with txnId in CommandSummaries for Accepted commands\nAlso Improve:\n - Improve Catchup logging\n - KeyDeps.forEach\n - Timestamp.tryParse\n - Simulate CFR loading/listening\n\npatch by Benedict; reviewed by Alex Petrov for CASSANDRA-21306\n"
    },
    {
      "commit": "93d78be37ef904118da2426716b5d77c0fb227db",
      "tree": "661298640ed4a5dd7537295848c9619892c841ff",
      "parents": [
        "29270f5b3460fa6eb23b97abe93363ddf6c54bee"
      ],
      "author": {
        "name": "David Capwell",
        "email": "dcapwell@apple.com",
        "time": "Wed Jan 07 14:23:57 2026 -0800"
      },
      "committer": {
        "name": "David Capwell",
        "email": "dcapwell@apple.com",
        "time": "Wed Jan 07 14:23:57 2026 -0800"
      },
      "message": "Ninja for CASSANDRA-21077: Cassandra expets setRange(0, 0) to not fail when the bitset is empty, so have to check for this case first before validating the input\n"
    },
    {
      "commit": "29270f5b3460fa6eb23b97abe93363ddf6c54bee",
      "tree": "1087c5e70d7b59f3d8df23d268df4e43c68e602f",
      "parents": [
        "f09a12da76bbc195ceb05ad859912aeb0a432dda"
      ],
      "author": {
        "name": "dcapwell",
        "email": "dcapwell@apache.org",
        "time": "Wed Jan 07 12:36:24 2026 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jan 07 12:36:24 2026 -0800"
      },
      "message": "Fixed LargeBitSet and SmallBitSet to have the same semantics with inbound and out of bound inputs.  This was detected first by Cassandras SimpleBitSetSerializersTest#any test (#264)\n\npatch by David Capwell; reviewed by Benedict Elliott Smith for CASSANDRA-21077"
    },
    {
      "commit": "f09a12da76bbc195ceb05ad859912aeb0a432dda",
      "tree": "787d8efbb6b83f239ec6d8598e5e7ca4332e733c",
      "parents": [
        "f6b0a6998faca767e6951976097dec704c306b0e"
      ],
      "author": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Mon Dec 15 20:58:24 2025 +0000"
      },
      "committer": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Wed Dec 17 19:30:30 2025 +0000"
      },
      "message": "Improve\n - Iterate LocalListeners in order, so can query more effectively on node\n - Refine AbstractReplay.minReplay/shouldReplay\n\npatch by Benedict; reviewed by Alex Petrov for CASSANDRA-21804\n"
    },
    {
      "commit": "f6b0a6998faca767e6951976097dec704c306b0e",
      "tree": "ec52c119520bf5f871225c5f1a63ede5f108d1bb",
      "parents": [
        "6bae51f6a4bd560a82840fa0809cd1d630696cc0"
      ],
      "author": {
        "name": "David Capwell",
        "email": "dcapwell@apple.com",
        "time": "Thu Dec 11 09:31:20 2025 -0800"
      },
      "committer": {
        "name": "dcapwell",
        "email": "dcapwell@apache.org",
        "time": "Mon Dec 15 12:58:19 2025 -0800"
      },
      "message": "Updated so txn.execute is always called before txn.result, which enables Cassandra to pass around rejections found while creating the mutations.\n\npatch by David Capwell; reviewed by Benedict Elliott Smith, Caleb Rackliffe, Jyothsna Konisa for CASSANDRA-21061\n"
    },
    {
      "commit": "6bae51f6a4bd560a82840fa0809cd1d630696cc0",
      "tree": "c33049ec1427436d9b28ddec33fef688ea9d0174",
      "parents": [
        "8ccce745818cf80c7cff82c3554e4a88e9e540db"
      ],
      "author": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Fri Dec 05 11:11:07 2025 +0000"
      },
      "committer": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Mon Dec 15 20:08:10 2025 +0000"
      },
      "message": "Fix:\n - DefaultLocalListeners.ComplexListeners iterator IndexOutOfBoundsException\n - Race condition initialising empty ActiveEpochs, when minimum pending epoch can move backwards\n - SyncPoints must be declared in an epoch containing the ranges, and PENDING_REMOVAL ranges will reject non-syncpoint transactions\n - AccordExecutorMetrics is now registered on startup\n - getRecentValues for non-cumulative histogram should not subtract prior values\nImprove:\n - Report ephemeral read, epoch waits and timeout metrics\n - Remove Topologies.SelectNodeOwnership, as no need to SLICE anymore\n - Introduce SystemEventListener for epoch waiting and timeout metrics\n - No-op but log if gcBefore provided to CFK is in the past\n\npatch by Benedict; reviewed by Alex Petrov for CASSANDRA-21076\n"
    },
    {
      "commit": "8ccce745818cf80c7cff82c3554e4a88e9e540db",
      "tree": "ed0f4ae4dd179f96bf7c6b9427a7ba52b1114655",
      "parents": [
        "973335bfe7e930c6646016a4a48cff084f49b660"
      ],
      "author": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Mon Dec 01 20:05:00 2025 +0000"
      },
      "committer": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Tue Dec 02 13:15:26 2025 +0000"
      },
      "message": "Submit ShardScheduler success to DurabilityQueue without holding lock to avoid deadlock (when DurabilityQueue queues a retry)\n\npatch by Benedict; reviewed by Alex Petrov for CASSANDRA-21053\n"
    },
    {
      "commit": "973335bfe7e930c6646016a4a48cff084f49b660",
      "tree": "bd13e076fe3ddd35151da61317ef5590161ac452",
      "parents": [
        "397ec9028caface332694eb0c236cd3477ee5f98"
      ],
      "author": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Wed Nov 26 10:30:58 2025 +0000"
      },
      "committer": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Thu Nov 27 13:07:02 2025 +0000"
      },
      "message": "Follow-up to CASSANDRA-21042: SyncPoints should operate against the last epoch containing their ranges, which should refuse other transactions\n"
    },
    {
      "commit": "397ec9028caface332694eb0c236cd3477ee5f98",
      "tree": "d23067fc5289600933c5a4b8b18b269b637ff699",
      "parents": [
        "cdd4529f67492becb10ebca94678b5d08d3d3d11"
      ],
      "author": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Fri Nov 07 19:39:59 2025 +0000"
      },
      "committer": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Tue Nov 25 14:18:01 2025 +0000"
      },
      "message": "Make TopologyException a checked exception to ensure they are handled carefully, as they may occur at surprising times\nAlso Fix:\n - Restore MaxDecidedRX on replay\n - When catchup_on_start_exit_on_failure \u003d\u003d false, should startup on any kind of failure, not only timeout\n - lazy vtable LIMIT clause regression\n - DurabilityService.onEpochRetired\n - Command.validate when uniqueHlc differs\n - Avoid unsafe publication of AccordExecutor to scheduledFastTasks\n - AccordCache hitRate metric names\n - use long for return type of DurationSpec.toNanoseconds\n - Repair without all replicas should not request all Accord replicas participate\nAlso Improve:\n - Split Accord startup into local+distributed, ensure we\n - Add logging to FetchDurableBefore on startup\n - Add randomised testing of AbstractLazyVirtualTable\n - Add validation of lazy virtual table key ordering\n - Don\u0027t send requests to faulty replicas\n - shrinkOrEvict large objects without holding lock\n - Accord dtest shutdown\n\npatch by Benedict; reviewed by Alex Petrov for CASSANDRA-21042\n"
    },
    {
      "commit": "cdd4529f67492becb10ebca94678b5d08d3d3d11",
      "tree": "0fc1b5670684c47870f2a2dc6aa03c8944294227",
      "parents": [
        "938ba19adaf70bf9901fb2dc177dce313d7ee15c"
      ],
      "author": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Fri Nov 14 14:25:34 2025 +0000"
      },
      "committer": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Fri Nov 14 14:25:34 2025 +0000"
      },
      "message": "Follow-up to CASSANDRA-21013: fix rf\u003d1 catchup\n"
    },
    {
      "commit": "938ba19adaf70bf9901fb2dc177dce313d7ee15c",
      "tree": "239ccb755dde44e268bd74e67d06db47ce6250e0",
      "parents": [
        "de03d14e4821b669fecad5dcdb2de2dba3a9d926"
      ],
      "author": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Mon Nov 10 17:33:07 2025 +0000"
      },
      "committer": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Thu Nov 13 14:35:42 2025 +0000"
      },
      "message": "Coordinate/ExecuteEphemeralRead should invoke coordinator metrics\nAlso improve:\n - TimeService.recentElapsed to reduce number of nanoTime calls\n - Support serializing prefixes before CommandsForKey\n\npatch by Benedict; reviewed by Alex Petrov for CASSANDRA-21017\n"
    },
    {
      "commit": "de03d14e4821b669fecad5dcdb2de2dba3a9d926",
      "tree": "48ab4ba035928448c1e32f0792f8f72f2fb63b66",
      "parents": [
        "a681b1bf7d9e8d1d797af2fd54bdd180a4863406"
      ],
      "author": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Thu Oct 30 12:53:16 2025 +0000"
      },
      "committer": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Wed Nov 12 12:44:24 2025 +0000"
      },
      "message": "Improve DurabilityQueue:\n - All retries are appended to a delay queue so overlaps can be pruned\n - Quorum successes are not retried if there are superseding sync points covering the ranges\n - User-initiated requests are not purged unless the request has timed out or otherwise completed\n - Overlapping requests are queued up against the next to run\nAlso:\n - Update copy of BTree and import IntervalBTree\n - Fix RedundantStatus WAS_OWNED_OVERRIDE_MASK\n - Add Catchup mechanism to reach parity with a quorum on restart\n\npatch by Benedict; reviewed by Alex Petrov for CASSANDRA-21013\n"
    },
    {
      "commit": "a681b1bf7d9e8d1d797af2fd54bdd180a4863406",
      "tree": "3d4c2b7252e09af223ee9485b7b90f38d922808a",
      "parents": [
        "a575ab316b4e79f99009801312579bcbf86451ef"
      ],
      "author": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Fri Oct 17 21:27:14 2025 +0100"
      },
      "committer": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Thu Nov 06 14:37:30 2025 +0000"
      },
      "message": "Improve Topology Management\n\nMerge ConfigurationService with TopologyManager to remove cyclic dependency and duplicated work.\nAlso:\n - Improve visibility of work blocking topology processing\n - Ensure we cannot double-count peers when deciding an epoch\u0027s distributed readiness\n - Remove the possibility of distributed stalls, by processing new topologies as soon as a\n   contiguous sequence is known locally, regardless of whether anyprior local epoch is ready to\n   coordinate or has recorded this fact to peers. The notification of local readiness continues\n   to be processed only once all prior epochs are ready, but we can begin using and readying\n   later epochs immediately.\n\npatch by Benedict; reviewed by Alex Petrov for CASSANDRA-20998\n"
    },
    {
      "commit": "a575ab316b4e79f99009801312579bcbf86451ef",
      "tree": "5da19d5b803e48fd624792446c1c6d0add731538",
      "parents": [
        "e896c9c328d3e8a3b7ddd85381edeaf1b4b8ccb2"
      ],
      "author": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Mon Sep 22 15:39:08 2025 +0100"
      },
      "committer": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Mon Nov 03 13:35:50 2025 +0000"
      },
      "message": "Introduce \"hardRemoved\" concept for marking nodes permanently offline, to permit recovery from availability loss\nAlso fix:\n - Avoid erroneously marking UniversalOrInvalidated when only known to quorum\n - MaybeRecover should not abort if found durable if either: 1) prevProgressToken already witnessed durable; or 2) Home state has requested we recover anyway\n - Invariant in MaybeRecover is too strong now we permit recovering when known to be stable\n - ReadData must respond with InsufficientAndWaiting if not Stable to ensure Durability is inferred correctly by ExecuteTxn\n - Avoid StackOverflowException in NotifyWaitingOn\n - PreAccept should honour the REJECTED flag of any member of the latest topology if the vote would be relied upon for any prior epoch\u0027s quorum\n - Resume Accord bootstrap on restart\n - Fix burn test non-determinism\n - Reset Accord topologies on restart if no local command stores to ensure we can catch up (as intervening epochs may have otherwise been GC\u0027d)\n - Exclude stale or removed ids from sync points\n - Terminate a failed DurabilityRequest if a required participant is now removed/hardRemoved\nAlso improve:\n - Filter and record faulty in AbstractCoordination\n - If we are the home shard, and our home progress status is done, we should not wait for the home shard to advance the waiting progress state\n - Introduce CommandStore.tryExecuteListening to try to execute all waiting transactions and their dependencies\n - ExecuteTxn on recovery should not wait, to avoid consuming progress log concurrency slots for transactions that cannot execute\n - HomeState should update its phase based on the command status to handle operator request to retry all states\n - Separate home/wait queue in DefaultProgressLog\n - Additional tracing\n - Do not call trySendMore from prerecordFailure\n - Force full recovery for sync points if we have lost quorum\n\npatch by Benedict; reviewed by Alex Petrov for CASSANDRA-20921\n"
    },
    {
      "commit": "e896c9c328d3e8a3b7ddd85381edeaf1b4b8ccb2",
      "tree": "e7868ce33582267d175a58242c07090d7fea5613",
      "parents": [
        "657f344eb3b3570966bf8cff7731bef6eeea98f1"
      ],
      "author": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Mon Sep 15 10:03:57 2025 +0100"
      },
      "committer": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Wed Oct 29 10:14:32 2025 +0000"
      },
      "message": "Improve tracing:\n - Support pattern trace table\n - Add basic tracing to all coordinations\n\npatch by Benedict; reviewed by Alex Petrov for CASSANDRA-20911\n"
    },
    {
      "commit": "657f344eb3b3570966bf8cff7731bef6eeea98f1",
      "tree": "752a3dc381c463c96eb3bf74c9ce4308b2ad3976",
      "parents": [
        "520818a004a89217cf86efa6c8fa2968401968ec"
      ],
      "author": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Wed Sep 10 11:17:35 2025 +0100"
      },
      "committer": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Fri Sep 19 12:21:03 2025 +0100"
      },
      "message": "Rebootstrap\nAlso Refine:\n - Introduce MapReduceConsumeCommandStore for enforcing message refusal comprehensively\n - Refactor to RedundantStatus:\n   - use int rather than short to prepare to support more statuses\n   - merge PreBootstrap and Unready (into Unready)\nAlso Fix:\n - Propagate Erase to no longer participating replica\n - RecoverAwait to original coordinator was not correctly notifying\n - Cancel messages if we encounter an exception so we do not attempt to process other shards after clearing the message state\n - Consistent participant filtering and Cleanup across ownership loss\n - CheckStatus.foundKnown could erroneously override validFor ranges with weaker validForAll, leading to a shard not being treated as fully truncated and preventing recovery progress\n\npatch by Benedict and Alex Petrov for CASSANDRA-20908\n"
    },
    {
      "commit": "520818a004a89217cf86efa6c8fa2968401968ec",
      "tree": "da8bed6c95872cf735af289d2811998c2bda2d0b",
      "parents": [
        "78b84b08e13530722cb785a3b748fd2075c1c449"
      ],
      "author": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Thu Sep 18 13:44:30 2025 +0100"
      },
      "committer": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Thu Sep 18 13:47:20 2025 +0100"
      },
      "message": "Follow-up to CASSANDRA-20906: Fix Simulator\n"
    },
    {
      "commit": "78b84b08e13530722cb785a3b748fd2075c1c449",
      "tree": "a13bfb9d9ea9eda0d6aab868de46cdf55e772105",
      "parents": [
        "27aec780031d2247a32a4b7204fcbcc6d51976ff"
      ],
      "author": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Sat Sep 06 15:52:34 2025 +0100"
      },
      "committer": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Wed Sep 17 21:21:52 2025 +0100"
      },
      "message": "Split AsyncChain and AsyncResult; normalise AsyncResult with C* Future\n\npatch by Benedict; reviewed by Alex Petrov for CASSANDRA-20906\n"
    },
    {
      "commit": "27aec780031d2247a32a4b7204fcbcc6d51976ff",
      "tree": "904051c5a48400bd344bc17ead12babe6349d605",
      "parents": [
        "9c7f856c3e1f10c6f985495702edb844cfee2b80"
      ],
      "author": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Mon Sep 15 21:37:49 2025 +0100"
      },
      "committer": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Wed Sep 17 21:21:52 2025 +0100"
      },
      "message": "Strict Serializability Verifier may incorrectly handle blind writes when witnessed before the writing operation ACKs\n\npatch by Benedict; reviewed by Alex Petrov for CASSANDRA-20905\n"
    },
    {
      "commit": "9c7f856c3e1f10c6f985495702edb844cfee2b80",
      "tree": "b3d80c2a08974168f056522fccc5de6f6f69f90a",
      "parents": [
        "875937c8844e854a55765c64ac34a2bd4a6bc187"
      ],
      "author": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Sat Sep 06 15:58:32 2025 +0100"
      },
      "committer": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Tue Sep 09 11:04:30 2025 +0100"
      },
      "message": "RegisteredCallback should remove itself from callback map when cancelled\nAlso Fix:\n - Do not throw CancellationException when processing requests that have been aborted, as may be caused by a successful meaningful reply that can be overridden\nAlso Improve:\n - Violation information reported\n - Sort CommandStore shards by id\n\npatch by Benedict; reviewed by Aleksey Yeschenko for CASSANDRA-20896\n"
    },
    {
      "commit": "875937c8844e854a55765c64ac34a2bd4a6bc187",
      "tree": "b3ef1768f456121549fa703b151434b42a46cfbb",
      "parents": [
        "c3a62d77ba332f4a01220709c040af86dd3acf6a"
      ],
      "author": {
        "name": "David Capwell",
        "email": "dcapwell@apple.com",
        "time": "Wed Sep 03 10:00:51 2025 -0700"
      },
      "committer": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Fri Sep 05 00:31:47 2025 +0100"
      },
      "message": "CASSANDRA-20883: bitset changes to support cassandra serializers\n\npatch by David Capwell and Benedict for CASSANDRA-20883\n"
    },
    {
      "commit": "c3a62d77ba332f4a01220709c040af86dd3acf6a",
      "tree": "0fabbbf62754da7278dd84488acc16301b96c2d3",
      "parents": [
        "48061a521cde7a085fe7a5503023c8ef8b687a89"
      ],
      "author": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Wed Sep 03 12:08:06 2025 +0100"
      },
      "committer": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Thu Sep 04 16:31:29 2025 +0100"
      },
      "message": "All pending topology notifications must be propagated to a newly published epoch, not only the pending notification for that epoch\nAlso Fix:\n - removeRedundantMissing could erroneously remove missing dependencies occurring after the new appliedBeforeIndex\n - Invariant failure for some propagate calls supplying \u0027wrong\u0027 addRoute\n - Disambiguate nextTxnId and nextTxnIdWithDefaultFlags\n - Journal.replayTopologies to return List for consistency of integration and semi-integrated burn test\n\npatch by Benedict; reviewed by Aleksey Yeschenko for CASSANDRA-20886\n"
    },
    {
      "commit": "48061a521cde7a085fe7a5503023c8ef8b687a89",
      "tree": "b4c65ecf1e280f890b52679158506715642edf4d",
      "parents": [
        "5cbe8d62f15cc7d66af2c7686f14b8fa52b1d35b"
      ],
      "author": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Wed Aug 20 17:47:58 2025 +0100"
      },
      "committer": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Tue Sep 02 18:42:55 2025 +0100"
      },
      "message": "Improve Observability:\n - Track all active Coordinations\n - Refactor Replica/Coordinator metrics and report Coordinator exhausted/preempted/timeout\n - DurabilityQueue metrics and visibility\nAlso Fix:\n - WaitingState can get cause distributed stall when asked to wait for CanApply if not yet PreCommitted; track separate querying state and advance this to the next achievable state rather than the desired final state\n - Stalled coordinators should not prevent recovery\n - Edge case with fetch unable to make progress when pre-bootstrap and all peers have GC\u0027d\n - Dependency initialisation for sync points across certain ownership changes\n - SyncPoint propagation may not include all of the epochs required on the receiving node for ranges they have lost but not closed, and receiving node does not validate them\n - Stable tracker accounting with LocalExecute\n - Do not prune non-durable APPLIED as must be reported in dependencies until durably applied (so as not to break recovery)\n - Ensure we cannot race with replies when initiating Coordination\n - ProgressLog does not guarantee to clear home or waiting states when erased or invalidated by compaction\n - WaitingState on non-home shard cannot guarantee progress once home shard is Erased\n - WaitingOnSync handles retired ranges incorrectly\nAlso Improve:\n - Standardise failure accounting, use null to represent single reply timeouts\n - BurnTest record/replay to/from file\n\npatch by Benedict; reviewed by Alex Petrov for CASSANDRA-20878\n"
    },
    {
      "commit": "5cbe8d62f15cc7d66af2c7686f14b8fa52b1d35b",
      "tree": "88f1b5e9077a2214043051220f847a4439557255",
      "parents": [
        "a8916a18a012063f4da74aaccd39f0b828c99da0"
      ],
      "author": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Sat Aug 16 13:08:18 2025 +0100"
      },
      "committer": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Tue Aug 19 15:13:29 2025 +0100"
      },
      "message": "Accord fixes:\n - Fix erroneous call to registerWithDelay with absolute deadline\n - ExecuteSyncPoint should discount votes from unbootstrapped replicas\n - Bootstrap no longer needs to first ensure durability (now ExecuteSyncPoint discounts votes from unbootstrapped replicas)\n - Progress stall with home shard stopping before Stable is propagated to all shards\n - Only upgrade Durability.HasPhase if we have queried all shards\n - Incorrectly inferring Durability in CheckStatus.finish\n - Incorrectly inferring/propagating stable from fast unstable reply; clarify to prevent further mistakes\n - MaxDecidedRX should track separate hlc bounds for filtering non-RX dependencies\n - minGcBefore.hlc() can move backwards across epochs, even if each shard moves forwards; must track minHlc directly\n - slowTimeout init in ExecuteTxn.LocalExecute\n - TxnId.parse for RV\nAlso improve:\n - Don\u0027t query recovery state if fast path durably decided\n - Support deferred partial dep deserialisation\n - Support both orientations of KeyDeps/RangeDeps\n - Support partialDeps as ByteBuffer\n"
    },
    {
      "commit": "a8916a18a012063f4da74aaccd39f0b828c99da0",
      "tree": "b66d5bbe63bd394a3a242633f38bb4686686eb05",
      "parents": [
        "b86550c154758e5dd223fa8101a2a83005b644a6"
      ],
      "author": {
        "name": "Alex Petrov",
        "email": "oleksandr.petrov@gmail.com",
        "time": "Thu Jul 31 09:43:49 2025 +0200"
      },
      "committer": {
        "name": "Alex Petrov",
        "email": "alexp@coffeenco.de",
        "time": "Thu Aug 14 09:27:31 2025 +0200"
      },
      "message": "Startup sequence improvements\n\nPatch by Alex Petrov; reviewed by Benedict Elliott Smith for CASSANDRA-20519\n"
    },
    {
      "commit": "b86550c154758e5dd223fa8101a2a83005b644a6",
      "tree": "b79491db5e261b0ec9e50a7395d2a55904c77a63",
      "parents": [
        "b268e9a7e80ed7454da7ec9df6f1a48d68a94ec1"
      ],
      "author": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Sun Aug 03 18:55:28 2025 +0100"
      },
      "committer": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Wed Aug 13 10:11:21 2025 +0100"
      },
      "message": "Enrich Durability with each phase, so we can both prune unapplied dependencies to mitigate replicas that are behind causing Deps growth,\nand more reliably avoid initialising recovery progress log state of transactions that cannot yet make progress\nAlso fix:\n - Infer invalid in MaybeRecover and FetchData\n - MaybeRecover sometimes aborts before home shard knows outcome\n - Epoch sync with VisibilitySyncPoint\n - Retired implies synced\nAlso improve:\n - Add Topology.removedNodes\n - If Durability implies we can fetch a status, update the waiting state to fetch it\n\npatch by Benedict; reviewed by Alex Petrov for CASSANDRA-20832\n"
    },
    {
      "commit": "b268e9a7e80ed7454da7ec9df6f1a48d68a94ec1",
      "tree": "12baefcc71bcd731554062fc4b74be662e134bfb",
      "parents": [
        "0c3c7bf720330529e4b1af6ec721213aa2365f0a"
      ],
      "author": {
        "name": "Alex Petrov",
        "email": "oleksandr.petrov@gmail.com",
        "time": "Wed Aug 13 08:48:53 2025 +0200"
      },
      "committer": {
        "name": "Alex Petrov",
        "email": "alexp@coffeenco.de",
        "time": "Wed Aug 13 10:54:11 2025 +0200"
      },
      "message": "Accord: fix durability scheduling order, initialize them _after_ nodes are created\n\nPatch by Alex Petrov; reviewed by Benedict Elliott Smith for CASSANDRA-20831\n"
    },
    {
      "commit": "0c3c7bf720330529e4b1af6ec721213aa2365f0a",
      "tree": "8779d88e1509638c0e92a18d90b2a020d1bcd8bb",
      "parents": [
        "12da4693b449b30d0420673579a06025b7b3e484"
      ],
      "author": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Sat Aug 09 14:22:03 2025 +0100"
      },
      "committer": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Sun Aug 10 14:50:24 2025 +0100"
      },
      "message": "Minor tracing and progress log improvements:\nFix\n - FetchData tracing parameter was not being propagated\n - Progress log waiting state could infinite loop without making progress\nImprove:\n - Progress log waiting state tracing\n - Simplify progress log run counters\n\npatch by Benedict; reviewed by Alex Petrov for CASSANDRA-20825\n"
    },
    {
      "commit": "12da4693b449b30d0420673579a06025b7b3e484",
      "tree": "8b8681f96619c5dff4786e12bbd6ee1253bcd993",
      "parents": [
        "d5de79b56f792d3b6d868ca46845b830e8906828"
      ],
      "author": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Wed Aug 06 12:28:29 2025 +0100"
      },
      "committer": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Thu Aug 07 10:01:14 2025 +0100"
      },
      "message": "ConcurrentModificationException with CommandStore.waitingOnSync\n\npatch by Benedict; reviewed by Alex Petrov for CASSANDRA-20821\n"
    },
    {
      "commit": "d5de79b56f792d3b6d868ca46845b830e8906828",
      "tree": "528953aaa59943a327c8dcea324f02d23843ac31",
      "parents": [
        "20df7e5e5ad7bae442ff6fe4ee716eb7104336c1"
      ],
      "author": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Thu Jul 31 11:41:21 2025 +0100"
      },
      "committer": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Sun Aug 03 09:43:53 2025 +0100"
      },
      "message": "Bootstrap must first wait for a quorum to apply the sync point to ensure the DurableBefore Majority condition holds transitively,\nsince later quorums may include the bootstrapping node which does not participate in the durability of preceding transactions\nAlso Improve:\n - Apply MaxDecidedRX filtering to CommandsForKey RX dependencies\n - Optimise AbstractRanges.sliceMinimal (burn test hotspot)\n - Don\u0027t start shard schedulers on topology changes if not already started\n - Only registerTransitive if waitingOnSync\n - Reserve DurabilityRequest until ShardDurability is started\n - Don\u0027t notify progress log if stopped\n - Remove duplicate unmanaged filtering\n - Include only the first higher RX for each key on recovery\nAlso fix:\n - Use normal machinery for register transitive to ensure durability\n - Edge case in notification across bootstrap boundary by resubmitting Unmanaged to be recomputed\n - Serialization of CommandsForKey.TxnInfo.missing() collection when non-identity flag bits are present\n\npatch by Benedict; reviewed by Alex Petrov for CASSANDRA-20811\n"
    },
    {
      "commit": "20df7e5e5ad7bae442ff6fe4ee716eb7104336c1",
      "tree": "68079ac82c68c321c38e07201d18f0ad6b9bab11",
      "parents": [
        "05b2f2415c3e7c109158208824fbc804dfe43f71"
      ],
      "author": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Mon Jul 28 17:18:33 2025 +0100"
      },
      "committer": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Thu Jul 31 09:34:36 2025 +0100"
      },
      "message": "Improve ProgressLog:\n - Schedule a fallback timeout for active requests to ensure progress with lost callbacks\n - Clear active task for a txnId when new RunInvoker is registered\n - Consult DurableBefore prior to invoking recovery\n - Support user invoked reset of a command, clearing any active work and requeueing it\n - (Testing): Treat progress log for RX as recurring tasks for burn test termination\nAlso fix:\n - Handle another truncateWithOutcome edge case\n\npatch by Benedict; reviewed by Alex Petrov for CASSANDRA-20806\n"
    },
    {
      "commit": "05b2f2415c3e7c109158208824fbc804dfe43f71",
      "tree": "b822c5ab5c248448eb6b87897c23e39f9f4ee115",
      "parents": [
        "2f287b6c357d0fecb61ab0ba6910270a311ad775"
      ],
      "author": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Fri Jul 25 10:51:47 2025 +0100"
      },
      "committer": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Mon Jul 28 13:28:18 2025 +0100"
      },
      "message": "Fix CFK restore after replay:\n - Remove from CFK any unapplied transactions we know cannot apply\n - Force notification of waiting commands in CFK on replay\nAlso fix:\n - Don\u0027t truncateWithOutcome if pre bootstrap or stale\n - Fix RangeDeps.without(RangeDeps)\n - Fix InMemoryCommandStore replay bug with clearing DefaultLocalListeners\n - Ensure SaveStatus and executeAt are updated together to prevent corruption via expunge\nImprove:\n - Inform home shard that command is decided if we cannot execute, to avoid recovery contention\n - Don\u0027t recover sync points on the fast path\n - Don\u0027t calculate recovery info for RX (since we don\u0027t use it anymore, so no need to do the work)\n\npatch by Benedict; reviewed by Alex Petrov for CASSANDRA-20797\n"
    },
    {
      "commit": "2f287b6c357d0fecb61ab0ba6910270a311ad775",
      "tree": "c02955607415d942e7ee04a75c16bca258d1562c",
      "parents": [
        "090cb49bfb52357fee0f554d5ba0f0b012195280"
      ],
      "author": {
        "name": "dcapwell",
        "email": "dcapwell@apache.org",
        "time": "Thu Jul 24 15:53:40 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 24 15:53:40 2025 -0700"
      },
      "message": "Journal.TopologyUpdate should not store the local topology as it can be inferred from the global on (#229)\n\npatch by David Capwell; reviewed by Benedict Elliott Smith for CASSANDRA-20785"
    },
    {
      "commit": "090cb49bfb52357fee0f554d5ba0f0b012195280",
      "tree": "b37468469b227bb689771be38ca38fad6c5ee92f",
      "parents": [
        "f40826db9571af286a689deada1613ffc872e5f8"
      ],
      "author": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Thu Jul 24 16:18:33 2025 +0100"
      },
      "committer": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Thu Jul 24 20:21:50 2025 +0100"
      },
      "message": "Fix DurableBefore updates:\n - DurableBefore.fullyContainedIn should compare txnId\nAlso fix:\n - Messages with nullable state should check if they are cancelled after reading the state but before using it\n - Don\u0027t snapshot during replay\n - CFK.updateRedundantBefore incorrectly updating mayExecute and sharing byId in some cases\n - Refine GC with global durability bound\n\npatch by Benedict; reviewed by Alex Petrov for CASSANDRA-20786\n"
    },
    {
      "commit": "f40826db9571af286a689deada1613ffc872e5f8",
      "tree": "905e6a5c6ff7df9777d584f42dcddb82c03e750d",
      "parents": [
        "e66a30cd944e902ad2749b5182e1f0d56903303f"
      ],
      "author": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Mon Jun 30 13:29:06 2025 +0100"
      },
      "committer": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Thu Jul 24 20:08:02 2025 +0100"
      },
      "message": "Accord Query Tracing\nAlso improve:\n - Metric listeners\n\npatch by Benedict; reviewed by David Capwell for CASSANDRA-20773\n"
    },
    {
      "commit": "e66a30cd944e902ad2749b5182e1f0d56903303f",
      "tree": "46eaa53a3a4d2bafa1a76a76b4fded6066493000",
      "parents": [
        "51f36f788b8095c0da9efaf1ea91bb9a7dd31181"
      ],
      "author": {
        "name": "Alex Petrov",
        "email": "oleksandr.petrov@gmail.com",
        "time": "Wed Jul 23 13:03:07 2025 +0200"
      },
      "committer": {
        "name": "Alex Petrov",
        "email": "oleksandr.petrov@gmail.com",
        "time": "Wed Jul 23 14:57:31 2025 +0200"
      },
      "message": "Missed feedback for move durability service startup patch\n\nPatch by Alex Petrov; reviewed by Benedict Elliott Smith for CASSANDRA-20767\n"
    },
    {
      "commit": "51f36f788b8095c0da9efaf1ea91bb9a7dd31181",
      "tree": "3eb990c1d5a1c2a6c4dc1e7c3221091a737265ba",
      "parents": [
        "42b55d7064e4b49946524a5b7486589d3e97b778"
      ],
      "author": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Thu Jul 17 14:40:10 2025 +0100"
      },
      "committer": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Wed Jul 23 10:46:49 2025 +0100"
      },
      "message": "Limit replay to those records not durably persisted to both command store and data store\nAlso improve:\n - Limit truncation to TruncatedApplyWithOutcome until data is persisted durably to local store\n - start/stop progress log explicitly\n - limit progress log concurrency\n - clear heavy fields in some messages once processed\nAlso fix:\n - relax paranoid CFK validation during restart\n\npatch by Benedict; reviewed by Alex Petrov for CASSANDRA-20780\n"
    },
    {
      "commit": "42b55d7064e4b49946524a5b7486589d3e97b778",
      "tree": "37d7aab427e027a0ddaf21e08c528a6dc5eb1166",
      "parents": [
        "a1c1ed91cfeb904be9b490d498c1c52aba2253c6"
      ],
      "author": {
        "name": "Alex Petrov",
        "email": "oleksandr.petrov@gmail.com",
        "time": "Mon Jul 14 18:46:47 2025 +0200"
      },
      "committer": {
        "name": "Alex Petrov",
        "email": "alexp@coffeenco.de",
        "time": "Thu Jul 17 09:36:33 2025 +0200"
      },
      "message": "Move durability service startup\n\nPatch by Alex Petrov; reviewed by Benedict Elliott Smith for CASSANDRA-20767\n"
    },
    {
      "commit": "a1c1ed91cfeb904be9b490d498c1c52aba2253c6",
      "tree": "dd7db7c2e7ba0693355f0ceb5e4bce6c20fe46bf",
      "parents": [
        "1c203efdd463f2c452e8072267370f9e8dfdb8f3"
      ],
      "author": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Wed Jun 25 14:45:11 2025 +0100"
      },
      "committer": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Thu Jul 17 07:17:20 2025 +0100"
      },
      "message": "PreLoadContext descriptions\nAlso:\n - Introduce LoadKeysFor so we can avoid loading range transactions except where necessary\n\npatch by Benedict; reviewed by Alex Petrov for CASSANDRA-20758\n"
    },
    {
      "commit": "1c203efdd463f2c452e8072267370f9e8dfdb8f3",
      "tree": "7ad9c06b78b18a4a87b383ea6a5d1eda11c3b92e",
      "parents": [
        "ad26bb9df8f774300668a7099858e951e3f013cb"
      ],
      "author": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Tue Jul 15 20:29:54 2025 +0100"
      },
      "committer": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Wed Jul 16 19:35:42 2025 +0100"
      },
      "message": "Fix minDecidedId calculation\nAlso fix:\n - Bad cast of Truncated during replay\n - Don\u0027t throw IllegalStateException in Invariants.expect if accord.testing \u003d\u003d false\nAlso improve:\n - Support tracing of recovery and home progress\n\npatch by Benedict; reviewed by Alex Petrov for CASSANDRA-20771\n"
    },
    {
      "commit": "ad26bb9df8f774300668a7099858e951e3f013cb",
      "tree": "6f5d06852a066ca77f2c8895ba980159ca929aae",
      "parents": [
        "3aba47c29a1cb13dba05814fd6b007165193fd7e"
      ],
      "author": {
        "name": "Ariel Weisberg",
        "email": "aweisberg@apple.com",
        "time": "Thu Jan 09 17:22:56 2025 -0500"
      },
      "committer": {
        "name": "Ariel Weisberg",
        "email": "aweisberg@apple.com",
        "time": "Tue Jul 15 15:50:01 2025 -0400"
      },
      "message": "Add testing of consensus live migration to simulator\n\nPatch by Ariel Weisberg; Reviewed by Benedict Elliott Smith for CASSANDRA-20587\n"
    },
    {
      "commit": "3aba47c29a1cb13dba05814fd6b007165193fd7e",
      "tree": "52447d12f0ee9b23ad94bec4decf7c22ed381327",
      "parents": [
        "0d6157fc33dd16f1768030e66205e72fc1d7e9ac"
      ],
      "author": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Sat Jul 12 10:27:58 2025 +0100"
      },
      "committer": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Mon Jul 14 23:20:36 2025 +0100"
      },
      "message": "Accord Fixes:\n - Not updating CommandsForKey in all cases on restart\nAlso Improve:\n - Tracing coverage of FetchRoute\n - LatestDeps.equals\n - Route toString methods\n\npatch by Benedict; reviewed by Alex Petrov for CASSANDRA-20763\n"
    },
    {
      "commit": "0d6157fc33dd16f1768030e66205e72fc1d7e9ac",
      "tree": "cfeee505c763d7a40f0a66de22e2d788fe7b0ae0",
      "parents": [
        "3c9b3077df1c74a14d8fe8dc58fb3f61b8257236"
      ],
      "author": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Thu Jul 10 10:39:37 2025 +0100"
      },
      "committer": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Fri Jul 11 13:25:58 2025 +0100"
      },
      "message": "Fix:\n - Replay should notify listeners\n - TopologyManager can report the actually updated epochs for use by callers (TODO use this to filter redundant notifications)\n - No-op read validation\n\npatch by Benedict; reviewed by Alex Petrov for CASSANDRA-20754\n"
    },
    {
      "commit": "3c9b3077df1c74a14d8fe8dc58fb3f61b8257236",
      "tree": "5785b27a177ecbfbb5c7d7ded95efa4b22a97044",
      "parents": [
        "e587fc4c090aeb74a363af43295e0f7c7825445a"
      ],
      "author": {
        "name": "David Capwell",
        "email": "dcapwell@apple.com",
        "time": "Thu Jul 10 20:04:55 2025 -0700"
      },
      "committer": {
        "name": "David Capwell",
        "email": "dcapwell@apple.com",
        "time": "Thu Jul 10 20:04:55 2025 -0700"
      },
      "message": "Accord: Topology serializer has a lot of repeated data, can dedup to shrink the cost\n\npatch by David Capwell; reviewed by Benedict Elliott Smith for CASSANDRA-20715\n"
    },
    {
      "commit": "e587fc4c090aeb74a363af43295e0f7c7825445a",
      "tree": "cd77c158aff6d66cda5778272ffacbed02061d95",
      "parents": [
        "bfc12f6f26a226a364d698062c966694bdb71dc9"
      ],
      "author": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Sat Jul 05 09:57:13 2025 +0100"
      },
      "committer": {
        "name": "Alex Petrov",
        "email": "alexp@coffeenco.de",
        "time": "Tue Jul 08 20:44:53 2025 +0200"
      },
      "message": "Standardise Replay logic to ensure SafeCommandStore.update is called\nAlso Fix:\n - Initialise home state when calling waiting() if not already initialised\n - Don\u0027t reportClosed/reportRetired for epochs that are already closed/retired\n\npatch by Benedict; reviewed by Alex Petrov for CASSANDRA-20750\n"
    },
    {
      "commit": "bfc12f6f26a226a364d698062c966694bdb71dc9",
      "tree": "cb2394af0af9f7cd85537829390a9312764131c9",
      "parents": [
        "71d235d56cb315fa5ae01ec24d3d9f08dd08ac6a"
      ],
      "author": {
        "name": "Alex Petrov",
        "email": "oleksandr.petrov@gmail.com",
        "time": "Tue Jul 08 09:21:42 2025 +0200"
      },
      "committer": {
        "name": "Alex Petrov",
        "email": "alexp@coffeenco.de",
        "time": "Tue Jul 08 15:23:21 2025 +0200"
      },
      "message": "Improve command diff output for debug output\n\nPatch by Alex Petrov; reviewed by Benedict Elliott Smith for CASSANDRA-20738\n"
    },
    {
      "commit": "71d235d56cb315fa5ae01ec24d3d9f08dd08ac6a",
      "tree": "967055f7d08923c8b581f0a08a244accb5ff3c88",
      "parents": [
        "68778350bb45a1545cbe38af290d7778ffb79454"
      ],
      "author": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Tue Jul 01 14:24:01 2025 +0100"
      },
      "committer": {
        "name": "Alex Petrov",
        "email": "alexp@coffeenco.de",
        "time": "Fri Jul 04 09:50:58 2025 +0200"
      },
      "message": "Improve:\n\n - Journal debugging vtable support\n - Background task tracing support\nFix:\n - HLC_BOUND only valid for strictly lower HLC\n - HAS_UNIQUE_HLC can only be safely computed if READY_TO_EXECUTE\n - Break recursion in CommandStore.ensureReadyToCoordinate\n - Fix find intersecting shard scheduler\n - Separate adhoc ShardScheduler from normal to avoid overwriting\n - Should still use execution listeners to detect invalid reads for certain transactions even with dataStoreDetectsFutureReads\n\npatch by Benedict; reviewed by Alex Petrov for CASSANDRA-20746\n"
    },
    {
      "commit": "68778350bb45a1545cbe38af290d7778ffb79454",
      "tree": "dda8c3b3bcae73da5ec1fd71a0deb18acdadaa8c",
      "parents": [
        "555337a7d41158f74033818facf94fed6904bf5a"
      ],
      "author": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Sat Jun 28 22:56:57 2025 +0100"
      },
      "committer": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Mon Jun 30 19:26:07 2025 +0100"
      },
      "message": "Fix:\n - Lock inversion when restarting durability for erased sync point\n - Initialise durability cycle start time\nImprove:\n - Improve durability reporting\n - Timeout durability requests\n - DurabilityQueue concurrency should limit only until quorum is achieved\n - Some exceptions that may be thrown when starting coordination may not be propagated\n\npatch by Benedict; reviewed by Alex Petrov for CASSANDRA-20328\n"
    },
    {
      "commit": "555337a7d41158f74033818facf94fed6904bf5a",
      "tree": "ab460d170ab16cd038394c9b1323d0c37e3680b8",
      "parents": [
        "cfde59daea99fa36503ba17930e67303cfbf64a4"
      ],
      "author": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Fri Jun 27 11:19:52 2025 +0100"
      },
      "committer": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Sat Jun 28 15:50:14 2025 +0100"
      },
      "message": "Fix:\n - EphemeralReads should retry in a later epoch if replication factor changes\n - Fix no local epoch for NotAccept\n - Invalidate a command with no route but for which we know we own some key that has applied locally\n - Don\u0027t pre-merge existing DurableBefore, to reduce duplicate/redundant persistence\n - Misc purging bugs and improve testing of purging\n\npatch by Benedict; reviewed by Alex Petrov for CASSANDRA-20739\n"
    },
    {
      "commit": "cfde59daea99fa36503ba17930e67303cfbf64a4",
      "tree": "d3b8746773044fd944626bf0dd41fe2a4b8df0aa",
      "parents": [
        "aa08b04e8235d9c0b7e2bbe3bbe8773184bbbe46"
      ],
      "author": {
        "name": "Alex Petrov",
        "email": "oleksandr.petrov@gmail.com",
        "time": "Sat Jun 28 16:42:55 2025 +0200"
      },
      "committer": {
        "name": "Alex Petrov",
        "email": "alexp@coffeenco.de",
        "time": "Sat Jun 28 16:45:50 2025 +0200"
      },
      "message": "Add separator to pretty-print command changes\n\nPatch by Alex Petrov; reviewed by Benedict Elliott Smith for CASSANDRA-20738\n"
    },
    {
      "commit": "aa08b04e8235d9c0b7e2bbe3bbe8773184bbbe46",
      "tree": "dd292ada59b3d3819ea6bf88ca121cac30f4755c",
      "parents": [
        "756f2a1f88f079e74c34fd8e0f3bb5aa98760bef"
      ],
      "author": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Wed Jun 25 21:22:33 2025 +0100"
      },
      "committer": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Thu Jun 26 20:30:05 2025 +0100"
      },
      "message": "Follow-up to CASSANDRA-20726:\n - Fix shouldCleanup handling of erase/expunge\n - Fix CommandChange handling of minUniqueHlc being cleared\n - Don\u0027t clear minUniqueHlc when fast applying; instead simply validate !isWaiting\n\npatch by Benedict; reviewed by Benedict for CASSANDRA-20726\n"
    },
    {
      "commit": "756f2a1f88f079e74c34fd8e0f3bb5aa98760bef",
      "tree": "271c3ee31ef22f3db835bbf471173e30b1ddeb0e",
      "parents": [
        "154c05f50dcfe9cb69d14e4a67a137ecd0600e88"
      ],
      "author": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Sun Jun 22 12:14:55 2025 +0100"
      },
      "committer": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Wed Jun 25 15:02:17 2025 +0100"
      },
      "message": "(Accord) Fix:\n - Attempt to fix CommandsForKey StackOverflowError (presumed to be reachable via SaveStatus-\u003eInternalStatus map returning null)\n - Bound recursion with SafeCommandStore.tryRecurse()\n - IndexOutOfBoundsException in CINTIA checkpoint list encoding bounds logic\n - Maintain MaxDecidedRX to save majority of work when deciding RX that are newer than those we have previously agreed\n - Introduce IntervalBTree and use in CommandsForRanges to limit time spent in critical section when there are millions of RX\n\npatch by Benedict; reviewed by Alex Petrov for CASSANDRA-20727\n"
    },
    {
      "commit": "154c05f50dcfe9cb69d14e4a67a137ecd0600e88",
      "tree": "6def6938c6cf4878165a859e3d09e27f1faeb761",
      "parents": [
        "07ba9c85d083b586ff5c2382ef747b0fe71a9c47"
      ],
      "author": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Fri Jun 13 20:25:13 2025 +0100"
      },
      "committer": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Wed Jun 25 14:47:50 2025 +0100"
      },
      "message": "Improve:\n - Introduce SequentialAgentExecutor\n - ExecuteEphemeralRead.LocalExecute (matching ExecuteTxn.LocalExecute)\n - remove AgentExecutor (agent() only used as implementation detail)\n - Skip CommandStore/CommandsForKey on read or apply, when safe to do so\nFix:\n - Marking vestigial without knowing all covering keys\n - Incorrect size in WaitingOn.none\n - Cleanup RX that are not known but are no longer needed, due to being defunct\n - Home should not abort because of local truncation; may still be incomplete on another shard\n - Invalidate infinite loop due to interpreting Vestigial as a possible decision (as though it were another Truncated state)\n - Known.isTruncated reporting incorrect answer in some cases, leading to infinite RecoverWithRoute loops as not slicing to correct subset and some shards are truncated and reject the deps collection\n - BurnTest slowCoordinatorDelay should grow with retryCount\n - NotAccept should check both ballot and saveStatus; PreCommitted or later can be propagated by Apply that has an earlier ballot\n - Handle awaiting locally retired epoch\n - Incorrect propagate low epoch of sync points\n - GetEphemeralReadDeps.reduce NPE\n - Infinite invalidate loop when a replica marks vestigial due to being unable to participate in that part of the log\n\npatch by Benedict; reviewed by Alex Petrov for CASSANDRA-20726\n"
    },
    {
      "commit": "07ba9c85d083b586ff5c2382ef747b0fe71a9c47",
      "tree": "20ea8dec5df9cbbe4f899eafc8f89a82dcac3072",
      "parents": [
        "2b80b0233f96464430058d70f7398df11066c3a6"
      ],
      "author": {
        "name": "Alex Petrov",
        "email": "oleksandr.petrov@gmail.com",
        "time": "Wed Jun 18 21:36:26 2025 +0200"
      },
      "committer": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Thu Jun 19 10:41:29 2025 +0100"
      },
      "message": "Avoid re-serializing all-equivalent topologies\n\npatch by Alex Petrov; reviewed by Benedict for CASSANDRA-20721\n"
    },
    {
      "commit": "2b80b0233f96464430058d70f7398df11066c3a6",
      "tree": "4527db05d7a42a92ee64f650302e75e18864e0dc",
      "parents": [
        "2eb6677ebedf760a87da827fa50708035d353f75"
      ],
      "author": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Wed Jun 18 13:02:41 2025 +0100"
      },
      "committer": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Thu Jun 19 10:32:41 2025 +0100"
      },
      "message": "Erase should consistently erase all content associated with a transaction\nAlso Fix:\n - Erased SaveStatus can be reported for all queried owned participants on a replica (the saved participants have been erased)\n\npatch by Benedict; reviewed by Alex Petrov for CASSANDRA-20722\n"
    },
    {
      "commit": "2eb6677ebedf760a87da827fa50708035d353f75",
      "tree": "41716159aa8d5ddf739cc3cd4441be09510b1bee",
      "parents": [
        "1ce7122e2e305f7510ec4c10c7587822c0549364"
      ],
      "author": {
        "name": "Alex Petrov",
        "email": "oleksandr.petrov@gmail.com",
        "time": "Tue Jun 17 11:03:25 2025 +0200"
      },
      "committer": {
        "name": "Alex Petrov",
        "email": "oleksandr.petrov@gmail.com",
        "time": "Tue Jun 17 11:04:15 2025 +0200"
      },
      "message": "Add debug string to configuration service to output epochs we could not find\n\nPatch by Alex Petrov; reviewed by Benedict Elliott Smith for CASSANDRA-20716\n"
    },
    {
      "commit": "1ce7122e2e305f7510ec4c10c7587822c0549364",
      "tree": "12d1217fb7d05cd863333cdd796f3eebba486974",
      "parents": [
        "c2ef0643ab671067d39e7ce688eea493e9ee018d"
      ],
      "author": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Thu Jun 12 14:55:09 2025 +0100"
      },
      "committer": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Mon Jun 16 11:40:41 2025 +0100"
      },
      "message": "Fixes:\n - AccordJournal should not attempt to construct expunged commands\n - ready/notReady logic can break if we receive a partial Route that does not cover the local store\n - Invariant.require -\u003e TopologyRetiredException\n - validate min/max in TopologyManager.preciseEpochs\nImprove:\n - ExecuteSyncPoint should send Apply\n\npatch by Benedict; reviewed by Alex Petrov for CASSANDRA-20713\n"
    },
    {
      "commit": "c2ef0643ab671067d39e7ce688eea493e9ee018d",
      "tree": "43629e914e53c314606ce2ceab0b94156f45ede9",
      "parents": [
        "bf85660dccaece9fcb3dd319b6f82265d780378f"
      ],
      "author": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Tue Jun 10 17:25:31 2025 +0100"
      },
      "committer": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Thu Jun 12 11:37:12 2025 +0100"
      },
      "message": "Fix:\n - Do not query local topology when deciding what keys to fetch to avoid TopologyRetiredException\n - Ensure we propagate information back to the requesting CommandStore by using the store id to ensure it is included\n - BurnTest topology fetching was broken by earlier patch\n - Topology callbacks were not being invoked as we were not calling .begin()\n - Topology mismatch failure during notAccept phase was not being reported due to CoordinatePreAccept already having isDone\u003d\u003dtrue\n\npatch by Benedict; reviewed by David Capwell for CASSANDRA-20711\n"
    },
    {
      "commit": "bf85660dccaece9fcb3dd319b6f82265d780378f",
      "tree": "c7bfb4f25360e23310fd5a4a39163fbc9739ed7e",
      "parents": [
        "b22b935e1962f24f156a798e2492837a81c1d4ec"
      ],
      "author": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Tue Apr 22 17:46:21 2025 +0100"
      },
      "committer": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Mon Jun 09 18:06:02 2025 +0200"
      },
      "message": "Fixes\n - Don\u0027t assume stillExecutes applies to remote request - must mark unavailable any keys we don\u0027t have the txn definition for\n - Don\u0027t exit notifyManagedPreBootstrap notify loop early, as could have later transactions with lower txnId\n - CoordinateEphemeralRead must retry if insufficient responses from replicas that still own the range\n - Burn test terminates while non-recurring tasks pending on command store queues\n - Infinite recovery due to not sending InformDurable when partially truncated\n - Incorrect participants when invoking removeRedundantDependencies\n - Infinite bootstrap loop on retired topology\nImprove\n - Do not perform linear filters of CommandStores or Topologies\n - Some default implementations of forEach/iterator\n - TopologyRetiredException messages\n\npatch by Benedict; reviewed by Alex Petrov for CASSANDRA-20707\n"
    },
    {
      "commit": "b22b935e1962f24f156a798e2492837a81c1d4ec",
      "tree": "39ff45f32bded8b7756b292655b8075248687489",
      "parents": [
        "fd608bc7bc1003481f8bd9a4c7d3ebe6b55daa3c"
      ],
      "author": {
        "name": "Alex Petrov",
        "email": "oleksandr.petrov@gmail.com",
        "time": "Fri Jun 06 11:43:34 2025 +0200"
      },
      "committer": {
        "name": "Alex Petrov",
        "email": "oleksandr.petrov@gmail.com",
        "time": "Fri Jun 06 14:49:06 2025 +0200"
      },
      "message": "Fix StackOverflow exception on topology replay with a large number of active epochs/topologies\n\nPatch by Alex Petrov; reviewed by Benedict Elliott Smith for CASSANDRA-20704\n"
    },
    {
      "commit": "fd608bc7bc1003481f8bd9a4c7d3ebe6b55daa3c",
      "tree": "912c294c478eaabd061fdafdc3ea13c221e8f63f",
      "parents": [
        "774d5c82fe220e444a534eba09fcb8c17f8d4baf"
      ],
      "author": {
        "name": "Alex Petrov",
        "email": "oleksandr.petrov@gmail.com",
        "time": "Fri Jun 06 10:48:36 2025 +0200"
      },
      "committer": {
        "name": "Alex Petrov",
        "email": "oleksandr.petrov@gmail.com",
        "time": "Fri Jun 06 14:49:06 2025 +0200"
      },
      "message": "Make durability service listen to topology changes\n\nPatch by Alex Petrov; reviewed by Benedict Elliott Smith for CASSANDRA-20703\n"
    },
    {
      "commit": "774d5c82fe220e444a534eba09fcb8c17f8d4baf",
      "tree": "fc3e485b1c505d25af209da8d302ec5ba4da8aa5",
      "parents": [
        "7f0040d095f47faee1ea29a6c29369fff6da736b"
      ],
      "author": {
        "name": "Alex Petrov",
        "email": "oleksandr.petrov@gmail.com",
        "time": "Thu Jun 05 18:39:39 2025 +0200"
      },
      "committer": {
        "name": "Alex Petrov",
        "email": "oleksandr.petrov@gmail.com",
        "time": "Fri Jun 06 14:49:06 2025 +0200"
      },
      "message": "Account for truncated epoch when computing the low bound\n\nPatch by Alex Petrov and Benedict Elliott Smith; reviewed by Alex Petrov and Benedict Elliott Smith for CASSANDRA-20702.\n"
    },
    {
      "commit": "7f0040d095f47faee1ea29a6c29369fff6da736b",
      "tree": "3cf98c6f70ee942bf50b4f8e6b1fe6210d1e7511",
      "parents": [
        "21733d0df232742f5858a47a2c78cbcd319cadda"
      ],
      "author": {
        "name": "David Capwell",
        "email": "dcapwell@apple.com",
        "time": "Thu May 29 15:31:21 2025 -0700"
      },
      "committer": {
        "name": "David Capwell",
        "email": "dcapwell@apple.com",
        "time": "Thu May 29 15:31:21 2025 -0700"
      },
      "message": "Ninja for CASSANDRA-20684: Gens.select didnt allow access at generating a list of size\u003d0 after adding invarients check, fixed that to return an empty list\n"
    },
    {
      "commit": "21733d0df232742f5858a47a2c78cbcd319cadda",
      "tree": "5df5aaa790750bee13bbc3f54614911fa2a6bf79",
      "parents": [
        "7205f68a25f5b925a08cc58547981ce2bf485f8f"
      ],
      "author": {
        "name": "David Capwell",
        "email": "dcapwell@apple.com",
        "time": "Thu May 29 15:24:50 2025 -0700"
      },
      "committer": {
        "name": "David Capwell",
        "email": "dcapwell@apple.com",
        "time": "Thu May 29 15:24:50 2025 -0700"
      },
      "message": "Ninja for CASSANDRA-20684: Ignore markdown files in rat check\n"
    },
    {
      "commit": "7205f68a25f5b925a08cc58547981ce2bf485f8f",
      "tree": "6ba0633c5e5628906ba219c72f3b117da978b82f",
      "parents": [
        "f9827e7343365847010bd25b21da69b1f76bdba4"
      ],
      "author": {
        "name": "dcapwell",
        "email": "dcapwell@apache.org",
        "time": "Thu May 29 15:23:03 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 29 15:23:03 2025 -0700"
      },
      "message": "Add documentation for Accord\u0027s property testing (#196)\n\npatch by David Capwell; reviewed by Jordan West, Stefan Miklosovic for CASSANDRA-20684"
    },
    {
      "commit": "f9827e7343365847010bd25b21da69b1f76bdba4",
      "tree": "3034eddf0419114a7027e160700151a8ad5c350a",
      "parents": [
        "c5a984cfe41bb8d8f1d7a4cb446c194f829a5dd1"
      ],
      "author": {
        "name": "Alex Petrov",
        "email": "oleksandr.petrov@gmail.com",
        "time": "Tue May 27 16:35:35 2025 +0200"
      },
      "committer": {
        "name": "Alex Petrov",
        "email": "alexp@coffeenco.de",
        "time": "Thu May 29 17:21:47 2025 +0200"
      },
      "message": "Mark min epoch - 1 as truncated, i.e. restore previous truncated state\n\nPatch by Alex Petrov; reviewed by Benedict Elliott Smith for CASSANDRA-20675.\n"
    },
    {
      "commit": "c5a984cfe41bb8d8f1d7a4cb446c194f829a5dd1",
      "tree": "74278f76cca9eabe28051ef768664a9003232ab1",
      "parents": [
        "56102d8e100a1665450fa726dabcf1cb2f4b4e36"
      ],
      "author": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Mon Apr 07 14:10:46 2025 +0100"
      },
      "committer": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Thu May 29 12:51:19 2025 +0100"
      },
      "message": "Fixes:\n - cfk pruning+prebootstrap\u003dinvalid future dependency\n - exclude retired ranges when filtering RX stillTouches\n - propagate uses incorrect lowEpoch when fetch finds additional owned/touched ranges\n - node.withEpoch should callback with TopologyRetiredException, not throw\n - Recovery can race with durable-applied pruning; must not send durable unless latest ballot on apply\n - removeRedundantDependencies was not slicing pre-bootstrap range calculation to participating ranges\n - NPE in TopologyManager.atLeast caused by referencing an epoch that has been GC\u0027d\n - use journal durableBeforePersister in burn test, not NOOP_PERSISTER\n - Fix failing invariant check(s), and burn test initialisation\n\npatch by Benedict; reviewed by Alex Petrov for CASSANDRA-20688\n"
    },
    {
      "commit": "56102d8e100a1665450fa726dabcf1cb2f4b4e36",
      "tree": "6f438d672c454c87a25fc62bce29c88bdda9efa8",
      "parents": [
        "7242cb209bb723fc6ba0e7225974b8ec8f86630b"
      ],
      "author": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Thu May 15 12:36:34 2025 +0100"
      },
      "committer": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Fri May 16 12:49:15 2025 +0100"
      },
      "message": "Initialise CommandStores.nextId on restart\n\npatch by Benedict; reviewed by David Capwell for CASSANDRA-20652\n"
    },
    {
      "commit": "7242cb209bb723fc6ba0e7225974b8ec8f86630b",
      "tree": "2dc5494feaad29f47acf5433bf8c3a94a36edb01",
      "parents": [
        "0980e52bf5f14c3bf1353a8d68c10f5accd8c287"
      ],
      "author": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Mon May 12 14:37:01 2025 +0100"
      },
      "committer": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Tue May 13 19:57:18 2025 +0100"
      },
      "message": "Follow-up to CASSANDRA-20641; propagate forceUpdate further\n\npatch by Benedict; reviewed by Alex Petrov for CASSANDRA-20641\n"
    },
    {
      "commit": "0980e52bf5f14c3bf1353a8d68c10f5accd8c287",
      "tree": "91036738c82f0891f58410321caca2419bd26a39",
      "parents": [
        "4918bd6109c79a47e82d95aa85cc37cbfbb15d65"
      ],
      "author": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Mon May 12 14:00:55 2025 +0100"
      },
      "committer": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Tue May 13 19:57:18 2025 +0100"
      },
      "message": "Fix medium path decisions when fast path is delayed\n\npatch by Benedict; reviewed by Ariel Weisberg for CASSANDRA-20644\n"
    },
    {
      "commit": "4918bd6109c79a47e82d95aa85cc37cbfbb15d65",
      "tree": "a417919ea3d587a9f9fe35ee0e54ecf31c798461",
      "parents": [
        "0f9f201f047dbb7780797d018dffef244dc7ea17"
      ],
      "author": {
        "name": "Alex Petrov",
        "email": "oleksandr.petrov@gmail.com",
        "time": "Mon May 12 09:57:32 2025 +0200"
      },
      "committer": {
        "name": "Alex Petrov",
        "email": "oleksandr.petrov@gmail.com",
        "time": "Mon May 12 09:57:32 2025 +0200"
      },
      "message": "Fix durableBefore check on replay\n\nRoot cause of the failure is durable before being loaded into command store before replay, later conflicting with topology replay. We want to relax invariant to allow replay.\n\nERROR 09:52:32 Exception in thread Thread[node3_isolatedExecutor:1,5,isolatedExecutor]\njava.lang.IllegalStateException: null\n\tat accord.utils.Invariants.createIllegalState(Invariants.java:77)\n\tat accord.utils.Invariants.illegalState(Invariants.java:82)\n\tat accord.utils.Invariants.illegalState(Invariants.java:92)\n\tat accord.utils.Invariants.require(Invariants.java:218)\n\tat accord.local.Node.addNewRangesToDurableBefore(Node.java:276)\n\tat accord.local.CommandStores.updateTopology(CommandStores.java:518)\n\tat accord.local.CommandStores.updateTopology(CommandStores.java:843)\n\tat accord.local.Node.onTopologyUpdateInternal(Node.java:333)\n\nPatch by Alex Petrov, reviewed by David Capwell for CASSANDRA-20641\n"
    },
    {
      "commit": "0f9f201f047dbb7780797d018dffef244dc7ea17",
      "tree": "f1344b535bde0a006d39b8047c76325b2a1bdfff",
      "parents": [
        "7f95490b1390b7fc68a4ff4ced7f161bafd8776b"
      ],
      "author": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Fri May 09 13:39:08 2025 -0700"
      },
      "committer": {
        "name": "Alex Petrov",
        "email": "oleksandr.petrov@gmail.com",
        "time": "Mon May 12 09:56:05 2025 +0200"
      },
      "message": "Accord: On restart, while replying the journal the linearizability check logic found incorrect ordering and rejected startup\n\npatch by Benedict Elliott Smith; reviewed by Alex Petrov and David Capwell for CASSANDRA-20641\n"
    },
    {
      "commit": "7f95490b1390b7fc68a4ff4ced7f161bafd8776b",
      "tree": "3b7c06d4c14ba21ff094562738ee6116e5ce10fc",
      "parents": [
        "3825403cc50ef7897d5dfb4cbdca5efbc432e8ee"
      ],
      "author": {
        "name": "dcapwell",
        "email": "dcapwell@apache.org",
        "time": "Fri May 02 14:12:25 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 02 14:12:25 2025 -0700"
      },
      "message": "Enhacned the stateful property test API to have accept a list of commands rather than force a builder (#189)\n\npatch by David Capwell; reviewed by Yifan Cai for CASSANDRA-20577"
    },
    {
      "commit": "3825403cc50ef7897d5dfb4cbdca5efbc432e8ee",
      "tree": "7d3e35f7a8cb560ed0b22dbb6af2dadaccab89c8",
      "parents": [
        "ba151600b1f8f6a493f585810ac14fe35371c762"
      ],
      "author": {
        "name": "dcapwell",
        "email": "dcapwell@apache.org",
        "time": "Mon Apr 28 12:26:20 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 28 12:26:20 2025 -0700"
      },
      "message": "Get accord compiling on JDK 21 (#188)\n\npatch by Alex Petrov, David Capwell; reviewed by Caleb Rackliffe for CASSANDRA-20608"
    },
    {
      "commit": "ba151600b1f8f6a493f585810ac14fe35371c762",
      "tree": "ee9f7324c5cebd373db0dc40282ba795ec7d3384",
      "parents": [
        "134df57677bbd5092994923a4dc2f15cd1d033d1"
      ],
      "author": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Fri Apr 04 12:26:28 2025 +0100"
      },
      "committer": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Tue Apr 22 19:44:54 2025 +0100"
      },
      "message": "Serialization improvements\n\npatch by Benedict; reviewed by David Capwell for CASSANDRA-20578\n"
    },
    {
      "commit": "134df57677bbd5092994923a4dc2f15cd1d033d1",
      "tree": "3177496914eba3c507ab070b56bd4d943ce41885",
      "parents": [
        "fc14a154fd514d4ab40b37508fb9497f786835e0"
      ],
      "author": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Tue Apr 08 20:39:53 2025 +0100"
      },
      "committer": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Thu Apr 10 11:53:18 2025 +0100"
      },
      "message": "Improve Journal table key serialization\nAlso improve:\n - TxnId serialization\n - StoreParticipants serialization\n - compareUnsigned Node.Id for consistency with serialized TxnId\n\npatch by Benedict; reviewed by Alex Petrov for CASSANDRA-20546\n"
    },
    {
      "commit": "fc14a154fd514d4ab40b37508fb9497f786835e0",
      "tree": "74df3d9c001c5d2b28ae8162a860311c11302f38",
      "parents": [
        "1192d253f36d072b056f1d16e292bdf202018758"
      ],
      "author": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Sat Mar 15 09:06:01 2025 +0000"
      },
      "committer": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Wed Apr 09 12:17:08 2025 +0100"
      },
      "message": "Various fixes and improvements\nImprove:\n - InMemoryJournal compaction should simulate files to ensure we compact the same cohorts of records (so shadowing applied correctly)\n - Don\u0027t update CFK deps if already known\n - avoid unnecessary heapification of LogGroupTimers\n - begin removal of Guava (mostly unused)\n - consider medium path on fast path delayed\n - add Seekables.indexOf to support faster serialization\n - unboxed Invariant.requires variant\n - AsyncChains.addCallback -\u003e invoke\nFix:\n - Recovery must wait for earlier transactions on shards that have not yet been accepted, even if we recover a fast Stable record on another shard\n - only skip Dep calculation on PreAccept if vote is required by coordinator\n - ReadTracker must slice Minimal the first unavailable collection\n - If PreLoadContext cannot acquire shared caches, still consider existing contents\n - CFK: make sure to insert UNSTABLE into missing array\n - Fix failed task stops DelayedCommandStore task queue processing further tasks\n - short circuit AbstractRanges.equals()\n - Handle edge case where we can take fast/medium path but one of the Deps replies contains a future TxnId\n - update executeAtEpoch when retryInFutureEpoch\n - Fix incorrect validation in validateMissing (should only validate newInfo is not in missing when in witnessedBy; all other additions should be included)\n\npatch by Benedict; reviewed by David Capwell for CASSANDRA-20522\n"
    },
    {
      "commit": "1192d253f36d072b056f1d16e292bdf202018758",
      "tree": "3a61b7c4e0b20778bcebedaffc8169da250d4dd5",
      "parents": [
        "0a5446a365fe7eb1a15b6a2d0d72f9475c51bc47"
      ],
      "author": {
        "name": "dcapwell",
        "email": "dcapwell@apache.org",
        "time": "Sat Mar 15 14:55:05 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Mar 15 14:55:05 2025 -0700"
      },
      "message": "Accord: when Keys has token conflicts, this lead to issues with Routes and containsAll (#182)\n\npatch by Benedict Elliott Smith, David Capwell; reviewed by Benedict Elliott Smith for CASSANDRA-20443"
    },
    {
      "commit": "0a5446a365fe7eb1a15b6a2d0d72f9475c51bc47",
      "tree": "8746ecdf2bccc67dd5f4e1f1506ffedbaabec698",
      "parents": [
        "c7379e12bd8f8732004cb77264801fe157af1dbe"
      ],
      "author": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Thu Mar 13 12:39:09 2025 +0000"
      },
      "committer": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Fri Mar 14 20:01:12 2025 +0000"
      },
      "message": "Fix:\n - StoreParticipants.touches behaviour for RX was erroneously modified; should touch all non-redundant ranges including those no longer owned\n - Support improved partial compaction\n - SetShardDurable should correctly set DurableBefore Majority/Universal based on the Durability parameter\n - fix erroneous prunedBefore invariant\n - unset superseding rather than set null, so can omit empty\n - Don\u0027t save updates to ERASED\n - Simplify CommandChange.getFlags\n - fix handling of Durability for Invalidated\n - Don\u0027t use ApplyAt for GC_BEFORE with partial input, as might be a saveStatus \u003e\u003d ApplyAtKnown but with executeAt \u003c ApplyAtKnown\n\npatch by Benedict; reviewed by Alex Petrov for CASSANDRA-20441\n"
    },
    {
      "commit": "c7379e12bd8f8732004cb77264801fe157af1dbe",
      "tree": "866bbf16d1f28a4c692c6bd35f4ccce117e7d86c",
      "parents": [
        "62b6d6883b689236efb375b6efa7f2350d8d771d"
      ],
      "author": {
        "name": "Alex Petrov",
        "email": "oleksandr.petrov@gmail.com",
        "time": "Wed Mar 12 20:28:15 2025 +0100"
      },
      "committer": {
        "name": "Alex Petrov",
        "email": "oleksandr.petrov@gmail.com",
        "time": "Wed Mar 12 21:00:04 2025 +0100"
      },
      "message": "Turn pruning back on\n\nPatch by Alex Petrov; reviewed by Benedict Elliott Smith for CASSANDRA-20114\n"
    },
    {
      "commit": "62b6d6883b689236efb375b6efa7f2350d8d771d",
      "tree": "ce96828b0632b396d6123117544803bb835678ba",
      "parents": [
        "2025bcf1a6ec9f572177616fc5b6ee8714cf8f77"
      ],
      "author": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Wed Mar 05 14:09:34 2025 +0000"
      },
      "committer": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Wed Mar 12 18:12:31 2025 +0000"
      },
      "message": "Fix:\n - Fast path stable commits must not override recovery propose/commit decisions regarding visibility of a transaction\n - RejectBefore must mergeMax, not merge, to ensure we maintain epoch and hlc increasing independently\n - Bad commitInvalidate decision\n - consistent filtering for touches and stillTouches\n - ensure TRUNCATE_BEFORE implies SHARD_APPLIED\n - TopologyManager.unsyncedOnly off-by-one error\n - DurabilityQueue should not retry SyncPointErased\n - handle rare case of no deps but none needed\n - not updating CFK synchronously on recovery, which can lead to erroneous recovery decisions for other transactions\n - Don\u0027t return partial read response when one commandStore rejects the commit\n - Filter touches/stillTouches consistently\n - WaitingState computeLowEpoch must use hasTouched to handle historic key with no route\n - Propagate TopologyRetiredException\n - InMemoryJournal partial compaction incorrectly appending new diffs to end, rather than position of input\n - Incorrect logic ensuring we save applyAt with participants+saveStatus to ensure expunging can be done correctly\n - CommandChange should not pre-filter cleanup by participants presence\n - Cleanup.filter should not modify EXPUNGE; we obviously still want to expunge Invalidated\n - Remove invariant that is incompatible with partial compaction\nImprove:\n - Use format parameters to defer building Invariants.requireArgument string\n - streamline RedundantStatus/RedundantBefore\n\npatch by Benedict; reviewed by Alex Petrov for CASSANDRA-20427\n"
    },
    {
      "commit": "2025bcf1a6ec9f572177616fc5b6ee8714cf8f77",
      "tree": "70045b332093e87c5249ab740a8c728308f18741",
      "parents": [
        "fe306fc5539b40d1c9d49f9afd0ca45bb74c49d3"
      ],
      "author": {
        "name": "Alex Petrov",
        "email": "oleksandr.petrov@gmail.com",
        "time": "Thu Feb 13 17:11:02 2025 +0100"
      },
      "committer": {
        "name": "Alex Petrov",
        "email": "oleksandr.petrov@gmail.com",
        "time": "Mon Mar 10 17:43:11 2025 +0100"
      },
      "message": "Improve partial compaction\n\nPatch by Alex Petrov; reviewed by Benedict Elliott Smith for CASSANDRA-20424.\n"
    },
    {
      "commit": "fe306fc5539b40d1c9d49f9afd0ca45bb74c49d3",
      "tree": "96faa1a2dc96157f8e91bf271c5938e1ebb1e8e5",
      "parents": [
        "f9dc83e404253645db02d54c913174b796fae123"
      ],
      "author": {
        "name": "Alex Petrov",
        "email": "oleksandr.petrov@gmail.com",
        "time": "Mon Feb 17 18:49:40 2025 +0100"
      },
      "committer": {
        "name": "Alex Petrov",
        "email": "oleksandr.petrov@gmail.com",
        "time": "Mon Mar 10 12:39:37 2025 +0100"
      },
      "message": "Epoch/Topology Garbage Collection\n\nPatch by Alex Petrov; reviewed by Benedict Elliott Smith for CASSANDRA-20347.\n"
    },
    {
      "commit": "f9dc83e404253645db02d54c913174b796fae123",
      "tree": "b57e72243271005a69087751c3880756610bc216",
      "parents": [
        "2b9e54004f702c7b626e94391af21fa080292975"
      ],
      "author": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Mon Feb 03 09:22:26 2025 +0000"
      },
      "committer": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Tue Mar 04 14:53:52 2025 +0000"
      },
      "message": "Integrate RX with Cassandra Repair, so that repair safely flushes pending topology and other durability requirements.\nAlso improve:\n - Introduce DurabilityService\n - Retire SyncPoint, replace Barrier with Write and RX\n - MessageType -\u003e enum, restore GetMaxConflict\n - Standardise backoff logic with WaitStrategy\n - Forbid KX, remove directKeyDeps\n - Introduce UniqueTimeService, permitting hlc reservations for sync points avoid delay when min TxnId is sufficiently in the past\n - Remove ListStore custom purge logic\nAlso fix:\n - RejectBefore should reject on both epoch and hlc\n - Do not record sync success for removed nodes\n - Support GlobalDurability detecting no command store to run on\n - Incorrect ballot constructor\n - Serializing 15-bit ballot flags incorrectly\n - TopologyManager.hasEpoch deadlock\n - Computing withOpenEpochs incorrectly, sometimes stopping one epoch short\n\npatch by Benedict; reviewed by Alex Petrov for CASSANDRA-20395\n"
    },
    {
      "commit": "2b9e54004f702c7b626e94391af21fa080292975",
      "tree": "a7963659fb018f53bc33241c454f01b92abdeee8",
      "parents": [
        "a341979bd8fc1d26192cd6bc1edb145e7945e2e9"
      ],
      "author": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Sun Feb 23 22:14:31 2025 +0000"
      },
      "committer": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Wed Feb 26 15:15:33 2025 +0000"
      },
      "message": "Accord fixes:\n - Bad ArrayBuffers recycling logic\n - RX must ensure dependencies TRANSITIVE_VISIBLE\n - Permit constructing \"antiRange\" that spans multiple prefixes\n - Not computing range CommandSummary IsDep correctly\n - Truncated commands that aren\u0027t shard durable could not repopulate CFK on replay, permitting recovery of another command to make an incorrect decision\n - NPE on async persist of RX (i.e. supplying no callback)\n - NPE in Builder.shouldCleanup when durability is null\n\npatch by Benedict; reviewed by Alex Petrov for CASSANDRA-20370\n"
    },
    {
      "commit": "a341979bd8fc1d26192cd6bc1edb145e7945e2e9",
      "tree": "351ca169364d8f1e3debcf0c034af7d9707f51cc",
      "parents": [
        "58f107625a183d77b154221efd2f6f0623214027"
      ],
      "author": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Wed Feb 19 09:46:16 2025 +0000"
      },
      "committer": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Sat Feb 22 23:58:39 2025 +0000"
      },
      "message": "Fix:\n - Flush RangesForEpoch updates to journal immediately, so we do not rely on the command we are processing succeeding\n - DurableBefore updates must wait for the epochs to be known locally\n - Shard.mustWitnessEpoch to support guaranteeing to witness relevant non-topology schema changes\n - We must propagate RedundantBefore RX shard bounds along with epoch syncs\n - Prevent a truncated transaction FetchData infinite loop\n - GC_BEFORE status being overwritten by bootstrappedAt, permitting old transaction state to be resurrected\n - Avoid CFK.maxUniqueHlc read race on bootstrap\n - TopologyManager.awaitEpoch could wait for wrong epoch\n - mayFilterStaleOrPreBootstrapOrRetiredOrNotOwned was incorrectly deciding possibility of Retired\n - Incorrectly not processing deps when first loading a maybe-pruned command\n - CFK prunedBefore must take a higher executeAt AND txnId than prior prunedBefore, so that we can reliably determine if an old transaction has been pruned\nAlso improve:\n - CommandStores uses SearchableRangeList for finding matching stores\n - Refactor RedundantBefore to use a sorted array of TxnId/RedundantStatus pairs (to better fix GC_BEFORE issue)\n - Accord debug keyspace operates on keyspace/table, and sorts correctly by token\n\npatch by Benedict; reviewed by Alex Petrov for CASSANDRA-20361\n"
    },
    {
      "commit": "58f107625a183d77b154221efd2f6f0623214027",
      "tree": "32a54997d39b22184d656caaa9057511b2833217",
      "parents": [
        "a4a8255bebb6804b8f55289f2fbc846a5253e66c"
      ],
      "author": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Sat Feb 15 15:13:40 2025 +0000"
      },
      "committer": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Sat Feb 22 11:45:58 2025 +0000"
      },
      "message": "Accord: Serialization Improvements\n\n- Introduce pre/accept fast execution flags\n\npatch by Benedict; reviewed by Alex Petrov for CASSANDRA-20349\n"
    },
    {
      "commit": "a4a8255bebb6804b8f55289f2fbc846a5253e66c",
      "tree": "e186bc2bbc459051882e05905196075c490645fc",
      "parents": [
        "1542da5d8acf08b8226227c91d4f81c64ed9762c"
      ],
      "author": {
        "name": "Alex Petrov",
        "email": "oleksandr.petrov@gmail.com",
        "time": "Fri Feb 07 19:03:21 2025 +0100"
      },
      "committer": {
        "name": "Alex Petrov",
        "email": "oleksandr.petrov@gmail.com",
        "time": "Thu Feb 20 09:41:41 2025 +0100"
      },
      "message": "Fix AccordMigrationTest, preclude possible races in topology propagation\n\nPatch by Alex Petrov; reviewed by Benedict Elliott Smith for CASSANDRA-20316\n"
    },
    {
      "commit": "1542da5d8acf08b8226227c91d4f81c64ed9762c",
      "tree": "2fb0d542fcc4697d03c3f1291c4d883a84c3ee86",
      "parents": [
        "74a3b81ca9d9e1ce7ddfd117682fc7c310f0cd99"
      ],
      "author": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Thu Feb 06 12:28:49 2025 +0000"
      },
      "committer": {
        "name": "Benedict Elliott Smith",
        "email": "benedict@apache.org",
        "time": "Mon Feb 17 09:36:59 2025 +0000"
      },
      "message": "Fix recovery when one shard is committed/stable and another is preaccepted\nAlso fix:\n - Topology slicing must declare whether we share/slice node ownership (to assist above)\n - CFK.visit removes transitive dependencies too eagerly across epoch change\n - apply cleanup to builder consistently, and construct the same value we would produce by purge (so that replay is idempotent)\n - Invoke ExecuteTxn.LocalExecute callbacks on originating CommandStore\n - CFK load pruned can race with regular callback; both should invoke callback to test if potentially pruned (whether or not isLoadingPruned)\n - misc other minor issues\n\npatch by Benedict; reviewed by Alex Petrov for CASSANDRA-20325\n"
    }
  ],
  "next": "74a3b81ca9d9e1ce7ddfd117682fc7c310f0cd99"
}
