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
