Hi All,

We are excited to announce the release of Apache Ratis 3.2.0!

This release includes critical bug fixes, several new features, and performance 
improvements that significantly enhance the stability and functionality of 
Ratis.

Key Highlights:
Bug Fixes:
- RATIS-1995: Prevented data loss when storage is accidentally re-formatted 
(#1261)
- RATIS-2169: Fixed corrupted STDOUT by directly writing to native stream in 
forked JVM 1 (#1162)
- RATIS-2180: Replaced Preconditions.assertNotNull with Objects.requireNonNull 
(#1256)
- RATIS-2182: Fixed some Objects.requireNonNull messages (#1172)
- RATIS-2294: Fixed NettyClientRpc exception and timeout handling (#1264)
- RATIS-2271: Fixed Leadership Loss causing ClosedByInterruptException and 
NullPointerException in LogAppender thread (#1245)
- RATIS-2274: Fixed issue where newly added peers may retain outdated 
configuration after membership change (#1246)
- RATIS-2278: Fixed follower failures to append entries due to index validation 
race condition in NavigableIndices (#1248)
- RATIS-2282: Fixed LogAppender restart due to premature log entry access 
during concurrent write processing (#1249)
- RATIS-2283: Fixed GrpcLogAppender thread restart leaving catchup=false, 
blocking reconfiguration progress (#1250)

New Features:
- RATIS-2168: Added support for custom gRPC services (#1169)
- RATIS-2237: Added getFollowerMatchIndices interface for DivisionInfo (#1212)

Performance Improvements:
- RATIS-2240: Optimized updatePurgeIndex to not hold RaftLogBase.writeLock 
(#1214)
- RATIS-2242: Changed consistency criteria of heartbeat during appendLog (#1215)
- RATIS-2244: Reduced the number of log messages during bootstrap (#1217)
- RATIS-2245: Ratis should wait for all apply transaction futures before taking 
snapshot and group removal (#1218)
- RATIS-2258: Caching TermIndex objects (#1239)
- RATIS-2266: Used WeakValueCache instead of Guava cache in RaftId (#1240)
- RATIS-2260: Fixed AtomicFileOutputStream to truncate temp files (#1237)
- RATIS-2289: Simplified the EventQueue in leader (#1258)

Chores, Docs, and Miscellaneous:
- RATIS-1977: Removed JUnit 4 dependencies (#1269)
- RATIS-2022: Replaced some Guava usage with built-in methods (#1231)
- RATIS-2124: Removed the use of org.junit.Rule (#1232)
- RATIS-2209: Exercised make_rc.sh in CI (#1244)
- RATIS-2217: Automatically retried flaky tests in CI (#1229)
- RATIS-2248: Renamed CI workflows to .yaml (#1220)
- RATIS-2249: Removed unused shellcheck.sh (#1221)
- RATIS-2251: Migrated ratis-test tests to JUnit 5 - Part 3 (#1227)
- RATIS-2252: Replaced JUnitRunListener with JUnit5TestExecutionListener (#1228)
- RATIS-2254: Replaced JUnit 4 Timeout with JUnit 5 (#1230)
- RATIS-2255: Migrated ratis-grpc to JUnit 5 (#1233)
- RATIS-2256: Updated Maven to 3.9.9 (#1234)
- RATIS-2263: Bumped sonar-maven-plugin to 5.0.0.4389 (#1238)
- RATIS-2270: Improved RaftServerImpl#toString() for better readability (#1253)
- RATIS-2279: Merged patch to validate snapshot file path in SnapshotManager 
(#1268)
- RATIS-2291: Fixed failing 
TestInstallSnapshotNotificationWithGrpc#testAddNewFollowersNoSnapshot (#1257)
- RATIS-2293: Fixed typo in ClientProtoUtils (#1263)
- RATIS-2305: Added a security document (#1270)
- RATIS-2308: Removed unused gRPC TLS configurations (#1271)

The full changes are available at:
https://ratis.apache.org/post/3.2.0.html

The release is available for download at:
https://ratis.apache.org/downloads.html

Maven artifacts can be found at
https://central.sonatype.com/search?q=org.apache.ratis&smo=true

Regards,
Apache Ratis Team

Reply via email to