Skip to content

RATIS-1931. [DO-NOT-MERGE] Rebase gRPC zero-copy changes onto master.#1453

Draft
slfan1989 wants to merge 26 commits intoapache:masterfrom
slfan1989:RATIS-1931-grpc-zero-rebase-v2
Draft

RATIS-1931. [DO-NOT-MERGE] Rebase gRPC zero-copy changes onto master.#1453
slfan1989 wants to merge 26 commits intoapache:masterfrom
slfan1989:RATIS-1931-grpc-zero-rebase-v2

Conversation

@slfan1989
Copy link
Copy Markdown
Contributor

What changes were proposed in this pull request?

This pull request rebases the gRPC zero-copy work from RATIS-1931_grpc-zero-copy onto the latest master.

The replayed changes include the gRPC zero-copy implementation and related follow-up fixes, while resolving compatibility conflicts with the current master branch. During the replay, master-side module metadata and current
build layout were preserved where applicable.

What is the link to the Apache JIRA

JIRA: RATIS-1931. Support Zero-Copy in ratis-grpc.

How was this patch tested?

(Please explain how this patch was tested. Ex: unit tests, manual tests)
(If this patch involves UI changes, please attach a screen-shot; otherwise, remove this)

duongkame and others added 26 commits May 7, 2026 13:38
…tries buffer for stateMachineCache' (apache#1096)

