Split out EntryStore.markLastApplied() 66/116266/12
authorRobert Varga <robert.varga@pantheon.tech>
Tue, 15 Apr 2025 00:02:32 +0000 (02:02 +0200)
committerRobert Varga <nite@hq.sk>
Wed, 16 Apr 2025 22:54:23 +0000 (22:54 +0000)
commitc62d99dd9893356deec6f3245294efb7b4279fe4
treebaf20c0d3784bd075b93039c67406c3782f4170e
parent904bf7490b2d0b821819f12fe8cf4553c86cbd66
Split out EntryStore.markLastApplied()

Rather than going to through an async message, mark the last applied
index through persistence.

This eliminate one of the possibilities for persistAsync() and also
reduces latency and improves accuracy.

Since we are no longer sending ApplyJournalEntries to self, we also need
to switch tests to synchronize on applyIndex instead.

JIRA: CONTROLLER-2137
Change-Id: Id5aa178aa721b5086163d7b721b9447b80724d7e
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
22 files changed:
raft/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/PekkoRaftStorage.java
raft/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/RaftActor.java
raft/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/ReplicatedLog.java
raft/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/ReplicatedLogImpl.java
raft/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/behaviors/RaftActorBehavior.java
raft/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/persisted/AJE.java
raft/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/persisted/ApplyJournalEntries.java
raft/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/spi/EntryStore.java
raft/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/spi/ForwardingDataPersistenceProvider.java
raft/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/spi/ImmediateDataPersistenceProvider.java
raft/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/AbstractActorTest.java
raft/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/AbstractRaftActorIntegrationTest.java
raft/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/IsolationScenarioTest.java
raft/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/MockRaftActorContext.java
raft/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/MockReplicatedLog.java
raft/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/RaftActorServerConfigurationSupportTest.java
raft/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/RaftActorTest.java
raft/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/RecoveryIntegrationSingleNodeTest.java
raft/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/RecoveryIntegrationTest.java
raft/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/ReplicationAndSnapshotsIntegrationTest.java
raft/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/ReplicationAndSnapshotsWithLaggingFollowerIntegrationTest.java
raft/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/behaviors/LeaderTest.java