Hi All, We are excited to announce the release of Apache Ratis 3.3.0!
Apache Ratis is an open source Java implementation of the Raft consensus protocol. This release adds streaming read support to DataStream and introduces a dedicated OpenTelemetry tracing module. It also includes improvements to linearizable reads, Raft replication, LogAppender reliability, snapshot handling, TLS configuration, resource management, APIs, build tooling and CI. Key Highlights: Streaming Reads and DataStream: - RATIS-1240. Add input stream to DataStreamApi for read operations in Server (#1469) - RATIS-2546. Add input stream to DataStreamApi for read operations in Client (#1481) - RATIS-2559. Add linearizable check for streaming read request (#1490) - RATIS-2563. Add DataStreamReplyByteBuf (#1485) - RATIS-2564. Add an executor and terminalReply to stream read (#1486) - RATIS-2568. Add Streaming Read to FileStore (#1488) - RATIS-2571. DataStreamInput#readAsync returns ByteBuffers (#1492) - RATIS-2603. Add DataStreamApi.Resolver for group-independent read-only requests (#1516) - RATIS-2604. Add a new server side DataStreamApi (#1518) OpenTelemetry Tracing: - RATIS-2393 Add Span Context to RaftRpcRequestProto (#1341) - RATIS-2395. Add Client Span for AyncImpl (#1385) - RATIS-2397. Add trace support for Log Appender (#1443) - RATIS-2398. Add opentelemetry-javaagent to ratis-examples and assembly (#1428) - RATIS-2553. Isolate OpenTelemetry tracing dependencies. (#1478) - RATIS-2558. Move Opentelemetry to a new module (#1484) - RATIS-2562. Use OTel prefix for OpenTelemetry code (#1482) Linearizable Reads, Raft Replication and LogAppender: - RATIS-2403. Support leader batch write to improve linearizable follower read throughput (#1362) - RATIS-2433. Cancel transaction in case of failure to append (#1382) - RATIS-2487. Trigger installSnapshot if leader cannot get previous entry (#1420) - RATIS-2497. Pass server to the dummy watch request in OrderedAsync (#1438) - RATIS-2499. Allow the LogAppender restart when LogAppenderDaemon exception (#1425) - RATIS-2505. Improve RATIS-2387 with direct synchronous append when compose disabled (#1436) - RATIS-2506. Delay consecutive GrpcLogAppender restart. (#1450) - RATIS-2507. Fix java.lang.IllegalStateException: gap between entries (#1439) - RATIS-2508. appendEntries log messages improvement. (#1440) - RATIS-2547. Advance repliedIndex before completing write replies (#1474) - RATIS-2605. Avoid advancing matchIndex from heartbeat AppendEntries success (#1519) Snapshot Creation and Recovery: - RATIS-244. Skip snapshot file if corresponding MD5 file is missing (#1320) - RATIS-2430. Write snapshot to temporary path until finish (#1372) - RATIS-2511. Follower should throw ReadException if it is installing snapshot (#1444) TLS: - RATIS-2537. Support configurable gRPC TLS provider and cipher suites (#1462) - RATIS-2538. Removed noisy info log from netty TLS configuration (#1463) - RATIS-2596. Unsupported TLS cipher suites may crash gRPC servers (#1510) - RATIS-2598. TLS provider/protocol/cipher config is not applied to DataStream server/client. (#1511) - RATIS-2602. Pass CipherSuiteFilter to the TlsConf. (#1517) - RATIS-2621. Regenerate test certs with alt_names (#1531) Resource Management, APIs and Operations: - RATIS-2469. Remove Command#close() (#1404) - RATIS-2510. NettyClientStreamRpc may retain a completely released object. (#1456) - RATIS-2521. LifeCycle.startAndTransition(..) may cause illegal transition: CLOSING -> EXCEPTION. (#1452) - RATIS-2529. Bound gRPC worker EventLoopGroup thread count. (#1466) - RATIS-2561. Refactor MetricRegistriesLoader. (#1483) - RATIS-2572. Empty dir annotations/ in ratis-proto.jar (#1493) - RATIS-2581. Route file operations through NIO.2 (#1499) - RATIS-2592. Ratis CLI and example peer-address parsers fail on IPv6 literal addresses (#1509) - RATIS-2601. GroupInfoReply conf is lost when converting to GroupInfoReplyProto (#1515) - RATIS-2610. -groupid should check for non-empty ID (#1523) Build and Release Tooling: - RATIS-2425. make_rc.sh does not set version in ratis-bom (#1367) - RATIS-2429. ratis-bom module fails to deploy due to missing distributionManagement configuration (#1371) - RATIS-2435. ratis-bom POM is not signed during release staging (#1374) - RATIS-2437. make_rc.sh version check prevents releasing subsequent RCs (#1376) - RATIS-2439. Remove URL from ratis-version.properties (#1380) - RATIS-2440. Let ratis-bom inherit from Apache parent (#1381) - RATIS-2441. Set encoding for maven-resources-plugin (#1470) - RATIS-2478. compile check does not set target version (#1411) - RATIS-2570. Minor improvements in make_rc.sh (#1491) - RATIS-2589. Fix Javadoc warnings (#1505) Testing and CI: - RATIS-2432. Close PRs after three months of inactivity (#1373) - RATIS-2434. Regression test for data race between SegmentedRaftLog.get() and LogSegment.append(). (#1378) - RATIS-2442. Wait for configuration to be applied to listeners in test (#1383) - RATIS-2443. Sync fork should not trigger CI (#1384) - RATIS-2446. Enable Dependabot dependency updates (#1386) - RATIS-2498. Mark TestRaftAsyncWithNetty as flaky - RATIS-2548. Stabilize timing-sensitive Ratis tests (#1475) - RATIS-2573. Use Java 25 in CI (#1494) - RATIS-2586. zizmor check should reflect failure in fork (#1504) - RATIS-2588. Add check for allowed action usage in workflows (#1507) - RATIS-2622. Set dependabot to ignore ratis-thirdparty. (#1533) Documentation, Dependencies and Maintenance: - RATIS-2438: Update membership-change documentation (#1379) - RATIS-2591. Bump apache parent to 39 (#1506) - RATIS-2615. Bump opentelemetry-javaagent to 2.29.0 (#1527) - RATIS-2616. Bump ratis-thirdparty-misc to 1.1.0 (#1529) - RATIS-2617. Bump opentelemetry to 1.64.0 (#1514) - RATIS-2619. Bump bouncycastle to 1.85 (#1522) - RATIS-2626. Remove leftover ratis-docs items from LICENSE (#1537) The full release details are available at: https://ratis.apache.org/post/3.3.0.html The complete list of changes is available at: https://github.com/apache/ratis/compare/ratis-3.2.2...ratis-3.3.0 The release is available for download at: https://ratis.apache.org/downloads.html Maven artifacts are available from Maven Central: https://central.sonatype.com/search?q=org.apache.ratis&smo=true Thank you to everyone who contributed patches, reviews, testing and release validation. Special thanks to the Apache IoTDB community for validating this release. Best, ------------------------- Apache Ratis PMC