(cherry picked from commit e002587)
…ogEntry and stateMachineContext. (apache#1106)

(cherry picked from commit a2bdd10)
@slfan1989 slfan1989 changed the title [DO-NOT-MERGE] RATIS-1931. Rebase gRPC zero-copy changes onto master. RATIS-1931. Rebase gRPC zero-copy changes onto master. May 7, 2026
@slfan1989 slfan1989 closed this May 7, 2026
@slfan1989 slfan1989 reopened this May 7, 2026
@slfan1989 slfan1989 changed the title RATIS-1931. Rebase gRPC zero-copy changes onto master. RATIS-1931. [DO-NOT-MERGE] Rebase gRPC zero-copy changes onto master. May 7, 2026
@slfan1989 slfan1989 marked this pull request as draft May 7, 2026 06:25
@slfan1989
Copy link
Copy Markdown
Contributor Author

slfan1989 commented May 7, 2026

@szetszwo Thanks for pointing out that RATIS-1931_grpc-zero-copy is 238 commits ahead of and 350 commits behind master.

I went through the commits on RATIS-1931_grpc-zero-copy and classified them against the current master branch. Most of the commits are either already available in master, superseded by newer master changes, dependency/test-framework related, reverted/obsolete, or unrelated to the gRPC zero-copy work.

I replayed these 26 commits on top of master and folded the required master-compatibility fixes into the relevant cherry-picked commits. The resulting branch does not include unrelated history from the old branch.

Migrated zero-copy commits(26)

Source SHA Subject
84285d3 RATIS-1925. Support Zero-Copy in GrpcClientProtocolService (#1007)
5d4ec69 RATIS-1990. Refactor appendEntries processing to support reference count (#1011)
82c31ea RATIS-2009. ReferenceCount should work for all LogEntry types. (#1021)
d459eb6 RATIS-1934. Support Zero-Copy in GrpcServerProtocolService (#1014)
e2aaddc RATIS-2007. Zero-copy buffers are not released (#1027)
c4b10fa RATIS-2018. Zero-copy buffers are not released - 2nd chunk (#1032)
c46da22 RATIS-1978. Add tests assertions to verify all zero-copy messages are released properly (#1023)
775b286 RATIS-1997. Refactor StateMachine interface to use ReferenceCountedObject (#1036)
53d35c0 RATIS-2020. Refactor TransactionContext to supply LogEntryProto via a ReferenceCountedObject (#1042)
e199daa RATIS-2028. Refactor RaftLog to supply log as ReferenceCountedObject (#1045)
397c2ef RATIS-2026. LogAppender to consume log entries with reference count (#1049)
c73a3eb RATIS-1979. Allow StateMachine.read to return a ReferentCountedObject (#1062)
ee09075 RATIS-2059. Missing reference count when putting log entries to cache on follower. (#1067)
7f04919 RATIS-2077. Timedout StateMachine retainRead is released twice (#1081)
53d5af7 RATIS-2092. Add metrics to expose number of zero-copy unclosed messages (#1095)
26385f3 RATIS-2096. Add a conf to enable/disable zero copy. (#1099)
e002587 RATIS-2093. Decouple metadata and configuration entries from appendEntries buffer for stateMachineCache' (#1096)
a2bdd10 RATIS-2094. Avoid corruptions from TransactionContext's stateMachineLogEntry and stateMachineContext. (#1106)
34fa62c RATIS-2114. Corruption due to SegmentedRaftLogWorker queue LogEntry without reference counter (#1113)
df1d38a RATIS-2151. TestRaftWithGrpc keeps failing with zero-copy. (#1164)
a15bde1 RATIS-2164. LeakDetector has a race condition. (#1163)
fc39c38 RATIS-2173. Fix zero-copy bugs for non-gRPC cases. (#1167)
ee56932 RATIS-2220. Skip further tests after leak detected (#1193)
0514e09 RATIS-2225. RaftClientRequest leak in RaftServerImpl. (#1198)
accb612 RATIS-2227. LogEntryProto leak in SegmentedRaftLog (#1199)
d5bd9c4 RATIS-2414. Add leak detection for ZeroCopyMessageMarshaller. (#1355)

SKIP_ALREADY_IN_MASTER(168)

Source SHA Subject
59dfd35 RATIS-1998. Add watch request metrics (#1009)
2062058 RATIS-1989. Intermittent timeout in TestStreamObserverWithTimeout (#1012)
863c2e8 RATIS-1987. Intermittent NPE in TestGrpcZeroCopy. (#1013)
6671ef6 RATIS-1999. Move RaftServerJmxAdapter out from RaftServerImpl. (#1010)
2448256 RATIS-2001. TransactionContext can be wrongly reused. (#1015)
eae0d18 RATIS-2005. Fix URF_UNREAD_FIELD in MetricServerCallListener (#1018)
859a410 RATIS-2006. Fix DM_EXIT in filestore Client (#1019)
14eb0bf RATIS-2002. Fix findbugs warnings in LogSegmentPath (#1017)
82f7b3b RATIS-2003. Fix IT_NO_SUCH_ELEMENT in InstallSnapshotRequests (#1016)
fc5c725 RATIS-2004. Fix EQ_COMPARETO_USE_OBJECT_EQUALS in LogSegment (#1020)
561cd6d RATIS-2010. Remove dependency on spotbugs-annotations (#1022)
c1e0ec2 RATIS-2013. OrderedAsync retry results an IllegalStateException in GrpcClientProtocolService. (#1026)
0e24757 RATIS-1972. Add junit 5 dependencies in ratis-server. (#1003)
ea1341b RATIS-2012. Client should not retry after close. (#1025)
79923c2 RATIS-2008. Follower should recognize candidate if the candidate is the same peer as the current valid leader (#1024)
a18d08c RATIS-2015. Node.js 16 actions are deprecated (#1028)
5560718 RATIS-2011. When a log entry is truncated, remove TransactionContext. (#1029)
7d587ec RATIS-2017: checkAndEvictCache must be done in writeLock. (#1031)
035cd96 RATIS-2016. Correct NotificationInstallSnapshot's index (#1030)
9cd74a2 RATIS-1974. Migrate ratis-metrics-default tests to Junit 5 (#1034)
cf897f0 RATIS-1973. Migrate ratis-examples tests to Junit 5. (#1035)
d2f1c57 RATIS-2019 Fixed abnormal exit of StateMachineUpdater (#1033)
a2cb49e RATIS-1975. Migrate ratis-metrics-dropwizard3 tests to Junit 5. (#1037)
4f5612f RATIS-2023. Remove duplicate RefCountingMap (#1039)
044b111 RATIS-2027. Ratis Streaming: Remote Stream copy data to heap. (#1044)
1bd4510 RATIS-2038. IllegalStateException when ServerState is closed before start. (#1048)
df436c7 RATIS-2035. Refactor streaming code for Read. (#1046)
99a833c Ratis-2031. Add peer info to response of GroupInfoCommand CLI (#1047)
422cb9d RATIS-2043. Change toString() of RaftConfigurationImpl (#1051)
44a4f1f RATIS-2044. Fix ReadIndex loss caused by data race in AppendEntriesListeners (#1052)
72c060d RATIS-2045. SnapshotInstallationHandler doesn't notify follower when snapshotIndex is -1 and firstAvailableLogIndex is 0 (#1053)
c3d615b RATIS-2047. Avoid unnecessary warn log when creating raft group (#1054)
be497d5 RATIS-2048. Fix SimpleStateMachineStorage potential NPE exception (#1056)
0f631fe RATIS-2036. Avoid trigger snapshot when removing raftGroup (#1055)
54c2b1f RATIS-2049. Suppress Sonar warning for volatile objects (#1057)
14dbbf3 RATIS-2050. Add creationGap param to snapshot management API (#1058)
a99e709 RATIS-2052. Add docs for triggering snapshot when removing raftGroup parameter. (#1061)
bc6221b RATIS-1519. When DataStreamManagement#read an exception occurs, remove DataStream (#596)
8638a2f Ratis-2040. Fix RaftPeerId generated by command of "raftMetaConf" to use real PeerId (#1060)
49b4006 RATIS-1504. Add timeout handling to DataStreamManagement#checkSuccessRemoteWrite. (#1064)
8913a99 RATIS-2056. Update purge index when snapshot installed. (#1065)
cf9d229 RATIS-2057. Add back JavaUtils.attemptUntilTrue(..). (#1066)
7f1b1b6 RATIS-2060 Avoid unexpected shutdown of RaftServerProxy during membership change (#1069)
b0ec114 RATIS-2061. Fix setCloseThreshold parameter in RaftServerConfigKeys (#1070)
1fe59e0 RATIS-2065. Avoid the out-of-heap memory OOM phenomenon of frequent creation and deletion of Raft group scenarios. (#1071)
4e3eee7 RATIS-2069. RaftMetaConf command sets incorrect peerAddress pattern. (#1075)
cbd9793 RATIS-2070. Skip push build for dependabot (#1077)
6fc4222 RATIS-2071. Bump Bouncy Castle to 1.78.1 (#1076)
5867192 RATIS-2072. Limit timeout of CI workflow jobs (#1078)
839f8fb RATIS-2073. Enable Surefire process checkers (#1079)
3888520 RATIS-2067. Enhance content for concept in ratis-docs. (#1073)
ac05d64 RATIS-2074. Intermittent fork timeout in TestRaftWithNetty#testBasicAppendEntriesKillLeader. (#1080)
e176501 RATIS-2078. Correct timeout unit for tests (#1083)
da9eee0 RATIS-2087. Remove workaround for GitHub reverse DNS issue (#1089)
0814b89 RATIS-2086. Autolink Ozone issues in PRs (#1088)
c10e7bc RATIS-2076. Intermittent timeout in TestRaftWithNetty#testWithLoad. (#1090)
8bc09bb RATIS-2085. Compile Ratis with JDK 17/21 in CI (#1087)
599835d RATIS-2083. Timer thread leak when log level is DEBUG (#1086)
192ce48 RATIS-2090. Bump ratis-thirdparty to 1.0.6 (#1093)
c81902a RATIS-2066. RaftServerProxy supports close callback (#1072)
9cfd1bf RATIS-2091. Fix other checkstyle issues in test-directory (#1094)
8c7c444 RATIS-2081. Comment that we skip checkstyle on test directory on purpose (#1084)
16f2508 RATIS-2098. RaftLogTruncateTests may fail. (#1097)
64ae88f RATIS-2097 Add a conf to enable/disable Metadata entries. (#1101)
1782cd9 RATIS-2099. Cache TermIndexImpl instead of using anonymous class (#1100)
93eb32a RATIS-2101. Move TermIndex.PRIVATE_CACHE to Util.CACHE (#1103)
640749b RATIS-2100. The closeFuture never completed while closing from the NEW state (#1102)
dd75ffb RATIS-2089. Add CommitInfoProto in NotReplicatedException (#1105)
bd4ab14 RATIS-2102. AsyncApi#send() is not handling retry and reply correctly for replication levels higher than MAJORITY (#1104)
924a0cd RATIS-2084. Follower reply ALREADY_INSTALLED when install old snapshots from leader (#1091)
bf13033 RATIS-2106. Add configuration reference for RaftClient (#1107)
dac27e4 RATIS-2109. RaftLogBase#updateCommitIndex should return true only if commitIndex is increased (#1109)
e540e46 RATIS-2112. Improve repeat-test workflow (#1112)
25a41e3 [RATIS-2111] Reinitialize should load the latest snapshot (#1111)
95ea26c RATIS-2095. Extract common logic of ratis-shell to RaftUtils for reuse (#1098)
19ead39 RATIS-2110. Publish SBOM artifacts (#1110)
ee9e14f RATIS-2117. No need for manual assembly:single execution (#1115)
1cb6908 RATIS-2118. Improve assembly process (#1117)
eeaf6a4 RATIS-2121. Set javac --release when compiling with JDK 9+ (#1119)
d101678 RATIS-1840. Avoid including build timestamp in artifacts (#1114)
9bb6953 RATIS-2125. javadoc jars should not include non-doc items (#1123)
7825b4f RATIS-1071. NettyClientRpc supports sendRequestAsync. Contributed by Rui Wang and Tsz-Wo Nicholas Sze. (#1122)
fb4968f RATIS-2131. Surround with [] only if hostName is a IPv6 string (#1125)
011dc0a RATIS-2126. Optimize NotLeaderException message (#1124)
99925e3 RATIS-2133. Ignore http proxy for ratis grpc client & server (#1128)
a793e6c RATIS-2104. Double shutdown in TestLeaderInstallSnapshot. (#1108)
ebeab93 RATIS-2136 Fixed the issue that RatisServer could not start after frequent restarts (#1131)
177097c RATIS-2115. Fix flaky RetryCacheTests and InstallSnapshotFromLeaderTests. (#1129)
69ec8f4 RATIS-2135. The leader keeps sending inconsistent entries repeatedly to followers. (#1132)
217fdb0 RATIS-2138 Remove uncessary error log in JVMPauseMonitor When GC is serious (#1133)
24fb553 RATIS-2144. SegmentedRaftLogWorker should close the stream before releasing the buffer. (#1138)
17a408f RATIS-2140. Thread wait when installing snapshot. (#1137)
c266cad RATIS-2113. Use consistent method names and parameter types in RaftUtils. (#1135)
da5d508 Revert "RATIS-2101. Move TermIndex.PRIVATE_CACHE to Util.CACHE (#1103)"
520ecab Revert "RATIS-2099. Cache TermIndexImpl instead of using anonymous class (#1100)"
dfed101 RATIS-2145. Follower hangs until the next trigger to take a snapshot. (#1139)
8f5159d RATIS-2146. Fixed possible issues caused by concurrent deletion and election when member changes (#1140)
d1e76cf RATIS-2148. Snapshot transfer may cause followers to trigger reloadStateMachine incorrectly (#1145)
3e38e6d RATIS-2149.Do not perform leader election if the current RaftServer has not started yet (#1143)
1918432 RATIS-2153. ratis-version.properties missing from src bundle (#1147)
e6fe8fc RATIS-2154. The old leader may send appendEntries after term changed. (#1148)
9ac832b RATIS-2152. GrpcLogAppender stucks while sending an installSnapshot notification request (#1146)
37386c4 RATIS-2150. No need for manual assembly:single execution when mvn deploy #1144
0c9e299 RATIS-2147. Md5 mismatch when snapshot install (#1142)
94f3fef RATIS-2157 Enhance make_rc.sh for non-first rc at release time #1149
8a50099 RATIS-2158. Let the snapshot sender and receiver use a new digester each time (#1151)
acb4d1a RATIS-2160. MetricRegistriesLoader should not print INFO message in CLI. (#1152)
e3d6736 RATIS-2162. When closing leaderState, if the logAppender thread sends a snapshot, a deadlock may occur. (#1154)
a0c4255 RATIS-2167. Add default value in TermIndex (#1161)
da3f90b RATIS-2169. mvnw test: Corrupted STDOUT by directly writing to native stream in forked JVM 1 (#1162)
de4e24d RATIS-2165. Do not include RaftClientRequest Message in ReadIndexRequest (#1160)
09f6b39 RATIS-2166. Update nextChunkIndex when snapshot is ALREADY_INSTALLED (#1159)
62ae6d9 RATIS-2172. RaftServer may lose FollowerState (#1166)
3a51121 RATIS-2179. Fix NPE in RaftServerImpl.getLogInfo. (#1171)
237b7c0 RATIS-2182. Fix some Objects.requireNonNull messages (#1172)
e75a0d5 RATIS-2183. Detect staled snapshot request. (#1173)
26c1f04 RATIS-2177. Purge should delete segmentLog from small to large according to logIndex (#1174)
06affdf RATIS-2189. Use ByteBufAllocator#ioBuffer in NettyDataStreamUtils (#1178)
04396ca RATIS-2191. Add ResourceLeakDetector to Netty tests (#1180)
ccbe9a6 RATIS-2194. FileLock didn't unlock properly (#1183)
3efec8d RATIS-2201. Bump ratis-thirdparty from 1.0.6 to 1.0.7 (#1185)
a4826e2 RATIS-2185. Improve gRPC log messages debugability. (#1186)
e9755a6 RATIS-2204. Avoid downloads from repository.apache.org (#1187)
703189e RATIS-2206. Jars in Maven repo and binary tarball are not the same (#1188)
a0eada8 RATIS-2211. publish-mvn fails with: ... did not assign a file to the build artifact (#1190)
318c897 RATIS-2216. Bump maven-shade-plugin to 3.6.0 (#1191)
92c4f72 RATIS-212. Fix typo in RaftAsyncTests (#1197)
551b8c9 RATIS-2222. Remove copy-rename-maven-plugin usage (#1194)
de2fec6 RATIS-2219. Remove duplicate test case from TestRaftWithGrpc (#1192)
6fd8ae1 RATIS-2210. Reduce duplication in CI workflow (#1195)
c2ae864 RATIS-2226. Enable Develocity local build cache (#1196)
117d03a RATIS-2197. Clean remote stream to resolve direct memory leak (#1179)
26912d9 RATIS-2200. Make Ratis example log at INFO level (#1189)
320b207 RATIS-2231. Bump ratis-thirdparty to 1.0.8 (#1202)
053683f RATIS-2232. Improve log for debugging on RaftLog / TransactionManager (#1203)
539e804 RATIS-2234. Remove lock race between heartbeat and append log channels (#1205)
6f34fb1 RATIS-2229. Do not print the same conf values multiple times. (#1200)
5e6cc9d RATIS-2233. make NOPROGRESS timeout configurable (#1204)
17c9652 RATIS-2215. Bump maven-remote-resources-plugin to 3.3.0 (#1208)
bdde3ae RATIS-2236 Fixed bug where manual triggerSnapshot would never finish (#1207)
72c920c RATIS-2237 Add getFollowerMatchIndices interface for DivisionInfo
8353a01 RATIS-2239. Publish build scans to develocity.apache.org (#1212)
345641f RATIS-2240. updatePurgeIndex doesn't need to hold RaftLogBase.writeLock (#1214)
af8482c RATIS-2247. Bump GitHub Actions runner to ubuntu-24.04 (#1219)
bbe20b3 RATIS-2248. Rename CI workflows to .yaml (#1220)
a9ebdb6 RATIS-2249. Remove unused shellcheck.sh (#1221)
6238fe3 RATIS-2252. Replace JUnitRunListener with JUnit5TestExecutionListener (#1228)
59f1992 RATIS-2022. Replace some Guava usage with builtins (#1231)
09ff1e1 RATIS-2256. Update Maven to 3.9.9 (#1234)
fab8a92 RATIS-2261. Mark TestRaftSnapshotWithGrpc as flaky
3947cf3 RATIS-2262. Mark RaftBasicTests#testStateMachineMetrics as flaky
0bc5aad RATIS-2260. AtomicFileOutputStream should truncate temp file (#1237)
f00d764 RATIS-2263. Bump sonar-maven-plugin to 5.0.0.4389 (#1238)
7723c2b RATIS-2266. Use WeakValueCache instead of Guava cache in RaftId. (#1240)
93ab53c RATIS-2268. A minor documatention fix for method getSuccessors. (#1242)
0fd4b3a RATIS-2209. Exercise make_rc.sh in CI (#1244)
7be7cb8 RATIS-2274. Newly added peer may retain outdated configuration after membership change, causing election failure. (#1246)
3247c7f RATIS-2283. GrpcLogAppender Thread Restart Leaves catchup=false, Blocking Reconfiguration Progress (#1250)
c36dac0 RATIS-2285. Bump ratis-thirdparty to 1.0.9 (#1252)
d637a93 RATIS-2286. Generate the necessary unified names for the submodules under RaftServerImpl (#1251)
3babac3 RATIS-2287. Improve RaftServerImpl#toString() to make it more readable (#1253)
7f85d46 RATIS-2289. Coverage is 0% due to no execution data files provided (#1255)
282d7a1 RATIS-2290. Simply the EventQueue in leader (#1258)
65fd444 RATIS-1995. Prevent data loss when a storage is accidentally re-formatted. (#1261)
2eda35d RATIS-2293. Fix typo in ClientProtoUtils (#1263)
8634542 RATIS-2294. Fix NettyClientRpc exception and timeout handling (#1264)
6e2cafb RATIS-2304. SnapshotManager should validate snapshot file path (#1268)
689d31b RATIS-2297. Set default commit message to PR title (#1265)

SKIP_DEPENDENCY_ONLY(12)

Source SHA Subject
e44de26 RATIS-1976. Migrate ratis-test tests to Junit 5 - Part 1 (#1038)
67b7650 RATIS-2021. Migrate ratis-test tests to Junit 5 - Part 2. (#1043)
f404244 RATIS-2051. Fix Sonar bugs for Ratis. (#1059)
29bba59 RATIS-2088. Fix name and imports related check in test-directory (#1092)
c31806d RATIS-2120. Bump version after 3.1.0 release (#1118)
8d4c4ae RATIS-2139. Fix checkstyle:ParameterNumber in GrpcService. (#1134)
e604110 RATIS-2217. Automatically re-try flaky tests in CI (#1229)
a477d6d RATIS-2254. Replace junit 4 Timeout with junit 5. (#1230)
d740e51 RATIS-2255. Migrate ratis-grpc to junit 5. (#1233)
0557974 RATIS-2251. Migrate ratis-test tests to Junit 5 - Part 3. (#1227)
5528be0 RATIS-2303. Migrate ratis-examples tests to Junit 5. (#1267)
c56ce42 RATIS-1977. Remove Junit 4 dependencies. (#1269)

SKIP_SUPERSEDED_BY_MASTER(27)

Source SHA Subject
1d99921 RATIS-2024. Refactor appendEntries code. (#1040)
16b6536 RATIS-2025. Move out assert and proto methods from RaftServerImpl. (#1041)
8704cd2 RATIS-2055. Move notifyTermIndexUpdated after leader.checkReady (#1068)
51244e4 RATIS-2068. Avoid logging raw StateMachine data body. (#1074)
32745c3 RATIS-2116. Fix the issue where RaftServerImpl.appendEntries may be blocked indefinitely (#1116)
4ba4637 RATIS-2134. logMetadata could miss appending the metadataEntry with the lastCommitIndex (#1130)
287a4ac RATIS-2137. Fix LogAppenderDefault in handling of INCONSISTENCY. (#1136)
781d61d RATIS-2129. Low replication performance because LogAppender is often blocked by RaftLog's readLock. (#1141)
6451f9b RATIS-2155. Add a builder for RatisShell. (#1150)
d08ba81 RATIS-2174. Move future.join outside the lock (#1168)
bf15765 RATIS-2178. Add a log message whenever deleting a RaftLog segment. (#1170)
13b8cdd RATIS-2186. Raft log should not purge index lower than the log start index (#1175)
b210965 RATIS-2184. Improve TestRaftWithGrpc test stability (#1177)
c454d78 RATIS-2228. Refactor the offered map in LogAppenderBase.nextAppendEntriesRequest (#1201)
9b74401 RATIS-2235. Allow only one thread to perform appendLog (#1206)
2664ac8 RATIS-2244. Reduce the number of log messages during bootstrap (#1217)
663a44b RATIS-2245. Ratis should wait for all apply transaction futures before taking snapshot and group remove (#1218)
fde8c7d RATIS-2242 change consistency criteria of heartbeat during appendLog (#1215)
0091c1c RATIS-2124. Remove the use of org.junit.Rule. (#1232)
ac35188 RATIS-2258. Caching TermIndex objects (#1239)
72c1765 RATIS-2269. Remove all import java.util.* statements. (#1243)
688bbae RATIS-2271 Leadership Loss Causes ClosedByInterruptException and NullPointerException in LogAppender Thread (#1245)
f5e9935 RATIS-2278. Follower Fails to Append Entries Due to Index Validation in NavigableIndices (#1247)
de58f05 RATIS-2282. LogAppender Restart Due to Premature Log Entry Access During Concurrent Write Processing (#1249)
8ab57e1 RATIS-2278. Follower Fails to Append Entries Due to Index Validation Race Condition in NavigableIndices (#1248)
21f9e5b RATIS-2180. Use Objects.requireNonNull instead of Preconditions.assertNotNull (#1256)
b0f5330 RATIS-2291. Fix failing TestInstallSnapshotNotificationWithGrpc#testAddNewFollowersNoSnapshot. (#1257)

SKIP_UNRELATED(2)

Source SHA Subject
e96ed1a RATIS-2168. Support custom gRPC services. (#1169)
f76cb2e RATIS-2501. Improve diagnostics for testInstallSnapshotDuringBootstrap timeout failures. (#1427)

SKIP_REVERTED_OR_OBSOLETE(3)

Source SHA Subject
8c9c801 RATIS-2080. Reuse LeaderElection executor. (#1082)
33cb586 Revert "RATIS-2080. Reuse LeaderElection executor. (#1082)"
ca81a21 Revert "RATIS-2278. Follower Fails to Append Entries Due to Index Validation in NavigableIndices (#1247)"

@slfan1989 slfan1989 marked this pull request as ready for review May 7, 2026 16:17
@slfan1989 slfan1989 marked this pull request as draft May 8, 2026 02:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants