Hi All,

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

This release includes performance improvements, critical bug fixes, new RPC 
features, build/release tooling enhancements, and better documentation. Key 
highlights include fixing lock contention that affected replication 
performance, adding timeout/interrupt handling in gRPC client, adding a Bill of 
Materials (BOM) module, and fixing multiple memory leaks in Netty and gRPC 
modules.

Key Highlights:

Performance Improvements:
- RATIS-2129: Fixed low replication performance due to lock contention on 
RaftServerImpl (#1339)
- RATIS-2387: Fixed performance degradation after RATIS-2235 (#1337)
- RATIS-2405: Removed duplicate computeIfAbsent call in MessageMetrics (#1346)
- RATIS-2418: Reduced excessive logging in NettyClient LoggingHandler (#1359)

Bug Fixes:
- RATIS-2350: Fixed readAfterWrite bugs (#1311)
- RATIS-2364: MultipleLinearRandomRetry now throws exceptions for illegal 
arguments (#1320)
- RATIS-2371: Fixed issues in LeaderElection, SegmentedRaftLogReader, and 
FileChunkReader (#1324)
- RATIS-2374: Suppressed stack trace printing for known exceptions in 
OrderedAsync (#1327)
- RATIS-2378: Fixed listener role transition bug (#1331)
- RATIS-2383: AtomicFileOutputStream overrides FilterOutputStream correctly 
(#1333)
- RATIS-2402: Fixed CallId overflow when parsing gRPC metadata (#1344)
- RATIS-2404: Added message size validation before sending async requests 
(#1345)
- RATIS-2406: Fixed resource cleanup bug in GrpcServicesImpl.closeImpl() (#1347)
- RATIS-2407: Added missing return statement after stream closed check in 
OrderedAsync (#1348)
- RATIS-2410: GrpcStubPool now uses GrpcUtil for channel shutdown (#1351)
- RATIS-2412: Fixed NettyClient LoggingHandler not working (#1353)
- RATIS-2415: Fixed queue corruption in NettyRpcProxy when request sending 
fails (#1356)
- RATIS-2416: Fixed memory leak in NettyClientReplies for stale replies (#1357)
- RATIS-2417: Fixed ChannelMap memory leak in DataStreamManagement when 
removing peer (#1358)
- RATIS-2420: Fixed CT_CONSTRUCTOR_THROW in AtomicFileOutputStream (#1361)
- RATIS-2422: Fixed TestNettyRpcProxy.testOfferRollbackOnAlreadyClosed failure 
(#1364)
- RATIS-2427: Fixed LogAppender not closing on IllegalStateException (#1369)
- RATIS-2434: Added regression test for data race between SegmentedRaftLog.get 
and purge (#1376)

New Features / Enhancements:
- RATIS-2325: Created GrpcStubPool for GrpcServerProtocolClient (#1306)
- RATIS-2384: Added Bill of Materials (BOM) module for easier dependency 
management (#1335)
- RATIS-2400: Added timeout and interrupt handling support in GrpcClientRpc 
(#1342)
- RATIS-2401: Added memory info to VersionInfo (#1343)
- RATIS-2408: Added configurable exponential backoff reconnection for Netty 
(#1349)
- RATIS-2413: Added support for different RetryPolicy implementations (#1354)
- RATIS-2414: Added leak detection for ZeroCopyMessageMarshaller (#1355)

Build / Release Tooling:
- RATIS-2354: Bumped Apache parent POM to version 35 (#1309)
- RATIS-2363: Bumped various plugin versions (#1318)
- RATIS-2411: Bumped ratis-thirdparty to 1.0.11 (#1352)
- RATIS-2425: Fixed make_rc.sh not setting version in ratis-bom (#1367)
- RATIS-2429: Fixed ratis-bom deployment failure due to missing distribution 
management (#1368)
- RATIS-2435: Fixed ratis-bom POM not being signed during release staging 
(#1374)
- RATIS-2437: Fixed make_rc.sh version check preventing subsequent RC releases 
(#1379)
- RATIS-2439: Removed URL from ratis-version.properties (#1380)
- Release script improvements: multiple RC iterations and version handling fixes

Testing / CI:
- RATIS-2353: Refactored ReadOnlyRequestTests (#1308)
- RATIS-2359: Switched CI checks to use JDK 17 (#1315)
- RATIS-2372: Added weekly CVE vulnerability check workflow (#1325)
- RATIS-2373: Used workflow inputs in run command via environment variables 
(#1326)
- RATIS-2380: Fixed parameter injection vulnerability in repeat-test.yaml 
(#1330)
- RATIS-2436: Bumped GitHub action versions (#1375)

Documentation:
- RATIS-2388: Enhanced content for concepts in ratis-docs (#1338)
- RATIS-2409: Fixed typos in ratis-docs configurations.md (#1350)

Chores / Miscellaneous:
- RATIS-2352: Updated spotbugs to 4.8.6 and suppressed new warnings (#1307)
- RATIS-2355: Fixed duplicate output in checkstyle check (#1310)
- RATIS-2356: Defined maven.compiler.release globally (#1312)
- RATIS-2358: Removed unnecessary repository definitions (#1314)
- RATIS-2361: Changed MD5Hash to value-based (#1316)
- RATIS-2362: Used maven.compiler.release for target Java version (#1317)
- RATIS-2419: Excluded generated-sources from checkstyle (#1360)
- RATIS-2423: Ensured Javadoc is generated in English regardless of build 
locale (#1365)
- RATIS-2424: Fixed javadoc locale configuration for JDK 8 compatibility (#1366)

Note: The following changes from earlier RCs were reverted and are not included 
in this final release:
- RATIS-2379 (Support returning applied index for ReadIndex)
- RATIS-2382 (Support skip leadership check during ReadIndex)

The full changes are available at:
https://ratis.apache.org/post/3.2.2.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

Best,
-------------------------
Apache Ratis PMC

Reply via email to