Commit aa5c3ab
committed
Improve Topology Management
Merge ConfigurationService with TopologyManager to remove cyclic dependency and duplicated work.
Also:
- Improve visibility of work blocking topology processing
- Ensure we cannot double-count peers when deciding an epoch's distributed readiness
- Remove the possibility of distributed stalls, by processing new topologies as soon as a
contiguous sequence is known locally, regardless of whether anyprior local epoch is ready to
coordinate or has recorded this fact to peers. The notification of local readiness continues
to be processed only once all prior epochs are ready, but we can begin using and readying
later epochs immediately.
patch by Benedict; reviewed by Alex Petrov for CASSANDRA-209981 parent 1a96b88 commit aa5c3ab
File tree
40 files changed
+662
-1378
lines changed- modules
- src/java/org/apache/cassandra
- db/virtual
- service
- accord
- api
- interop
- journal
- repair
- serializers
- tcm
- sequences
- transformations
- test
- distributed/org/apache/cassandra/distributed
- test/accord
- journal
- simulator/test/org/apache/cassandra/simulator/test
- unit/org/apache/cassandra
- db/virtual
- index/accord
- service/accord
- serializers
- utils
40 files changed
+662
-1378
lines changed- accord-core/src/main/java/accord/api/Agent.java+1
- accord-core/src/main/java/accord/api/ConfigurationService.java-224
- accord-core/src/main/java/accord/api/MessageSink.java+8
- accord-core/src/main/java/accord/api/TopologyListener.java+71
- accord-core/src/main/java/accord/api/TopologyService.java+9-2
- accord-core/src/main/java/accord/coordinate/AbstractCoordinatePreAccept.java+2-2
- accord-core/src/main/java/accord/coordinate/CheckShards.java+1-1
- accord-core/src/main/java/accord/coordinate/CollectLatestDeps.java+1-1
- accord-core/src/main/java/accord/coordinate/CoordinateEphemeralRead.java+3-3
- accord-core/src/main/java/accord/coordinate/CoordinateMaxConflict.java+2-2
- accord-core/src/main/java/accord/coordinate/CoordinatePreAccept.java+1-1
- accord-core/src/main/java/accord/coordinate/CoordinateSyncPoint.java+2-2
- accord-core/src/main/java/accord/coordinate/CoordinateTransaction.java+1-1
- accord-core/src/main/java/accord/coordinate/CoordinationAdapter.java+22-16
- accord-core/src/main/java/accord/coordinate/ExecuteEphemeralRead.java+1-1
- accord-core/src/main/java/accord/coordinate/ExecuteSyncPoint.java+4-2
- accord-core/src/main/java/accord/coordinate/FetchCoordinator.java+1-1
- accord-core/src/main/java/accord/coordinate/FetchData.java+2-1
- accord-core/src/main/java/accord/coordinate/FetchRoute.java+1-1
- accord-core/src/main/java/accord/coordinate/Invalidate.java+1-1
- accord-core/src/main/java/accord/coordinate/KeyBarriers.java+1-1
- accord-core/src/main/java/accord/coordinate/Persist.java+1-1
- accord-core/src/main/java/accord/coordinate/PrepareRecovery.java+1-1
- accord-core/src/main/java/accord/coordinate/Propose.java+1-1
- accord-core/src/main/java/accord/coordinate/Recover.java+4-4
- accord-core/src/main/java/accord/coordinate/Stabilise.java+1-1
- accord-core/src/main/java/accord/impl/AbstractConfigurationService.java-495
- accord-core/src/main/java/accord/impl/progresslog/PackedKeyTracker.java+1-1
- accord-core/src/main/java/accord/impl/progresslog/WaitingState.java+1-1
- accord-core/src/main/java/accord/local/Bootstrap.java+11-5
- accord-core/src/main/java/accord/local/CommandStore.java+18-15
- accord-core/src/main/java/accord/local/CommandStores.java+15-12
- accord-core/src/main/java/accord/local/Node.java+44-102
- accord-core/src/main/java/accord/local/StoreParticipants.java+1-1
- accord-core/src/main/java/accord/local/durability/DurabilityQueue.java+2-2
- accord-core/src/main/java/accord/local/durability/DurabilityService.java+16-18
- accord-core/src/main/java/accord/messages/Commit.java+5-2
- accord-core/src/main/java/accord/messages/GetEphemeralReadDeps.java+1-1
- accord-core/src/main/java/accord/messages/InformDurable.java+3-1
- accord-core/src/main/java/accord/primitives/LatestDeps.java+3-3
- accord-core/src/main/java/accord/topology/ActiveEpoch.java+215
- accord-core/src/main/java/accord/topology/ActiveEpochs.java+719
- accord-core/src/main/java/accord/topology/EpochReady.java+117
- accord-core/src/main/java/accord/topology/PendingEpoch.java+182
- accord-core/src/main/java/accord/topology/PendingEpochs.java+163
- accord-core/src/main/java/accord/topology/SelectTopology.java+5-8
- accord-core/src/main/java/accord/topology/TopologyCollector.java+250
- accord-core/src/main/java/accord/topology/TopologyManager.java+287-1.5k
- accord-core/src/main/java/accord/topology/TopologyRange.java+105
- accord-core/src/main/java/accord/topology/TopologyRetiredException.java+32
- accord-core/src/main/java/accord/utils/async/AsyncChains.java+6
- accord-core/src/main/java/accord/utils/async/AsyncCombiner.java+44-6
- accord-core/src/main/java/accord/utils/async/AsyncResults.java+67-7
- accord-core/src/main/java/accord/utils/async/NestedAsyncResult.java+81
- accord-core/src/test/java/accord/Utils.java+19-13
- accord-core/src/test/java/accord/burn/BurnTestTopologyService.java+48-68
- accord-core/src/test/java/accord/burn/TopologyUpdates.java+4-5
- accord-core/src/test/java/accord/coordinate/CoordinateSyncPointTest.java+6-6
- accord-core/src/test/java/accord/coordinate/TopologyChangeTest.java+24-21
- accord-core/src/test/java/accord/impl/AbstractConfigurationServiceTest.java-331
- accord-core/src/test/java/accord/impl/AbstractTestConfigurationService.java-62
- accord-core/src/test/java/accord/impl/TestAgent.java+6
- accord-core/src/test/java/accord/impl/basic/Cluster.java+5-5
- accord-core/src/test/java/accord/impl/list/ListAgent.java+9-2
- accord-core/src/test/java/accord/impl/list/ListRequest.java+2-2
- accord-core/src/test/java/accord/impl/list/ListStore.java+5-20
- accord-core/src/test/java/accord/impl/mock/MockCluster.java+9-35
- accord-core/src/test/java/accord/impl/mock/MockConfigurationService.java-137
- accord-core/src/test/java/accord/impl/mock/MockTopologyService.java+85
- accord-core/src/test/java/accord/local/CommandsTest.java+1-2
- accord-core/src/test/java/accord/local/ImmutableCommandTest.java+5-6
- accord-core/src/test/java/accord/local/NodeTest.java+1-3
- accord-core/src/test/java/accord/local/cfk/CommandsForKeyTest.java+6
- accord-core/src/test/java/accord/messages/PreAcceptTest.java+2-3
- accord-core/src/test/java/accord/topology/PendingEpochsTest.java+96
- accord-core/src/test/java/accord/topology/ShardTest.java-21
- accord-core/src/test/java/accord/topology/TopologyManagerTest.java+123-102
- accord-maelstrom/src/main/java/accord/maelstrom/Cluster.java+1-1
- accord-maelstrom/src/main/java/accord/maelstrom/MaelstromAgent.java+6
- accord-maelstrom/src/main/java/accord/maelstrom/Main.java+1-1
- accord-maelstrom/src/main/java/accord/maelstrom/SimpleTopologyService.java+12-41
Lines changed: 5 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
56 | 56 | | |
57 | 57 | | |
58 | 58 | | |
| 59 | + | |
| 60 | + | |
59 | 61 | | |
60 | 62 | | |
61 | 63 | | |
| |||
2166 | 2168 | | |
2167 | 2169 | | |
2168 | 2170 | | |
2169 | | - | |
| 2171 | + | |
2170 | 2172 | | |
2171 | 2173 | | |
2172 | 2174 | | |
| |||
2177 | 2179 | | |
2178 | 2180 | | |
2179 | 2181 | | |
2180 | | - | |
| 2182 | + | |
2181 | 2183 | | |
| 2184 | + | |
2182 | 2185 | | |
2183 | 2186 | | |
2184 | 2187 | | |
| |||
Lines changed: 19 additions & 26 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
32 | 32 | | |
33 | 33 | | |
34 | 34 | | |
35 | | - | |
36 | | - | |
37 | | - | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
38 | 38 | | |
39 | 39 | | |
40 | 40 | | |
| |||
46 | 46 | | |
47 | 47 | | |
48 | 48 | | |
49 | | - | |
50 | | - | |
51 | 49 | | |
52 | 50 | | |
53 | 51 | | |
| |||
79 | 77 | | |
80 | 78 | | |
81 | 79 | | |
82 | | - | |
| 80 | + | |
83 | 81 | | |
84 | 82 | | |
85 | 83 | | |
| |||
94 | 92 | | |
95 | 93 | | |
96 | 94 | | |
97 | | - | |
98 | | - | |
| 95 | + | |
| 96 | + | |
99 | 97 | | |
100 | | - | |
101 | | - | |
102 | | - | |
103 | | - | |
104 | | - | |
105 | | - | |
106 | | - | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
107 | 105 | | |
108 | 106 | | |
109 | 107 | | |
| |||
133 | 131 | | |
134 | 132 | | |
135 | 133 | | |
136 | | - | |
137 | | - | |
| 134 | + | |
| 135 | + | |
138 | 136 | | |
139 | 137 | | |
140 | 138 | | |
141 | | - | |
142 | | - | |
143 | | - | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
144 | 142 | | |
145 | 143 | | |
146 | 144 | | |
147 | 145 | | |
148 | 146 | | |
149 | 147 | | |
150 | | - | |
| 148 | + | |
151 | 149 | | |
152 | 150 | | |
153 | 151 | | |
| |||
179 | 177 | | |
180 | 178 | | |
181 | 179 | | |
182 | | - | |
183 | | - | |
184 | | - | |
185 | | - | |
186 | | - | |
187 | 180 | | |
188 | 181 | | |
189 | 182 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
33 | 33 | | |
34 | 34 | | |
35 | 35 | | |
36 | | - | |
| 36 | + | |
37 | 37 | | |
38 | 38 | | |
39 | 39 | | |
| |||
0 commit comments