Commit f6fd495
committed
Improve DurabilityQueue:
- All retries are appended to a delay queue so overlaps can be pruned
- Quorum successes are not retried if there are superseding sync points covering the ranges
- User-initiated requests are not purged unless the request has timed out or otherwise completed
- Overlapping requests are queued up against the next to run
Alsp (C*):
- Catch-up with quorums on restart
- Manage an ordered set of keys in cache for faster range searches
Also (Accord):
- Update copy of BTree and import IntervalBTree
- Fix RedundantStatus WAS_OWNED_OVERRIDE_MASK
- Add Catchup mechanism to reach parity with a quorum on restart
patch by Benedict; reviewed by Alex Petrov for CASSANDRA-210131 parent 4b7ef7c commit f6fd495
File tree
14 files changed
+702
-89
lines changed- modules
- src/java/org/apache/cassandra
- config
- service/accord
- serializers
- utils/btree
- test
- distributed/org/apache/cassandra/distributed/test/accord
- journal
- unit/org/apache/cassandra/utils
14 files changed
+702
-89
lines changed- accord-core/src/main/java/accord/coordinate/CoordinateSyncPoint.java+27-25
- accord-core/src/main/java/accord/coordinate/Coordination.java+1-1
- accord-core/src/main/java/accord/coordinate/CoordinationAdapter.java+12-12
- accord-core/src/main/java/accord/coordinate/ExecuteSyncPoint.java+31-27
- accord-core/src/main/java/accord/coordinate/FetchCoordinator.java+3-3
- accord-core/src/main/java/accord/coordinate/FetchDurableBefore.java+122
- accord-core/src/main/java/accord/coordinate/tracking/DurabilityTracker.java+62-7
- accord-core/src/main/java/accord/impl/AbstractFetchCoordinator.java+1-1
- accord-core/src/main/java/accord/local/Bootstrap.java-1
- accord-core/src/main/java/accord/local/Catchup.java+130
- accord-core/src/main/java/accord/local/CommandStore.java+24
- accord-core/src/main/java/accord/local/RedundantStatus.java+1-1
- accord-core/src/main/java/accord/local/SafeCommandStore.java+18-1
- accord-core/src/main/java/accord/local/SyncPointListener.java+24
- accord-core/src/main/java/accord/local/cfk/PostProcess.java-2
- accord-core/src/main/java/accord/local/durability/DurabilityLevel.java+140
- accord-core/src/main/java/accord/local/durability/DurabilityQueue.java+569-188
- accord-core/src/main/java/accord/local/durability/DurabilityRequest.java+65-47
- accord-core/src/main/java/accord/local/durability/DurabilityResult.java+33-35
- accord-core/src/main/java/accord/local/durability/DurabilityService.java+13-7
- accord-core/src/main/java/accord/local/durability/GlobalDurability.java+1-1
- accord-core/src/main/java/accord/local/durability/ShardDurability.java+2-2
- accord-core/src/main/java/accord/messages/GetDurableBefore.java+4-4
- accord-core/src/main/java/accord/messages/ReadData.java+1-1
- accord-core/src/main/java/accord/messages/SetShardDurable.java+10-10
- accord-core/src/main/java/accord/primitives/MinimalSyncPoint.java+73
- accord-core/src/main/java/accord/primitives/PartialSyncPoint.java+73
- accord-core/src/main/java/accord/primitives/Range.java+5
- accord-core/src/main/java/accord/primitives/SyncPoint.java+5-43
- accord-core/src/main/java/accord/topology/TopologyManager.java+4-2
- accord-core/src/main/java/accord/utils/ReducingIntervalMap.java+13
- accord-core/src/main/java/accord/utils/ReducingRangeMap.java+11-11
- accord-core/src/main/java/accord/utils/SimpleBitSet.java+1
- accord-core/src/main/java/accord/utils/SmallBitSet.java+6
- accord-core/src/main/java/accord/utils/async/AsyncChains.java+1-1
- accord-core/src/main/java/accord/utils/btree/BTree.java+568-284
- accord-core/src/main/java/accord/utils/btree/BTreeRemoval.java+15-14
- accord-core/src/main/java/accord/utils/btree/BTreeSearchIterator.java+1-1
- accord-core/src/main/java/accord/utils/btree/FullBTreeSearchIterator.java+25-2
- accord-core/src/main/java/accord/utils/btree/IntervalBTree.java+644
- accord-core/src/main/java/accord/utils/btree/LeafBTreeSearchIterator.java+9
- accord-core/src/main/java/accord/utils/btree/PeekingSearchIterator.java+30
- accord-core/src/main/java/accord/utils/btree/TreeCursor.java+1-1
- accord-core/src/test/java/accord/coordinate/CoordinateSyncPointTest.java+2-2
- accord-core/src/test/java/accord/impl/basic/Cluster.java+6-65
- accord-core/src/test/java/accord/impl/basic/RecurringPendingRunnable.java+2-2
- accord-core/src/test/java/accord/impl/list/ListFetchCoordinator.java+1-1
- accord-core/src/test/java/accord/impl/list/ListStore.java+4-3
- accord-core/src/test/java/accord/local/durability/DurabilityQueueTest.java+472
- accord-core/src/test/java/accord/utils/QueueScheduler.java+100
- accord-core/src/test/java/accord/utils/SimpleBitSetTest.java+6
- accord-core/src/test/resources/burn-logback.xml+3-2
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
178 | 178 | | |
179 | 179 | | |
180 | 180 | | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
181 | 188 | | |
182 | 189 | | |
183 | 190 | | |
| |||
Lines changed: 35 additions & 14 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
21 | 21 | | |
22 | 22 | | |
23 | 23 | | |
| 24 | + | |
24 | 25 | | |
25 | 26 | | |
26 | 27 | | |
27 | 28 | | |
28 | | - | |
29 | 29 | | |
30 | 30 | | |
31 | 31 | | |
32 | 32 | | |
33 | 33 | | |
34 | 34 | | |
35 | | - | |
36 | | - | |
37 | 35 | | |
38 | 36 | | |
39 | 37 | | |
| |||
68 | 66 | | |
69 | 67 | | |
70 | 68 | | |
| 69 | + | |
71 | 70 | | |
72 | 71 | | |
73 | 72 | | |
| |||
112 | 111 | | |
113 | 112 | | |
114 | 113 | | |
| 114 | + | |
115 | 115 | | |
116 | 116 | | |
117 | 117 | | |
| |||
274 | 274 | | |
275 | 275 | | |
276 | 276 | | |
277 | | - | |
| 277 | + | |
278 | 278 | | |
279 | 279 | | |
280 | 280 | | |
| |||
297 | 297 | | |
298 | 298 | | |
299 | 299 | | |
300 | | - | |
| 300 | + | |
301 | 301 | | |
302 | 302 | | |
303 | 303 | | |
| |||
400 | 400 | | |
401 | 401 | | |
402 | 402 | | |
| 403 | + | |
| 404 | + | |
403 | 405 | | |
404 | 406 | | |
405 | 407 | | |
| |||
435 | 437 | | |
436 | 438 | | |
437 | 439 | | |
438 | | - | |
439 | 440 | | |
440 | 441 | | |
441 | 442 | | |
| |||
454 | 455 | | |
455 | 456 | | |
456 | 457 | | |
457 | | - | |
458 | 458 | | |
| 459 | + | |
| 460 | + | |
| 461 | + | |
459 | 462 | | |
460 | 463 | | |
461 | 464 | | |
| |||
555 | 558 | | |
556 | 559 | | |
557 | 560 | | |
558 | | - | |
| 561 | + | |
559 | 562 | | |
560 | | - | |
| 563 | + | |
| 564 | + | |
| 565 | + | |
| 566 | + | |
561 | 567 | | |
562 | 568 | | |
563 | 569 | | |
564 | 570 | | |
565 | 571 | | |
566 | 572 | | |
567 | 573 | | |
| 574 | + | |
| 575 | + | |
| 576 | + | |
| 577 | + | |
| 578 | + | |
| 579 | + | |
| 580 | + | |
| 581 | + | |
568 | 582 | | |
569 | 583 | | |
570 | 584 | | |
| |||
602 | 616 | | |
603 | 617 | | |
604 | 618 | | |
605 | | - | |
606 | | - | |
607 | | - | |
608 | | - | |
609 | | - | |
610 | 619 | | |
611 | 620 | | |
612 | 621 | | |
| |||
1039 | 1048 | | |
1040 | 1049 | | |
1041 | 1050 | | |
| 1051 | + | |
| 1052 | + | |
| 1053 | + | |
| 1054 | + | |
| 1055 | + | |
| 1056 | + | |
1042 | 1057 | | |
1043 | 1058 | | |
1044 | 1059 | | |
| |||
1148 | 1163 | | |
1149 | 1164 | | |
1150 | 1165 | | |
| 1166 | + | |
| 1167 | + | |
| 1168 | + | |
| 1169 | + | |
| 1170 | + | |
| 1171 | + | |
1151 | 1172 | | |
1152 | 1173 | | |
1153 | 1174 | | |
| |||
Lines changed: 9 additions & 4 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
55 | 55 | | |
56 | 56 | | |
57 | 57 | | |
| 58 | + | |
58 | 59 | | |
59 | 60 | | |
60 | 61 | | |
| |||
490 | 491 | | |
491 | 492 | | |
492 | 493 | | |
493 | | - | |
| 494 | + | |
494 | 495 | | |
495 | | - | |
| 496 | + | |
496 | 497 | | |
497 | | - | |
498 | | - | |
| 498 | + | |
| 499 | + | |
| 500 | + | |
| 501 | + | |
| 502 | + | |
| 503 | + | |
499 | 504 | | |
500 | 505 | | |
501 | 506 | | |
| |||
0 commit comments