Apache Pulsar 4.2.3
2026-07-06
Backported PIP
- [feat][pip] PIP-469: Legacy-aware topic policies backend routing and metadata-store topic policies (#25547)
Library updates
- [fix][sec] Bump github.com/go-jose/go-jose/v4 from 4.1.3 to 4.1.4 in /pulsar-function-go (#26142)
- [fix][sec] Upgrade jline to 4.2.1 and picocli to 4.7.7, drop unused jline2 (#26068)
- [fix][sec] Upgrade pulsar-client-go to v0.20.0 in pulsar-function-go, also address CVEs (#26140)
- [improve][fn] Upgrade pulsar-client-python to 3.12.0 (#26033)
- [improve][fn] Upgrade pulsar-client-python to 3.13.0 (#26139)
- [improve][misc] Upgrade Apache Commons libraries and Apache Http components (#25963)
- [fix][sec][branch-4.2] Upgrade Jackson version to 2.18.8 (#26099)
- [improve][meta] Upgrade Oxia client to 0.8.0 (#25964)
- [fix][build][branch-4.2] Upgrade docker/setup-qemu-action to v4.1.0
Broker
- [fix][broker] Avoid attaching a consumer to a migrated non-persistent topic on subscribe (#26075)
- [fix][broker] Avoid blocking metadata read on the IO thread when redirecting migrated producers/consumers (#26051)
- [fix][broker] Avoid blocking the bundle-throughput lookup on per-bundle metadata reads (#26054)
- [fix][broker] Avoid blocking the dispatcher close path on delayed-delivery tracker close (#26053)
- [fix][broker] Don't let a closing topic-policies reader abort a concurrent cache-init reload (#26132)
- [fix][broker] Don't let a stuck or aborted topic policies cache init make a namespace's topics unloadable (#26025)
- [fix][broker] Fail fast for load balancer misconfigurations instead of falling back to SimpleLoadManagerImpl (#26031)
- [fix][broker] Fix compacted read could be stuck forever or message loss due to cursor mark delete (#25998)
- [fix][broker] Fix forced topic/namespace deletion hanging or failing when compaction is in progress (#26016)
- [fix][broker] Fix forced topic/namespace deletion still hanging when the compaction reader reconnect stalls (#26026)
- [fix][broker] Fix geo-replication stuck after a failed publish to the remote cluster (#26002)
- [fix][broker] Fix replication stall when a cursor rewind skips an in-flight read (#26106)
- [fix][broker] Fix replicator getting stuck under rate limiter throttling and honor readBatchSize/maxReadSizeBytes on the default read path (#26005)
- [fix][broker] Fix tableview divergence in ServiceUnitStateTableViewSyncer causing flaky tests (#25946)
- [fix][broker] Forward topic policy updates after init failures (#26110)
- [fix][broker] Guard BucketDelayedDeliveryTracker.nextDeliveryTime against empty queues (#26080)
- [fix][broker] Prevent subscribe rate limit from stalling compaction and blocking forced deletion (#26015)
- [fix][broker] Prevent topic policy initialization race with a buffering listener wrapper (#26044)
- [fix][broker] Run the message expiry check off the topic policy update path (#26040)
- [fix][broker] Run topic policy notifications on the topic-ordered executor (#26042)
- [fix][broker]Do not trigger topic GC if replication is still active (#25915)
- [fix][meta] Keep the leader value in the election cycle and make leader reads authoritative (#26000)
- [fix][meta] Run ledger-underreplication notification callbacks off the metadata-store listener thread (#26065)
- [improve][broker] Improve dispatch performance by summing entry bytes with a loop (#26055)
- [improve][broker] Load topic policies on non-persistent topic load and gate the policy replay (#26134)
- [improve][broker] Trim orphaned bucket snapshots when ledgers are deleted (#25984)
- [feat][broker] Expose managed ledger properties via topic internal stats (#26079)
- [feat][broker] PIP-469: Legacy-aware topic policies backend routing and metadata-store topic policies (#25707)
- [fix][broker] Fix delayed messages stalling with isDelayedDeliveryDeliverAtTimeStrict=true (#26012)
- [fix][ml] Fix eviction trigger race that cleared the in-progress marker (#25988)
- [fix][ml] Reset messageMetadataInitialized when recycling RangeCacheEntryWrapper (#25987)
Client
- [fix][client] Run the failover health probe off the Netty event-loop thread (#26064)
- [fix][client] Prevent client shutdown from leaking event loop threads when DNS resolver close fails (#26045)
Pulsar IO and Pulsar Functions
- [fix][fn] Make exclusiveLeaderProducer volatile in FunctionMetaDataManager (#26046)
- [fix][fn] Reorder Function Worker shutdown to stop scheduler before runtime manager (#26136)
Others
- [fix][proxy] Avoid blocking the proxy IO thread on a cold broker cache (#26052)
- [fix] functions: Run worker leader-election off the consumer event-listener thread (#26059)
Tests & CI
- [fix][test] Deflake TopicPoliciesTest.setupTestTopic by retrying forced namespace deletion (#25974)
- [fix][test] Fix flaky AuditorBookieTest.testBookieClusterRestart (#26122)
- [fix][test] Fix flaky ExtensibleLoadManagerImplTest by re-serving the channel topic in initializeState (#25976)
- [fix][test] Fix flaky ExtensibleLoadManagerImplTest.initializeState by recovering wedged channel ownership (#25977)
- [fix][test] Fix flaky PersistentTopicsTest setup caused by concurrent Mockito stubbing (#26083)
- [fix][test] Fix flaky SchemaServiceTest.testSchemaRegistryMetrics (#25645)
- [fix][test] Fix flaky testPrepareInitPoliciesCacheAsyncThrowExceptionAfterCreateReader (#26049)
- [fix][test] Make SameAuthParamsLookupAutoClusterFailoverTest less timing-sensitive (#25675)
- [fix][test] Run makeReadEntryProbFail's errorOrNot on a caller-provided executor (#26123)
- [improve][test]Add test: test/testTopicPartitionCannotBeCreatedAfterTopicDeleted (#26038)
- [fix][test][branch-4.2] Adapt ConfigurationDataUtilsTest to Jackson 2.18.8 InetSocketAddress deserialization
For the complete list, check the full changelog.