Apache Pulsar 4.0.11
2026-06-08
Library updates
- [fix][sec][branch-4.0] Upgrade avro to 1.11.5 to address CVE-2025-33042 (#25788)
- [fix][sec] Bump org.asynchttpclient:async-http-client from 2.14.5 to 2.15.0 (#25818)
- [fix][sec] Upgrade commons-configuration2 to 2.15.0 to address CVE-2026-45205 (#25844)
- [fix][sec] Upgrade Netty to 4.1.133.Final to address CVEs (#25670)
- [improve][misc] Upgrade Netty to 4.1.134 (#25870)
- [fix][sec] Upgrade Netty to 4.1.135.Final to address several CVEs (#25918)
- [fix][sec] Upgrade thrift to 0.23.0 to address CVE-2026-43869 (#25744)
- [fix][sec] Upgrade vert.x to 4.5.25 to address CVE-2026-6860 (#25737)
- [fix][sec] Upgrade vertx to 4.5.27 to address CVE-2026-6860 (#25745)
- [improve][misc] Upgrade vert.x to 4.5.28 (#25924)
- [improve][build] Remove kotlin-stdlib override; upgrade okhttp3 5.3.2 and okio 3.17.0 (#25855)
- [improve][build] Upgrade org.apache.kerby:kerb-simplekdc from 1.1.1 to 2.1.1 (#25785)
- [improve][misc] Upgrade Jetty to 12.1.9 (#25752)
- [improve][misc] Upgrade Jetty to 12.1.10 (#25943)
Broker
- [fix][broker] Clean up orphan ledger on concurrent initial schema creation in BookkeeperSchemaStorage (#25514)
- [fix][broker] Close pending acks cleanup gap in BacklogQuotaManager (#25624)
- [fix][broker] ConcurrentLongHashMap throw ArrayIndexOutOfBoundsException (#25644)
- [fix][broker] Correct two race conditions in the tracker code and logic bug in InMemoryDelayedDeliveryTracker that failed with NoSuchElementException (#25681)
- [fix][broker] Decrement unacked counter when removeAllUpTo removes pending acks (#25581)
- [fix][broker] Fix compaction cursor reset may lose mark-delete properties (#25862)
- [fix][broker] Fix ManagedLedgerImpl.advanceCursorsIfNecessary() method may lose non-durable cursor properties in race condition (#25796)
- [fix][broker] Fix non-batched null-value messages not removed during topic compaction (#25817)
- [fix][broker] Fix PersistentMessageExpiryMonitor findEntryComplete() method may lose mark-delete properties in race condition (#25803)
- [fix][broker] Fix precision loss in DataSketchesSummaryLogger by replacing LongAdder with DoubleAdder for sum accumulation (#25594)
- [fix][broker] Fix PulsarService.closeAsync where Condition.signalAll was called without holding a lock (#25777)
- [fix][broker] Fix race in pending acks removal in redeliverUnacknowledgedMessages (#25589)
- [fix][broker] Fix stuck chunks in SharedConsumerAssignor permit tracking (#25620)
- [fix][broker] Merge broker offload extra configurations (#25736)
- [fix][broker] Move pending acks cleanup to selected mark-delete callbacks (#25592)
- [fix][broker] Race condition causes perpetual backlog on internal topics (#25572)
- [fix][broker] Skip backlog-quota eviction on fenced/closing topics (#25684)
- [fix][broker] Use effective offload policies for extra configs (#25781)
- [fix][broker] Wait for orphan schema ledger cleanup before retry (#25579)
- [fix][broker][fix][broker]Replication stats is empty when the cluster is the target cluster of a one-way replication (#25583)
- [fix][broker]Replication is stuck because failed to read entries (#25625)
- [fix][bk] Fix NPE in IsolatedBookieEnsemblePlacementPolicy when policy class does not match (#25825)
- [fix][meta] Fix PulsarZooKeeperClient async addWatch callback retry behavior (#25913)
- [fix][meta] Fix ZooKeeper session reconnect race condition in PulsarZooKeeperClient.clientCreator (#25910)
- [improve][broker] optimize namespaceBundle validation to fix single-thread 100% CPU during unloading entire namespaces (#25626)
- [improve][broker] PIP-380: Support-setting-up-specific-namespaces-to-skipping-the-load-shedding (#23549)
- [improve][broker] Prevent stale replicator pending reads after termination (#25767)
- [improve][offload] Coalesce automatic offload triggers to reduce retry loops and ledger scans (#25793)
Client
- [fix][client] Apply Avro logical type conversions when decoding schema without classloader (#25759)
- [fix][client] Clean up unacked messages when unsubscribing a topic with ack timeout backoff (#25916)
- [fix][client] Fix failed to close consumer because of the error: param memorySize is a negative value (#25805)
- [fix][client] Fix stale Healthy state in SameAuthParamsLookupAutoClusterFailover causing flaky test (#25388)
- [fix][client] Make ClientBuilder serializable (#25730) (#25740)
- [fix][client] Match logical topic when removing unacked messages (#25921)
- [fix][client] Preserve equals in FieldParser map values (#25907)
- [fix][client] Prevent duplicate ServiceUrlProvider initialization (#25899)
- [fix][client] Reset higher-index states on recovery in SameAuthParamsLookupAutoClusterFailover (#25826)
- [fix][client] Stabilize scaleReceiverQueueHint against concurrent enqueue/take (#25578)
- [fix][client]Broker-side producer handle leak if closes a producer which state is regitering schema (#25725)
- [improve][client] Best-effort retry for individual/batch-index acks on send failure when ackReceiptEnabled=false (#25525)
- [improve][client] Clean up unacked message tracker when topics are removed in multi-topic consumers (#25923)
- [improve][client] Enable configurable preemptive OAuth2 token refresh (#25363)
- [improve][client] Implement tls_client_auth for AuthenticationOAuth2 (#25538)
- [improve][client] In cases where there is a risk of message loss, adjust the log level to error (#25854)
Pulsar IO and Pulsar Functions
- [fix][fn] Fix functions update issue where artifact is provided as a http url (#25840)
- [fix][fn] Fix Go function runtime to continue after user exceptions and add neg-ack tests (#25867)
- [fix][fn] Fix orphan exclusive producer on creation timeout in WorkerUtils.createExclusiveProducerWithRetry (#25942)
- [improve][fn] Avoid gRPC timeout when getting status of a dead process runtime (#25819)
- [improve][fn] make built-in connector reload incremental (#25773)
- [improve][fn] make built-in functions reload incremental (#25868)
- [refactor][fn] Use Map instead of TreeMap for connector/function API types (#25790)
- [improve][functions] Allow customizing Kubernetes service domain suffix in Function Worker (#25872)
Others
- [improve][proxy][branch-4.0] Restore AdminProxyHandler changes which were accidentially reverted in Jetty 12 upgrade
- [fix][proxy] Avoid intermittent 502 when admin proxy follows a broker redirect for a request with a body (#25919)
- [fix][proxy] Close channel on connection failure (#25770)
Tests & CI
- [fix][test] Add timeout to initial receives in ResendRequestTest.testSharedSingleAckedPartitionedTopic (#25828)
- [fix][test] Fix flaky ExtensibleLoadManagerImplTest.testLoadBalancerServiceUnitTableViewSyncer (#25596)
- [fix][test] Fix flaky MessagePublishBufferThrottleTest.testBlockByPublishRateLimiting (#25365)
- [fix][test] Fix flaky OneWayReplicatorDeduplicationTest.testDeduplication (#25679)
- [fix][test] Fix flaky ProducerCleanupTest timer cleanup (#25864)
- [fix][test] Fix flaky PulsarFunctionTlsTest.testFunctionsCreation() test (#25889)
- [fix][test] Fix flaky ResendRequestTest.testSharedSingleAckedPartitionedTopic() test (#25852)
- [fix][test] Fix flaky SameAuthParamsLookupAutoClusterFailoverTest.testAutoClusterFailover() test (#25892)
- [fix][test] Fix flaky testGetExcludedBookiesWithIsolationGroups (#25640)
- [fix][test] Fix flaky testMsgDropStat in NonPersistentTopicTest (#25426)
- [fix][test] Make NamespacesTest.cleanupAfterMethod tolerant of transient infra failures (#25641)
- [fix][test] Reduce flakiness in testLoadBalancerServiceUnitTableViewSyncer (#25638)
- [fix][test] Reduce flakiness in testLoadBalancerServiceUnitTableViewSyncer (#25638)
- [fix][test] Stabilize testSecondaryIsolationGroupsBookiesNegative() test (#25900)
- [fix][build][branch-4.0] Fix issue in backporting PR #25644
- [fix][test] Fix compile error in OffloadPoliciesTest
- [fix][test][branch-4.0] Fix AvroSchemaTest cases that were invalid
- [fix][test][branch-4.0] Fix PersistentMessageExpiryMonitorTest
- [fix][test][branch-4.0] Fix PulsarFunctionTlsTest
For the complete list, check the full changelog.