·
6 commits
to master
since this release
4.18.0
Release 4.18.0 includes multiple important features, improvements, bug fixes and dependency/CVE updates.
The technical details of this release are summarized below.
Breaking Changes
- Require Java 17+ for building and running BookKeeper PR #4446
- [improve][conf] Change the default value of
readOnlyModeOnAnyDiskFullEnabledto true PR #4520 - BP-69: Remove
bookkeeper-sloggermodule PR #4764 - Remove deprecated method
setAllocatorPoolingConcurrenncyPR #4431 - Remove deprecated class
MathUtilsPR #4274
Features
- BP-69: Adopt slog for structured logging PR #4751
- BP-69: Convert bookkeeper-common to slog (phase 1) PR #4754
- BP-69: Convert stats and allocator modules to slog (phase 2) PR #4755
- BP-69: Convert bookkeeper-server to slog (phase 3) PR #4756
- BP-69: Convert stream/distributedlog modules to slog (phase 5) PR #4757
- BP-69: Convert http, tools, benchmark and metadata-drivers to slog (phase 4+6) PR #4758
- BP-69: Convert remaining SLF4J usages in non-test code to slog PR #4765
- BP-69: Allow caller to pass a parent slog Logger to created/opened ledgers PR #4766
- BP-69: Inherit LedgerHandle logger context in ledger operations PR #4767
- BP-69: Print slog context attrs in log4j2; add OTel JSON example PR #4770
- BP-68: Delete cookie as part of decommission API PR #4500
- Delete cookie as part of decommission API PR #4592
- BP-66: support throttling for zookeeper read during rereplication PR #4258
- [BP-62] Expose
batchReadUnconfirmedAsyncto ReadHandle PR #4739 - feat: migrate native-io implementation from C to Rust PR #4738
- Migrate
BookkeeperProtocolfrom protobuf-java to LightProto PR #4780 - Migrate
DataFormatsfrom protobuf-java to LightProto PR #4779 - Migrate stream non-gRPC protos to LightProto PR #4781
- Migrate stream gRPC protos to LightProto PR #4783
- Migrate from Yahoo DataSketches to Apache DataSketches 7.0.1 (KLL) PR #4774
- Support bookie server config TCP keep-alive PR #4762
- [client] new API to check if BookKeeper client is connected to metadata service PR #4342
- feat: allow user config AsyncLogger in log4j2 PR #4269
Improvements
Bookie
- [improve] add metrics:
total_entry_log_space_bytesPR #4507 - improve: Enrich GC metrics to better analyze GC behavior and the time consumption of each phase PR #4384
- add metric for rocksdb
getLastEntryInLedgerto help find out bottleneck PR #4529 - Set ThreadFactory for Executor in EntryLoggerAllocator PR #4562
- Add temp dir property for native library PR #4533
- Apply WRITE_BUFFER_WATER_MARK setting to child channels in BookieNetty Server PR #4337
- SingleDirectoryDbLedgerStorage skip optimistic cache put sometimes PR #4306
- Log only overridden config in BookieServer startup PR #4768
- Remove unused journaltime PR #4006
Client
- LedgerHandle: eliminate unnecessary synchronization on
LedgerHandle.getLength()PR #4516 - Optimize bounded batch reads by predicting entry count PR #4741
- improve: Improve host address resolution logic for bookie id PR #4588
- Rename the client high priority thread pool PR #4496
Tools
- [improve] Update readledger command to read all the entries from a bookie when first entry and last entry ids are not provided PR #4692
- Optimize ListActiveLedgersCommand PR #4602
- Optimize bookie usage information while using command line option
--helpPR #4241
Bugs
Bookie
- fix BookKeeper can't startup cause by 'IOException: Recovery log xxx is missing' PR #4740
- Prevent double flush due to race in SingleDirectoryDbLedgerStorage PR #4305
- Fix RocksDB configuration path handling on Windows PR #4407
- Issue 4503: Added check into BufferedChannel's read to avoid endless loop PR #4506
- [Fix] ConcurrentLongHashMap throw ArrayIndexOutOfBoundsException PR #4771
- Add workaround for ZOOKEEPER-3825 related to numeric IPs and DNS names with multiple numeric IPs and support on Java 17 PR #4719
- Fix async log appender not print error log when bookie starting exceptionally PR #4475
- fix: throw reject when SingleThreadExecutor drainTo in progress and queue is empty PR #4488
Client
- Fix batch reads hanging after digest mismatch retries are ignored PR #4789
- Fix WriteSet use-after-recycle in sequence reads PR #4788
- Fix NPE in PendingAddOp.maybeTimeout() when clientCtx is null after recycling PR #4760
- Fix race condition NPE in V3 response handling during timeout check PR #4737
- [client][fix] Bookie WatchTask may be stuck PR #4481
- Fix LedgerHandle batchReadUnconfirmedAsync: use slog log instead of LOG PR #4782
- #4574: fix sanity check asyncBatchReadEntries PR #4579
- fix: Add strict hostname resolution and loopback check for advertised address PR #4595
- [fix] Change log level to debug when check parameters in BatchRead PR #4485
Others
- [FIX] Fix IllegalThreadStateException in ComponentStarter shutdown hook PR #4733
- Fix potential jetcd-core shading problem PR #4526
- Fix potential class conflict during jetcd-core-shaded shading process PR #4532
- compatible fix wrong key for getHttpServerTrustStorePassword PR #4301
- [fix] fix string format for exception in RocksdbKVStore PR #4448
- fix: permission denied in the docker image PR #4464
- [fix] Fix issue where options for sanity test command are ignored PR #4691
- Fix duplicated call zkGetLogSegmentNames in getLogSegmentNames PR #4050
- Fix the pid occupied check when use bookkeeper-daemon.sh start or stop PR #3113
Build, CI and Tests
- Introduce /bkbot Command to Control CI Workflow Runs via PR Comments PR #4673
- [Doc] Introduce CI Workflow Management with BookKeeper Bot PR #4674
- [ci] Add /bkbot rerun-failure command for job-level failure rerun PR #4746
- Upgrade website to Docusaurus 3 and use Node 24 to build PR #4723
- ci: add java21(LTS) Compatibility Check PR #4350
- build: add java21 and windows daily build PR #4292
- ci: add typo ci check and fix typos PR #4375
- Improve CI: add caching for BookKeeper old release downloads and improve maven caching and error logs PR #4722
- Remove OWASP dependency check from CI PR #4717
- fix: add javadoc support for pom-only shaded modules PR #4787
Dependency updates
- Upgrade Netty to 4.2.14 PR #4799
- Upgrade Netty to 4.2.13.Final to address CVEs PR #4775
- Upgrade Netty to 4.2.12.Final PR #4744
- Upgrade vert.x to 4.5.25 to address CVE-2026-6860 PR #4790
- Upgrade OpenTelemetry libraries to 1.61.0 / 2.27.0 PR #4773
- Upgrade to RocksDB 9.9.3 PR #4580
- Upgrade Jetty from 9.4.57 to 12.1.7 PR #4710
- Upgrade protobuf and grpc to latest versions PR #4716
- Scope gRPC dependencies and rely on grpc-bom for single version PR #4784
- Upgrade jctools to 4.0.6 (jctools-core-jdk11) PR #4776
- Upgrade jctools version to 4.0.5 PR #4656
- build(deps): bump org.apache.zookeeper:zookeeper from 3.9.4 to 3.9.5 PR #4721
- build(deps): bump org.apache.zookeeper:zookeeper from 3.9.3 to 3.9.4 PR #4667
- Upgrade Lombok to 1.18.32 for Java 22 support PR #4267
- Bump bouncycastle version from 1.75 to 1.78 PR #4295
- build(deps): bump org.bouncycastle:bc-fips from 1.0.2.4 to 1.0.2.5 PR #4366
- build(deps): bump commons-io:commons-io from 2.7 to 2.17.0 PR #4509
- Use slf4j-bom and log4j-bom in dependencyManagement PR #4346
- Remove unused commons-lang dependency PR #4654
- Upgrade os-maven-plugin to support RISC-V 64 PR #4515
Details
https://github.com/apache/bookkeeper/pulls?q=is%3Apr+milestone%3A4.18.0+is%3Aclosed