Skip to content

Releases: apache/pulsar

v4.1.2

17 Nov 07:58
v4.1.2

Choose a tag to compare

2025-11-17

Library updates

  • [fix] Update gRPC to 1.75.0 (#24813)
  • [improve][misc] Upgrade Netty to 4.1.128.Final (#24911)
  • [improve] Upgrade Alpine base image to 3.22 version (#24840)
  • [improve][ml] Upgrade Oxia client to 0.7.0 (#24824)
  • [fix][sec] Added Exclusions for tomcat-embed-core and derby and override mina-core to remediate CVEs (#24949)
  • [fix][sec] Bump io.vertx:vertx-web from 4.5.10 to 4.5.22 (#24889)
  • [fix][sec] Override commons-beanutils and commons-configuration2 to remediate CVEs (#24936)
  • [fix][sec] Override kafka-clients in kinesis-kpl-shaded to remediate CVE-2024-31141 and CVE-2025-27817 (#24935)
  • [fix][sec] Override nimbus-jose-jwt to remediate CVE-2023-52428 and CVE-2025-53864 (#24937)
  • [fix][sec] Update Hbase version to 2.6.3-hadoop3 and exclude Avro from hbase-client to remediate CVEs (#24953)
  • [fix][sec] Upgrade BouncyCastle FIPS to 2.0.10 to remediate CVE-2025-8916 (#24923)
  • [fix][sec] Upgrade hadoop3 version from 3.4.0 to 3.4.1 (#24950)
  • [fix][sec] Upgrade Jetty to 9.4.58.v20250814 to address CVE-2025-5115 (#24897)
  • [fix][sec] Upgrade Spring to 6.2.12 to remediate CVE-2025-22233 and CVE-2025-41249 (#24903)
  • [improve][io] Upgrade Debezium version to 3.2.4.Final (#24896)
  • [improve][ci] Upgrade GitHub Actions workflows to use ubuntu-24.04 (#24841)

Broker

  • [fix][broker] Allow intermittent error from topic policies service when loading topics (#24829)
  • [fix][broker] AvgShedder comparison error (#24954)
  • [fix][broker] Avoid recursive update in ConcurrentHashMap during policy cache cleanup (#24939)
  • [fix][broker] BacklogMessageAge is not reset when cursor mdPosition is on an open ledger (#24915)
  • [fix][broker] Ensure LoadSheddingTask is scheduled after metadata service is available again (#24838)
  • [fix][broker] ExtensibleLoadManager: handle SessionReestablished and Reconnected events to re-register broker metadata (#24932)
  • [fix][broker] Fix bug in PersistentMessageExpiryMonitor which blocked further expirations (#24941)
  • [fix][broker] fix getMaxReadPosition in TransactionBufferDisable should return latest (#24898)
  • [fix][broker] Fix incorrect topic loading latency metric and timeout might not be respected (#24785)
  • [fix][broker] Fix stack overflow caused by race condition when closing a connection (#24934)
  • [fix][broker] Fix totalAvailablePermits not reduced when removing consumer from non-persistent dispatcher (#24885)
  • [fix][broker] Fix wrong behaviour when using namespace.allowed_clusters, such as namespace deletion and namespace policies updating (#24860)
  • [fix][broker] Flaky-test: ExtensibleLoadManagerImplTest.testDisableBroker (#24770)
  • [fix][broker] Flaky-test: TopicTransactionBufferTest.testMessagePublishInOrder (#24826)
  • [fix][broker] Run ResourceGroup tasks only when tenants/namespaces registered (#24859)
  • [fix][broker] Stop to retry to read entries if the replicator has terminated (#24880)
  • [fix][broker] Trigger topic creation event only once for non-existent topic (#24802)
  • [fix][broker] Use poll instead remove to avoid NoSuchElementException (#24933)
  • [fix][broker]Leaving orphan schemas and topic-level policies after partitioned topic is deleted by GC (#24971)
  • [fix][broker]Transactional messages can never be sent successfully if concurrently taking transaction buffer snapshot (#24945)
  • [fix][admin] Set local policies overwrites "number of bundles" passed during namespace creation (#24762)
  • [fix][ml] Fix getNumberOfEntries may point to deleted ledger (#24852)
  • [fix][ml] Fix ledger trimming race causing cursor to point to deleted ledgers (#24855)
  • [fix][ml] PIP-430: Fix concurrency issue in MessageMetadata caching and improve caching (#24836)
  • [fix]Fixed getChildren('/') on Oxia based provider (#24863)
  • [improve][broker] Add tests for using absolute FQDN for advertisedAddress and remove extra dot from brokerId (#24787)
  • [improve][broker] Cache last publish timestamp for idle topics to reduce storage reads (#24825)
  • [improve][broker] Don't log an error when updatePartitionedTopic is called on a non-partitioned topic (#24943)
  • [improve][broker] Optimize lookup result warn log (#24942)
  • [improve][broker] Part-1 of PIP-434: Expose Netty channel configuration WRITE_BUFFER_WATER_MARK to pulsar conf and pause receive requests when channel is unwritable (#24423)
  • [improve][broker] Part-2 of PIP-434: Use ServerCnxThrottleTracker, instead of modifying channel.readable directly (#24799)
  • [improve][broker] PIP-434: add configurations to broker.conf (#24800)
  • [improve][broker] Reduce the broker close time to avoid useless wait for event loop shutdown (#24895)
  • [improve][broker] Replace isServiceUnitActiveAsync with checkTopicNsOwnership (#24780)
  • [improve][broker]Call scheduleAtFixedRateNonConcurrently for scheduled tasks, instead of scheduleAtFixedRate (#24596)
  • [improve][broker]Improve NamespaceService log that is printed when cluster was removed (#24801)
  • [improve][broker]Skip to mark delete if the target position of expira… (#24881)
  • [fix][txn] fix concurrent error cause txn stuck in TransactionBufferHandlerImpl#endTxn (#23551)
  • [cleanup][broker] Remove unused configuration maxMessageSizeCheckIntervalInSeconds (#24958)
  • [feat][monitor] Add ML write latency histogram and entry size histogram as OTel metrics (#24815)
  • [feat][monitor] Add publish latency histogram as OTel metrics (#24810)
  • [feat] PIP-442: Add memory limits for CommandGetTopicsOfNamespace (#24833)

Client

  • [fix][client] Add description method to ClientBuilder (#24728)
  • [fix][client] Fix deduplication for getPartitionedTopicMetadata to include method parameters (#24965)
  • [fix][client] Fix getPendingQueueSize for PartitionedTopicProducerStatsRecorderImpl: avoid NPE and implement aggregation (#24830)
  • [fix][client] Fix PulsarAdmin description check and add test (#24734)
  • [fix][client] Fix thread leak in reloadLookUp method which is used by ServiceUrlProvider (#24794)
  • [fix][client] Make auto partitions update work for old brokers without PIP-344 (#24822)
  • [improve][client] Allow adding custom description to User-Agent header (#24729)
  • [improve][client] Deduplicate getTopicsUnderNamespace in BinaryProtoLookupService (#24962)
  • [improve][client] PIP-420: Update the schema ID format (#24798)
  • [improve][client]Add null check for Pulsar client clock configuration (#24848)
  • [feat][client] Implement PIP-234 for sharing thread pools and DNS resolver/cache across multiple Pulsar Client instances (#24790)
  • [feat][client] PIP-234: Support shared resources in PulsarAdmin to reduce thread usage (#24893)
  • [improve][client/broker] Add Dns...
Read more

v4.0.8

17 Nov 07:58
v4.0.8

Choose a tag to compare

2025-11-17

Library updates

  • [fix] Update gRPC to 1.75.0 (#24813)
  • [improve][misc] Upgrade Netty to 4.1.128.Final (#24911)
  • [improve][ml] Upgrade Oxia client to 0.7.0 (#24824)
  • [fix][sec] Added Exclusions for tomcat-embed-core and derby and override mina-core to remediate CVEs (#24949)
  • [fix][sec] Bump io.vertx:vertx-web from 4.5.10 to 4.5.22 (#24889)
  • [fix][sec] Override commons-beanutils and commons-configuration2 to remediate CVEs (#24936)
  • [fix][sec] Override kafka-clients in kinesis-kpl-shaded to remediate CVE-2024-31141 and CVE-2025-27817 (#24935)
  • [fix][sec] Override nimbus-jose-jwt to remediate CVE-2023-52428 and CVE-2025-53864 (#24937)
  • [fix][sec] Update Hbase version to 2.6.3-hadoop3 and exclude Avro from hbase-client to remediate CVEs (#24953)
  • [fix][sec] Upgrade BouncyCastle FIPS to 2.0.10 to remediate CVE-2025-8916 (#24923)
  • [fix][sec] Upgrade hadoop3 version from 3.4.0 to 3.4.1 (#24950)
  • [fix][sec] Upgrade Jetty to 9.4.58.v20250814 to address CVE-2025-5115 (#24897)
  • [fix][sec] Upgrade Spring to 6.2.12 to remediate CVE-2025-22233 and CVE-2025-41249 (#24903)
  • [improve][ci] Upgrade GitHub Actions workflows to use ubuntu-24.04 (#24841)

Broker

  • [fix][broker] Allow intermittent error from topic policies service when loading topics (#24829)
  • [fix][broker] AvgShedder comparison error (#24954)
  • [fix][broker] Avoid recursive update in ConcurrentHashMap during policy cache cleanup (#24939)
  • [fix][broker] BacklogMessageAge is not reset when cursor mdPosition is on an open ledger (#24915)
  • [fix][broker] Ensure LoadSheddingTask is scheduled after metadata service is available again (#24838)
  • [fix][broker] ExtensibleLoadManager: handle SessionReestablished and Reconnected events to re-register broker metadata (#24932)
  • [fix][broker] Fix bug in PersistentMessageExpiryMonitor which blocked further expirations (#24941)
  • [fix][broker] fix getMaxReadPosition in TransactionBufferDisable should return latest (#24898)
  • [fix][broker] Fix incorrect topic loading latency metric and timeout might not be respected (#24785)
  • [fix][broker] Fix stack overflow caused by race condition when closing a connection (#24934)
  • [fix][broker] Fix totalAvailablePermits not reduced when removing consumer from non-persistent dispatcher (#24885)
  • [fix][broker] Fix wrong behaviour when using namespace.allowed_clusters, such as namespace deletion and namespace policies updating (#24860)
  • [fix][broker] Flaky-test: ExtensibleLoadManagerImplTest.testDisableBroker (#24770)
  • [fix][broker] Flaky-test: TopicTransactionBufferTest.testMessagePublishInOrder (#24826)
  • [fix][broker] Run ResourceGroup tasks only when tenants/namespaces registered (#24859)
  • [fix][broker] Stop to retry to read entries if the replicator has terminated (#24880)
  • [fix][broker] Trigger topic creation event only once for non-existent topic (#24802)
  • [fix][broker] Use poll instead remove to avoid NoSuchElementException (#24933)
  • [fix][broker]Leaving orphan schemas and topic-level policies after partitioned topic is deleted by GC (#24971)
  • [fix][broker]Transactional messages can never be sent successfully if concurrently taking transaction buffer snapshot (#24945)
  • [fix][admin] Set local policies overwrites "number of bundles" passed during namespace creation (#24762)
  • [fix][ml] Fix getNumberOfEntries may point to deleted ledger (#24852)
  • [fix][ml] Fix ledger trimming race causing cursor to point to deleted ledgers (#24855)
  • [fix]Fixed getChildren('/') on Oxia based provider (#24863)
  • [improve][broker] Add tests for using absolute FQDN for advertisedAddress and remove extra dot from brokerId (#24787)
  • [improve][broker] Don't log an error when updatePartitionedTopic is called on a non-partitioned topic (#24943)
  • [improve][broker] Optimize lookup result warn log (#24942)
  • [improve][broker] Part-1 of PIP-434: Expose Netty channel configuration WRITE_BUFFER_WATER_MARK to pulsar conf and pause receive requests when channel is unwritable (#24423)
  • [improve][broker] Part-2 of PIP-434: Use ServerCnxThrottleTracker, instead of modifying channel.readable directly (#24799)
  • [improve][broker] PIP-434: add configurations to broker.conf (#24800)
  • [improve][broker] Reduce the broker close time to avoid useless wait for event loop shutdown (#24895)
  • [improve][broker] Replace isServiceUnitActiveAsync with checkTopicNsOwnership (#24780)
  • [improve][broker]Call scheduleAtFixedRateNonConcurrently for scheduled tasks, instead of scheduleAtFixedRate (#24596)
  • [improve][broker]Improve NamespaceService log that is printed when cluster was removed (#24801)
  • [improve][broker]Skip to mark delete if the target position of expira… (#24881)
  • [fix][txn] fix concurrent error cause txn stuck in TransactionBufferHandlerImpl#endTxn (#23551)
  • [cleanup][broker] Remove unused configuration maxMessageSizeCheckIntervalInSeconds (#24958)
  • [fix][broker][branch-4.0] Fix failed testFinishTakeSnapshotWhenTopicLoading due to topic future cache conflicts (#24947)
  • [improve][broker] Separate offload read and write thread pool (#24025)
  • [fix][monitor] Fix the incorrect metrics name (#21981)

Client

  • [fix][client] Fix deduplication for getPartitionedTopicMetadata to include method parameters (#24965)
  • [fix][client] Fix getPendingQueueSize for PartitionedTopicProducerStatsRecorderImpl: avoid NPE and implement aggregation (#24830)
  • [fix][client] Fix thread leak in reloadLookUp method which is used by ServiceUrlProvider (#24794)
  • [fix][client] Make auto partitions update work for old brokers without PIP-344 (#24822)
  • [improve][client] Deduplicate getTopicsUnderNamespace in BinaryProtoLookupService (#24962)
  • [improve][client]Add null check for Pulsar client clock configuration (#24848)
  • [fix] Fix mixed lookup/partition metadata requests causing reliability issues and incorrect responses (#24832)

Pulsar IO and Pulsar Functions

  • [improve][fn] Use PulsarByteBufAllocator.DEFAULT instead of ByteBufAllocator.DEFAULT (#24952)

Tests & CI

  • [fix][build] Fix maven deploy with maven-source-plugin 3.3.1 (#24811)
  • [fix][build] Remove invalid profile in settings.xml that caused gpg signing to fail (#24812)
  • [fix][test] Add Delta Tolerance in Double-Precision Assertions to Fix Rounding Flakiness (#24972)
  • [fix][test] BacklogQuotaManagerTest.backlogsAgeMetricsNoPreciseWithoutBacklogQuota handle empty /metrics scrape (#24887)
  • [fix][test] Fix flaky KeySharedSubscriptionBrokerCacheTest.testReplayQueueReadsGettingCached (#24955)
  • [fix][test] Fix flaky LookupPropertiesTest.testConcurrentLookupProperties (#24854)
  • [fix][test] Fix flaky NonPersistentTopicTest.testProducerRateLimit ([#24951](#2...
Read more

v3.0.15

17 Nov 07:57
v3.0.15

Choose a tag to compare

2025-11-17

Library updates

  • [improve][misc] Upgrade Netty to 4.1.128.Final (#24911)
  • [fix][sec] Bump io.vertx:vertx-web from 4.5.10 to 4.5.22 (#24889)
  • [fix][sec] Upgrade BouncyCastle FIPS to 2.0.10 to remediate CVE-2025-8916 (#24923)
  • [fix][sec] Upgrade Jetty to 9.4.58.v20250814 to address CVE-2025-5115 (#24897)
  • [fix][sec] Upgrade Spring to 6.2.12 to remediate CVE-2025-22233 and CVE-2025-41249 (#24903)
  • [improve][ci] Upgrade GitHub Actions workflows to use ubuntu-24.04 (#24841)

Broker

  • [fix][broker] Avoid recursive update in ConcurrentHashMap during policy cache cleanup (#24939)
  • [fix][broker] BacklogMessageAge is not reset when cursor mdPosition is on an open ledger (#24915)
  • [fix][broker] fix getMaxReadPosition in TransactionBufferDisable should return latest (#24898)
  • [fix][broker] Fix stack overflow caused by race condition when closing a connection (#24934)
  • [fix][broker] Fix totalAvailablePermits not reduced when removing consumer from non-persistent dispatcher (#24885)
  • [fix][broker] Flaky-test: ExtensibleLoadManagerImplTest.testDisableBroker (#24770)
  • [fix][broker] Run ResourceGroup tasks only when tenants/namespaces registered (#24859)
  • [fix][broker] Stop to retry to read entries if the replicator has terminated (#24880)
  • [fix][broker] Trigger topic creation event only once for non-existent topic (#24802)
  • [fix][admin] Set local policies overwrites "number of bundles" passed during namespace creation (#24762)
  • [fix][ml] Fix getNumberOfEntries may point to deleted ledger (#24852)
  • [fix][txn] fix concurrent error cause txn stuck in TransactionBufferHandlerImpl#endTxn (#23551)
  • [cleanup][broker][branch-3.0] Remove no-op configurations caused by cherry-picking (#24960)

Client

  • [fix][client] Fix deduplication for getPartitionedTopicMetadata to include method parameters (#24965)
  • [fix][client] Fix getPendingQueueSize for PartitionedTopicProducerStatsRecorderImpl: avoid NPE and implement aggregation (#24830)
  • [fix][client] Fix thread leak in reloadLookUp method which is used by ServiceUrlProvider (#24794)
  • [fix][client] Make auto partitions update work for old brokers without PIP-344 (#24822)
  • [improve][client]Add null check for Pulsar client clock configuration (#24848)
  • [fix] Fix mixed lookup/partition metadata requests causing reliability issues and incorrect responses (#24832)

Tests & CI

  • [fix][build] Remove invalid profile in settings.xml that caused gpg signing to fail (#24812)
  • [fix][test] Fix flaky KeySharedSubscriptionBrokerCacheTest.testReplayQueueReadsGettingCached (#24955)
  • [fix][test] Fix flaky NonPersistentTopicTest.testProducerRateLimit (#24951)
  • [fix][test] Fix flaky ReplicatorTest.testResumptionAfterBacklogRelaxed (#24904)
  • [fix][test] Fix flaky SubscriptionSeekTest.testSeekWillNotEncounteredFencedError by counting subscription is fenced only after seek (#24865)
  • [fix][test] Fix invalid test NonPersistentTopicTest.testProducerRateLimit (#24957)
  • [fix][test] Stabilize SequenceIdWithErrorTest by fencing after first publish to avoid empty-ledger deletion and send timeout (#24861)
  • [fix][test] Stabilize testMsgDropStat by reliably triggering non-persistent publisher drop (#24929)
  • [improve][ci] Move replication tests to new group Broker Group 5 in Pulsar CI (#24917)
  • [fix][ci][branch-3.0] Drop UBUNTU_MIRROR/UBUNTU_SECURITY_MIRROR support in Dockerfile since it's broken
  • [fix][test][branch-3.0] Backport test case so that it compiles in branch-3.0

For the complete list, check the full changelog.

v4.1.1

27 Sep 04:40
v4.1.1

Choose a tag to compare

2025-09-27

Library updates

  • [fix][sec] Upgrade Netty to 4.1.127.Final to address CVEs (#24717)
  • [improve][build] Upgrade Lombok to 1.18.42 to fully support JDK25 (#24763)
  • [improve][build] Upgrade Apache Parent POM to version 35 (#24742)
  • [improve][build] Upgrade Mockito, AssertJ and ByteBuddy to fully support JDK25 (#24764)
  • [improve][build] Upgrade SpotBugs to a version that supports JDK25 (#24768)
  • [feat][misc] upgrade oxia version to 0.6.2 (#24689)
  • [improve][io] Upgrade to Debezium 3.2.2 (#24712)

Broker

  • [fix][broker] Key_Shared subscription doesn't always deliver messages from the replay queue after a consumer disconnects and leaves a backlog (#24736)
  • [fix][broker] Ensure KeyShared sticky mode consumer respects assigned ranges (#24730)
  • [fix][broker] First entry will be skipped if opening NonDurableCursor while trimmed ledger is adding first entry. (#24738)
  • [fix][broker] Fix cannot shutdown broker gracefully by admin api (#24731)
  • [fix][broker] Fix memory leak when metrics are updated in a thread other than FastThreadLocalThread (#24719)
  • [fix][broker] Prevent unexpected recycle failure in dispatcher's read callback (#24741)
  • [fix][broker]Fix never recovered metadata store bad version issue if received a large response from ZK (#24580)
  • [fix][ml]Fix EOFException after enabled topics offloading (#24753)
  • [fix][broker] Fix NPE and annotate nullable return values for ManagedCursorContainer (#24706)
  • [fix][broker]Dispatcher did unnecessary sort for recentlyJoinedConsumers and printed noisy error logs (#24634)
  • [fix][broker]Fix dirty reading of namespace level offload thresholds (#24696)
  • [fix][ml] Negative backlog & acked positions does not exist & message lost when concurrently occupying topic owner (#24722)
  • [improve][broker] If there is a deadlock in the service, the probe should return a failure because the service may be unavailable (#23634)
  • [improve][broker] Allow deletion of empty persistent topics regardless of retention policy (#24733)
  • [improve][broker] PIP-402: Optionally prevent role/originalPrincipal logging (#23386)
  • [improve][broker] Reduce unnecessary MessageMetadata parsing by caching the parsed instance in the broker cache (#24682)
  • [improve][ml] Improve cache insert performance by removing exists check since it's already covered by putIfAbsent (#24699)

Client

  • [fix][client] Avoid recycling the same ConcurrentBitSetRecyclable among different threads (#24725)
  • [fix][client] Fix receiver queue auto-scale without memory limit (#24743)
  • [fix][client]TopicListWatcher not closed when calling PatternMultiTopicsConsumerImpl.closeAsync() method (#24698)
  • [fix][client] rollback TopicListWatcher retry behavior (#24752)
  • [fix][client] Exclude io.prometheus:simpleclient_caffeine from client-side dependencies (#24761)
  • [improve][client] PIP-407 Add newMessage with schema and transactions (#23942)

Pulsar IO and Pulsar Functions

  • [fix][io] Improve Kafka Connect source offset flushing logic (#24654)
  • [feat][fn] Fallback to using STATE_STORAGE_SERVICE_URL in PulsarMetadataStateStoreProviderImpl.init (#24721)

Others

  • [fix][misc] Fix compareTo contract violation for NamespaceBundleStats, TimeAverageMessageData and ResourceUnitRanking (#24772)
  • [fix] Exclude commons-lang dep from bookkeeper (#24749)

Tests & CI

  • [fix][test] Flaky-test: BrokerServiceTest.testShutDownWithMaxConcurrentUnload (#24769)
  • [fix][broker] Fix testServiceConfigurationRetentionPolicy unit test (#24756)
  • [fix][broker]Fix the wrong logic of the test PartitionCreationTest.testCreateMissedPartitions (#24683)
  • [improve][build] Disable javadoc build failure (#24594)
  • [fix][ci] Fix CI for Java 25 including upgrade of Gradle Develocity Maven extension (#24767)

For the complete list, check the full changelog.

v4.0.7

27 Sep 04:40
v4.0.7

Choose a tag to compare

2025-09-27

Library updates

  • [fix][sec] Upgrade bouncycastle bcpkix-fips version to 1.79 to address CVE-2025-8916 (#24650)
  • [fix][sec] Upgrade Netty to 4.1.127.Final to address CVEs (#24717)
  • [fix][sec] Upgrade to Netty 4.1.124.Final to address CVE-2025-55163 (#24637)
  • [improve][io] Upgrade AWS SDK v1 & v2, Kinesis KPL and KPC versions (#24661)
  • [fix][misc] Upgrade dependencies to fix critical security vulnerabilities (#24532)
  • [improve][build] Upgrade Lombok to 1.18.42 to fully support JDK25 (#24763)
  • [improve][broker] Upgrade avro version to 1.12.0 (#24617)
  • [fix][misc] Upgrade fastutil to 8.5.16 (#24659)
  • [improve][build] Upgrade Apache Parent POM to version 35 (#24742)
  • [improve][build] Upgrade Mockito, AssertJ and ByteBuddy to fully support JDK25 (#24764)
  • [improve][build] Upgrade SpotBugs to a version that supports JDK25 (#24768)
  • [feat][misc] upgrade oxia version to 0.6.2 (#24689)

Broker

  • [fix][broker] Key_Shared subscription doesn't always deliver messages from the replay queue after a consumer disconnects and leaves a backlog (#24736)
  • [fix][broker] Ensure KeyShared sticky mode consumer respects assigned ranges (#24730)
  • [fix][broker] PIP-428: Fix corrupted topic policies issues with sequential topic policy updates (#24427)
  • [fix][broker][branch-4.0]Can not access topic policies if topic partitions have not been created (#24680)
  • [fix][broker] Add double-check for non-durable cursor creation (#24643)
  • [fix][broker] First entry will be skipped if opening NonDurableCursor while trimmed ledger is adding first entry. (#24738)
  • [fix][broker] Fix cannot shutdown broker gracefully by admin api (#24731)
  • [fix][broker] Fix duplicate watcher registration after SessionReestablished (#24621)
  • [fix][broker] Fix memory leak when metrics are updated in a thread other than FastThreadLocalThread (#24719)
  • [fix][broker] Fix race condition in MetadataStoreCacheLoader causing inconsistent availableBroker list caching (#24639)
  • [fix][broker] Fix REST API to produce messages to single-partitioned topics (#24450)
  • [fix][broker] Invalid regex in PulsarLedgerManager causes zk data notification to be ignored (#23977)
  • [fix][broker] Prevent unexpected recycle failure in dispatcher's read callback (#24741)
  • [fix][broker]Fix never recovered metadata store bad version issue if received a large response from ZK (#24580)
  • [fix][ml]Fix EOFException after enabled topics offloading (#24753)
  • [fix][broker] Fix incorrect AuthData passed to AuthorizationService in proxy scenarios (#24593)
  • [fix][broker] Fix namespace deletion TLS URL selection for geo-replication (#24591)
  • [fix][broker] Fix NPE and annotate nullable return values for ManagedCursorContainer (#24706)
  • [fix][broker] Fix NPE being logged if load manager class name is blank (#24570)
  • [fix][broker]Dispatcher did unnecessary sort for recentlyJoinedConsumers and printed noisy error logs (#24634)
  • [fix][broker]Failed to create partitions after the partitions were deleted because topic GC (#24651)
  • [fix][broker]Fix dirty reading of namespace level offload thresholds (#24696)
  • [fix][broker]Fix thread safety issues in BucketDelayedDeliveryTracker with StampedLock optimistic reads (#24542)
  • [fix][broker]User topic failed to delete after removed cluster because of failed delete data from transaction buffer topic (#24648)
  • [fix][ml] Negative backlog & acked positions does not exist & message lost when concurrently occupying topic owner (#24722)
  • [fix][meta] Use getChildrenFromStore to read children data to avoid lost data (#24665)
  • [improve][admin] PIP-422 part 1: Support global topic-level replicated clusters policy (#24390)
  • [improve][broker]Part-2 Add Admin API to delete topic policies (#24602)
  • [improve][broker] If there is a deadlock in the service, the probe should return a failure because the service may be unavailable (#23634)
  • [improve][ml] Optimize ledger opening by skipping fully acknowledged ledgers (#24655)
  • [improve][broker] Allow deletion of empty persistent topics regardless of retention policy (#24733)
  • [improve][broker] Extract duplication in AbstractTopic#incrementTopicEpochIfNeeded (#24520)
  • [improve][broker]Find the target position at most once, during expiring messages for a topic, even though there are many subscriptions (#24622)
  • [improve][broker]Improve the anti-concurrency mechanism expirationCheckInProgress (#24607)
  • [improve][broker]Remove block calling that named cursor.asyncGetNth when expiring messages (#24606)

Client

  • [fix][client] Avoid recycling the same ConcurrentBitSetRecyclable among different threads (#24725)
  • [fix][client] fix ArrayIndexOutOfBoundsException in SameAuthParamsLookupAutoClusterFailover (#24662)
  • [fix][client] Fix ArrayIndexOutOfBoundsException when using SameAuthParamsLookupAutoClusterFailover (#23336)
  • [fix][client] Fix receiver queue auto-scale without memory limit (#24743)
  • [fix][client] Retry for unknown exceptions when creating a producer or consumer (#24599)
  • [fix][client] Skip schema validation when sending messages to DLQ to avoid infinite loop when schema validation fails on an incoming message (#24663)
  • [fix][client]Prevent ZeroQueueConsumer from receiving batch messages when using MessagePayloadProcessor (#24610)
  • [fix][client]TopicListWatcher not closed when calling PatternMultiTopicsConsumerImpl.closeAsync() method (#24698)
  • [fix][client] rollback TopicListWatcher retry behavior (#24752)
  • [improve][client] Support load RSA PKCS#8 private key (#24582)
  • [fix][client] Exclude io.prometheus:simpleclient_caffeine from client-side dependencies (#24761)
  • [improve][client] Add OpenTelemetry metrics for client memory buffer usage (#24647)
  • [improve][client] RawReader support pause and resume (#24597)
  • [fix][client] Refactor AttributeWrappedMeasurement to use a class instead of a record to compatible with lower version JDK

Pulsar IO and Pulsar Functions

  • [fix][io] Improve Kafka Connect source offset flushing logic (#24654)
  • [improve][io] Add dependency file name information to error message when .nar file validation fails with ZipException (#24604)
  • [improve][io] Support specifying Kinesis KPL native binary path with 1.0 version specific path (#24669)
  • [improve][io] Add support for the complete KinesisProducerConfiguration in KinesisSinkConfig (#24489)
  • [feat][fn] Fallback to using STATE_STORAGE_SERVICE_URL in PulsarMetadataStateStoreProviderImpl.init (#24721)

Others

  • [fix][proxy] Fix TooLongFrameException with Pulsar Proxy (#24626)
  • [fix][misc] Fix compareTo contract violation for NamespaceBundleStats, TimeAverageMessageData and ResourceUnitRanking (#24772)
  • [improve][doc] Improve the JavaDocs of sendAsync t...
Read more

v3.3.9

27 Sep 04:39
v3.3.9

Choose a tag to compare

2025-09-27

Library updates

  • [fix][sec] Upgrade bouncycastle bcpkix-fips version to 1.79 to address CVE-2025-8916 (#24650)
  • [fix][sec] Upgrade Netty to 4.1.127.Final to address CVEs (#24717)
  • [fix][sec] Upgrade to Netty 4.1.124.Final to address CVE-2025-55163 (#24637)
  • [improve][build] Bump org.apache.commons:commons-lang3 from 3.17.0 to 3.18.0 (#24514)
  • [improve][io] Upgrade AWS SDK v1 & v2, Kinesis KPL and KPC versions (#24661)
  • [fix][misc] Upgrade dependencies to fix critical security vulnerabilities (#24532)
  • [improve][build] Upgrade Lombok to 1.18.42 to fully support JDK25 (#24763)
  • [improve][build] Upgrade Apache Parent POM to version 35 (#24742)

Broker

  • [fix][broker] Add double-check for non-durable cursor creation (#24643)
  • [fix][broker] Ensure KeyShared sticky mode consumer respects assigned ranges (#24730)
  • [fix][broker] First entry will be skipped if opening NonDurableCursor while trimmed ledger is adding first entry. (#24738)
  • [fix][broker] Fix cannot shutdown broker gracefully by admin api (#24731)
  • [fix][broker] Fix duplicate watcher registration after SessionReestablished (#24621)
  • [fix][broker] Fix memory leak when metrics are updated in a thread other than FastThreadLocalThread (#24719)
  • [fix][broker] Fix race condition in MetadataStoreCacheLoader causing inconsistent availableBroker list caching (#24639)
  • [fix][broker] Fix REST API to produce messages to single-partitioned topics (#24450)
  • [fix][broker] Invalid regex in PulsarLedgerManager causes zk data notification to be ignored (#23977)
  • [fix][broker] Prevent unexpected recycle failure in dispatcher's read callback (#24741)
  • [improve][broker] If there is a deadlock in the service, the probe should return a failure because the service may be unavailable (#23634)
  • [fix][meta] Use getChildrenFromStore to read children data to avoid lost data (#24665)
  • [improve][broker]Remove block calling that named cursor.asyncGetNth when expiring messages (#24606)

Client

  • [fix][client] Avoid recycling the same ConcurrentBitSetRecyclable among different threads (#24725)
  • [fix][client] fix ArrayIndexOutOfBoundsException in SameAuthParamsLookupAutoClusterFailover (#24662)
  • [fix][client] Fix ArrayIndexOutOfBoundsException when using SameAuthParamsLookupAutoClusterFailover (#23336)
  • [fix][client] Fix receiver queue auto-scale without memory limit (#24743)
  • [fix][client] Retry for unknown exceptions when creating a producer or consumer (#24599)
  • [fix][client] Skip schema validation when sending messages to DLQ to avoid infinite loop when schema validation fails on an incoming message (#24663)
  • [fix][client]Prevent ZeroQueueConsumer from receiving batch messages when using MessagePayloadProcessor (#24610)
  • [fix][client]TopicListWatcher not closed when calling PatternMultiTopicsConsumerImpl.closeAsync() method (#24698)
  • [fix][client] rollback TopicListWatcher retry behavior (#24752)
  • [improve][client] Support load RSA PKCS#8 private key (#24582)

Pulsar IO and Pulsar Functions

  • [fix][io] Improve Kafka Connect source offset flushing logic (#24654)
  • [improve][io] Add dependency file name information to error message when .nar file validation fails with ZipException (#24604)
  • [improve][io] Support specifying Kinesis KPL native binary path with 1.0 version specific path (#24669)
  • [feat][fn] Fallback to using STATE_STORAGE_SERVICE_URL in PulsarMetadataStateStoreProviderImpl.init (#24721)

Others

  • [fix][proxy] Fix TooLongFrameException with Pulsar Proxy (#24626)
  • [fix][misc] Fix compareTo contract violation for NamespaceBundleStats, TimeAverageMessageData and ResourceUnitRanking (#24772)
  • [improve][doc] Improve the JavaDocs of sendAsync to avoid improper use (#24601)
  • [fix][offload] Exclude unnecessary dependencies from tiered storage provider / offloader nar files (#24649)

Tests & CI

  • [improve][build] Use org.apache.nifi:nifi-nar-maven-plugin:2.1.0 with skipDocGeneration=true (#24668)
  • [fix][ci] Fix code coverage metrics in Pulsar CI (#24595)
  • [fix][test] Fix ConcurrentModificationException in Ipv4Proxy (#24632)
  • [fix][test] Flaky-test: BrokerServiceTest.testShutDownWithMaxConcurrentUnload (#24769)
  • [fix][test]fix flaky ZeroQueueSizeTest.testZeroQueueGetExceptionWhenReceiveBatchMessage (#24633)
  • [fix][test]fix flaky ZeroQueueSizeTest.testZeroQueueGetExceptionWhenReceiveBatchMessage (#24630)
  • [fix][broker] Fix flaky testReplicatorsInflightTaskListIsEmptyAfterReplicationFinished (#24590)
  • [improve][build] Disable javadoc build failure (#24594)
  • [improve][build] Increase maven resolver's sync context timeout (#24666)
  • [improve][test] Add test for dead letter topic with max unacked messages blocking (#24535)
  • [improve][test] Refactor the way way pulsar-io-debezium-oracle nar file is patched when building the test image (#24586)
  • [fix][ci] Fix CI for Java 25 including upgrade of Gradle Develocity Maven extension (#24767)

For the complete list, check the full changelog.

v3.0.14

27 Sep 04:37
v3.0.14

Choose a tag to compare

2025-09-27

Library updates

  • [fix][sec] Upgrade bouncycastle bcpkix-fips version to 1.79 to address CVE-2025-8916 (#24650)
  • [fix][sec] Upgrade Netty to 4.1.127.Final to address CVEs (#24717)
  • [fix][sec] Upgrade to Netty 4.1.124.Final to address CVE-2025-55163 (#24637)
  • [improve][build] Bump org.apache.commons:commons-lang3 from 3.17.0 to 3.18.0 (#24514)
  • [improve][io] Upgrade AWS SDK v1 & v2, Kinesis KPL and KPC versions (#24661)
  • [fix][misc] Upgrade dependencies to fix critical security vulnerabilities (#24532)
  • [improve][build] Upgrade Lombok to 1.18.42 to fully support JDK25 (#24763)

Broker

  • [fix][broker] Add double-check for non-durable cursor creation (#24643)
  • [fix][broker] Ensure KeyShared sticky mode consumer respects assigned ranges (#24730)
  • [fix][broker] First entry will be skipped if opening NonDurableCursor while trimmed ledger is adding first entry. (#24738)
  • [fix][broker] Fix cannot shutdown broker gracefully by admin api (#24731)
  • [fix][broker] Fix duplicate watcher registration after SessionReestablished (#24621)
  • [fix][broker] Fix memory leak when metrics are updated in a thread other than FastThreadLocalThread (#24719)
  • [fix][broker] Fix race condition in MetadataStoreCacheLoader causing inconsistent availableBroker list caching (#24639)
  • [fix][broker] Fix REST API to produce messages to single-partitioned topics (#24450)
  • [fix][broker] Invalid regex in PulsarLedgerManager causes zk data notification to be ignored (#23977)
  • [fix][broker] Prevent unexpected recycle failure in dispatcher's read callback (#24741)
  • [fix][broker][branch-3.0] Fix wrong backlog age metrics when the mark delete position point to a deleted ledger (#24518) (#24671)
  • [fix][broker][branch-3.0] Prevent NPE in ownedBundlesCountPerNamespace on first bundle load (#24758)
  • [fix][broker]Fix never recovered metadata store bad version issue if received a large response from ZK (#24580)
  • [fix][ml]Fix EOFException after enabled topics offloading (#24753)
  • [improve][broker] Choose random thread for consumerFlow in PersistentDispatcherSingleActiveConsumer (#20522)
  • [improve][broker] If there is a deadlock in the service, the probe should return a failure because the service may be unavailable (#23634)
  • [improve][broker] Optimize and clean up aggregation of topic stats (#21361)

Client

  • [fix][client] Avoid recycling the same ConcurrentBitSetRecyclable among different threads (#24725)
  • [fix][client] fix ArrayIndexOutOfBoundsException in SameAuthParamsLookupAutoClusterFailover (#24662)
  • [fix][client] Fix ArrayIndexOutOfBoundsException when using SameAuthParamsLookupAutoClusterFailover (#23336)
  • [fix][client] Fix receiver queue auto-scale without memory limit (#24743)
  • [fix][client] Retry for unknown exceptions when creating a producer or consumer (#24599)
  • [fix][client] Skip schema validation when sending messages to DLQ to avoid infinite loop when schema validation fails on an incoming message (#24663)
  • [fix][client]Prevent ZeroQueueConsumer from receiving batch messages when using MessagePayloadProcessor (#24610)
  • [fix][client]TopicListWatcher not closed when calling PatternMultiTopicsConsumerImpl.closeAsync() method (#24698)
  • [fix][client] rollback TopicListWatcher retry behavior (#24752)
  • [improve][client] Support load RSA PKCS#8 private key (#24582)

Pulsar IO and Pulsar Functions

  • [fix][io] Improve Kafka Connect source offset flushing logic (#24654)
  • [improve][io] Add dependency file name information to error message when .nar file validation fails with ZipException (#24604)
  • [improve][io] Support specifying Kinesis KPL native binary path with 1.0 version specific path (#24669)

Others

  • [fix][proxy] Fix TooLongFrameException with Pulsar Proxy (#24626)
  • [fix][misc] Fix compareTo contract violation for NamespaceBundleStats, TimeAverageMessageData and ResourceUnitRanking (#24772)
  • [improve][doc] Improve the JavaDocs of sendAsync to avoid improper use (#24601)
  • [fix][offload] Exclude unnecessary dependencies from tiered storage provider / offloader nar files (#24649)

Tests & CI

  • [improve][build] Use org.apache.nifi:nifi-nar-maven-plugin:2.1.0 with skipDocGeneration=true (#24668)
  • [fix][ci] Fix code coverage metrics in Pulsar CI (#24595)
  • [fix][test] Fix ConcurrentModificationException in Ipv4Proxy (#24632)
  • [fix][test] Flaky-test: BrokerServiceTest.testShutDownWithMaxConcurrentUnload (#24769)
  • [fix][test]fix flaky ZeroQueueSizeTest.testZeroQueueGetExceptionWhenReceiveBatchMessage (#24633)
  • [fix][test]fix flaky ZeroQueueSizeTest.testZeroQueueGetExceptionWhenReceiveBatchMessage (#24630)
  • [fix][broker] Fix flaky testReplicatorsInflightTaskListIsEmptyAfterReplicationFinished (#24590)
  • [improve][build] Disable javadoc build failure (#24594)
  • [improve][build] Increase maven resolver's sync context timeout (#24666)
  • [improve][test] Add test for dead letter topic with max unacked messages blocking (#24535)
  • [improve][test] Refactor the way way pulsar-io-debezium-oracle nar file is patched when building the test image (#24586)
  • [fix][build] Import isNotBlank
  • [fix][ci] Fix CI for Java 25 including upgrade of Gradle Develocity Maven extension (#24767)

For the complete list, check the full changelog.

v4.1.0

08 Sep 07:44
v4.1.0

Choose a tag to compare

Approved PIPs

  • [improve][pip] PIP-292: Enforce token expiration time in the Websockets plugin (#20953)
  • [improve][pip] PIP-391: Enable batch index ACK by default (#23567)
  • [improve][pip] PIP-409: support producer configuration for retry/dead letter topic producer (#24022)
  • [improve][pip] PIP-416: Add a new topic method to implement trigger offload by size threshold (#24276)
  • [improve][pip] PIP-425: Support connecting with next available endpoint for multi-endpoint serviceUrls (#24394)
  • [improve][pip] PIP-427: Align pulsar-admin Default for Mark-Delete Rate with Broker Configuration (#24425)
  • [improve][pip] PIP-429: Optimize Handling of Compacted Last Entry by Skipping Payload Buffer Parsing (#24439)
  • [pip] PIP-430: Pulsar Broker cache improvements: refactoring eviction and adding a new cache strategy based on expected read count (#24444)
  • [improve][pip] PIP-431: Add Creation and Last Publish Timestamps to Topic Stats (#24469)
  • [improve][pip] PIP-432: Add isEncrypted field to EncryptionContext (#24481)
  • [improve][pip] PIP-433: Optimize the conflicts of the replication and automatic creation mechanisms, including the automatic creation of topics and schemas (#24485)
  • [improve][pip] PIP-435: Add startTimestamp and endTimestamp for consuming messages in client cli (#24524)
  • [improve][pip]PIP-422 Support global topic-level policy: replicated clusters and new API to delete topic-level policies (#24368)
  • [improve][pip]PIP-436: Add decryptFailListener to Consumer (#24572)
  • [feat][pip] PIP-420: Provide ability for Pulsar clients to integrate with third-party schema registry service (#24328)
  • [improve] [pip] PIP-373: Add a topic's system prop that indicates whether users have published TXN messages in before. (#23210)
  • [improve] [pip] PIP-375 Expose the Admin client configs: readTimeout, requestTimeout, and connectionTimeout (#23222)
  • [improve] [pip] PIP-382: Add a label named reason for topic_load_failed_total (#23351)
  • [pip] PIP-428: Change TopicPoliciesService interface to fix consistency issues (#24428)

Library updates

  • [improve][broker] Upgrade avro version to 1.12.0 (#24617)
  • [improve][broker] Upgrade bookkeeper to 4.17.2/commons-configuration to 2.x/grpc to 1.72.0 and enable ZooKeeper client to establish connection in read-only mode (#24468)
  • [fix][sec] Bump commons-io version to 2.18.0 (#23684)
  • [fix][sec] Mitigate CVE-2024-53990 by disabling AsyncHttpClient CookieStore (#23725)
  • [fix][sec] Remove dependency on out-dated commons-configuration 1.x (#24562)
  • [fix][sec] Replace bcprov-jdk15on dependency with bcprov-jdk18-on (#23532)
  • [fix][sec] Upgrade async-http-client to 2.12.4 to address CVE-2024-53990 (#23732)
  • [fix][sec] Upgrade bouncycastle bcpkix-fips version to 1.79 to address CVE-2025-8916 (#24650)
  • [fix][sec] Upgrade golang.org/x/crypto from 0.21.0 to 0.31.0 in pulsar-function-go (#23743)
  • [fix][sec] Upgrade Jetty to 9.4.57.v20241219 to mitigate CVE-2024-6763 (#24232)
  • [fix][sec] Upgrade jwt/v5 to 5.2.2 to address CVE-2025-30204 (#24140)
  • [fix][sec] Upgrade Kafka connector and clients version to 3.9.1 to address CVE-2025-27818 (#24564)
  • [fix][sec] Upgrade pulsar-function-go dependencies to address CVE-2025-22868 (#24547)
  • [fix][sec] Upgrade to Netty 4.1.115.Final to address CVE-2024-47535 (#23596)
  • [fix][sec] Upgrade to Netty 4.1.118 (#23965)
  • [fix][sec] Upgrade to Netty 4.1.124.Final to address CVE-2025-55163 (#24637)
  • [fix][sec] Upgrade Zookeeper to 3.9.3 to address CVE-2024-51504 (#23581)
  • [fix][build] Upgrade json-smart to 2.5.2 (#23966)
  • [improve][io] Upgrade AWS SDK v1 & v2, Kinesis KPL and KPC versions (#24661)
  • [improve][io] Upgrade Kafka client and compatible Confluent platform version (#24201)
  • [improve][io] Upgrade Spring version to 6.1.13 in IO Connectors (#23459)
  • [improve][io] Upgrade Spring version to 6.1.14 in IO Connectors (#23481)
  • [improve][monitor] Upgrade OTel to 1.41.0 (#23484)
  • [improve][monitor] Upgrade OTel to 1.45.0 (#23756)
  • [fix][misc] Upgrade dependencies to fix critical security vulnerabilities (#24532)
  • [fix][misc] Upgrade fastutil to 8.5.16 (#24659)
  • [improve][build] Upgrade Caffeine from 2.9.1 to 3.2.1 (#24527)
  • [improve][build] Upgrade commons-compress version from 1.27.0 to 1.27.1 (#24270)
  • [improve][build] Upgrade errorprone to 2.38.0 (#24242)
  • [improve][build] Upgrade Gradle Develocity Maven Extension dependencies (#24260)
  • [improve][build] Upgrade Lombok to 1.18.38 to support JDK 24 (#24237)
  • [improve][build] Upgrade Mockito to 5.17.0 and byte-buddy to 1.15.11 (#24241)
  • [improve][build] Upgrade SpotBugs to 4.9.x (#24243)
  • [improve][build] Upgrade to jacoco 0.8.13 (#24240)
  • [improve][build] Upgrade zstd version from 1.5.2-3 to 1.5.7-3 (#24263)
  • [improve][ci] Upgrade Gradle Develocity Maven Extension to 1.23.1 (#24004)
  • [improve][test] Upgrade Testcontainers to 1.20.4 and docker-java to 3.4.0 (#24003)
  • [improve][misc] Upgrade Guava to 33.4.8 that uses JSpecify annotations (#24267)
  • [improve][misc] Upgrade Netty to 4.1.122.Final and tcnative to 2.0.72.Final (#24397)
  • [improve][misc] Upgrade RE2/J to 1.8 (#24530)
  • [feat][misc] Upgrade oxia version to 0.4.9 (#23607)
  • [improve] Upgrade Apache Commons library versions to compatible versions (#24205)
  • [improve] Upgrade lombok to 1.18.36 (#23752)
  • [improve] Upgrade Netty to 4.1.119.Final (#24049)
  • [improve] Upgrade Netty to 4.1.121.Final (#24214)
  • [improve] Upgrade OpenTelemetry library to 1.44.1 version (#23656)
  • [improve] Upgrade oxia-java to 0.4.10 and fix closing of OxiaMetadataStore (#23653)
  • [improve] Upgrade pulsar-client-python to 3.7.0 in Docker image (#24302)
  • [improve] Upgrade to Netty 4.1.116.Final and io_uring to 0.0.26.Final (#23813)
  • [improve] Upgrade to Netty 4.1.117.Final (#23863)

Broker

  • [fix][broker] Add double-check for non-durable cursor creation (#24643)
  • [fix][broker] Add expire check for replicator (#23975)
  • [fix][broker] Add topic consistency check (#24118)
  • [fix][broker] Allow recreation of partitioned topic after metadata loss (#24225)
  • [fix][broker] Apply dispatcherMaxReadSizeBytes also for replay reads for Shared and Key_Shared subscriptions (#23894)
  • [fix][broker] Avoid block markDeletePosition forward when skip lost entries (#21210)
  • [fix][broker] Avoid IllegalStateException when marker_type field is not set in publishing ([#24087](https://github.com/apache/pulsar...
Read more

v4.0.6

31 Jul 14:30
v4.0.6

Choose a tag to compare

2025-07-31

Known issues

  • The changes from PR #24533 included in this release might break proxy authorization scenarios for some custom implementations of AuthorizationProvider, where both the proxy's auth data (authDataSource) and the original client's auth data (originalAuthDataSource) need to be validated separately.
    • A fix will be provided in the next release with #24593

Library updates

  • [improve] Upgrade pulsar-client-python to 3.8.0 in Docker image (#24544)
  • [improve][misc] Upgrade Netty to 4.1.122.Final and tcnative to 2.0.72.Final (#24397)
  • [fix][sec] Upgrade Kafka connector and clients version to 3.9.1 to address CVE-2025-27818 (#24564)
  • [fix][sec] Upgrade pulsar-function-go dependencies to address CVE-2025-22868 (#24547)
  • [improve][build] replace org.apache.commons.lang to org.apache.commons.lang3 (#24473)
  • [improve][build] Bump org.apache.commons:commons-lang3 from 3.17.0 to 3.18.0 (#24514)
  • [improve][broker] Upgrade bookkeeper to 4.17.2/commons-configuration to 2.x/grpc to 1.72.0 and enable ZooKeeper client to establish connection in read-only mode (#24468)
  • [fix][sec] Remove dependency on out-dated commons-configuration 1.x (#24562)
  • [improve][misc] Upgrade RE2/J to 1.8 (#24530)

Broker

  • [fix][broker] expose consumer name for partitioned topic stats (#24360)
  • [fix][broker] Fix Broker OOM due to too many waiting cursors and reuse a recycled OpReadEntry incorrectly (#24551)
  • [fix][broker] Fix deduplication replay might never complete for exceptions (#24511)
  • [fix][broker] Fix duplicate increment of ADD_OP_COUNT_UPDATER in OpAddEntry (#24506)
  • [fix][broker] Fix exclusive producer creation when last shared producer closes (#24516)
  • [fix][broker] Fix issue that topic policies was deleted after a sub topic deleted, even if the partitioned topic still exists (#24350)
  • [fix][broker] Fix ManagedCursor state management race conditions and lifecycle issues (#24569)
  • [fix][broker] Fix matching of topicsPattern for topic names which contain non-ascii characters (#24543)
  • [fix][broker] Fix maxTopicsPerNamespace might report a false failure (#24560)
  • [fix][broker] Fix the non-persistenttopic's replicator always get error "Producer send queue is full" if set a small value of the config replicationProducerQueueSize (#24424)
  • [fix][broker] Ignore metadata changes when broker is not in the Started state (#24352)
  • [fix][broker] No longer allow creating subscription that contains slash (#23594)
  • [fix][broker] Once the cluster is configured incorrectly, the broker maintains the incorrect cluster configuration even if you removed it (#24419)
  • [fix][broker] replication does not work due to the mixed and repetitive sending of user messages and replication markers (#24453)
  • [fix][broker] Resolve the issue of frequent updates in message expiration deletion rate (#24190)
  • [fix][broker]excessive replication speed leads to error: Producer send queue is full (#24189)
  • [fix][broker]Fix deadlock when compaction and topic deletion execute concurrently (#24366)
  • [fix][broker]Global topic policies do not affect after unloading topic and persistence global topic policies never affect (#24279)
  • [fix][broker]Non-global topic policies and global topic policies overwrite each other (#24286)
  • [fix] Prevent IllegalStateException: Field 'message' is not set (#24472)
  • [fix][ml] Cursor ignores the position that has an empty ack-set if disabled deletionAtBatchIndexLevelEnabled (#24406)
  • [fix][ml] Enhance OpFindNewest to support skip non-recoverable data (#24441)
  • [fix][ml] Fix asyncReadEntries might never complete if empty entries are read from BK (#24515)
  • [fix][ml] Fix ManagedCursorImpl.individualDeletedMessages concurrent issue (#24338)
  • [fix][ml] Fix the possibility of message loss or disorder when ML PayloadProcessor processing fails (#24522)
  • [fix][ml]Received more than once callback when calling cursor.delete (#24405)
  • [fix][ml]Revert a behavior change of releasing idle offloaded ledger handle: only release idle BlobStoreBackedReadHandle (#24384)
  • [fix][ml]Still got BK ledger, even though it has been deleted after offloaded (#24432)
  • [fix][offload] Complete the future outside of the reading loop in BlobStoreBackedReadHandleImplV2.readAsync (#24331)
  • [fix][txn] Fix deadlock when loading transaction buffer snapshot (#24401)
  • [improve][broker] Add managedCursor/LedgerInfoCompressionType settings to broker.conf (#24391)
  • [improve][broker] Added synchronized for sendMessages in Non-Persistent message dispatchers (#24386)
  • [improve][broker] change to warn log level for ack validation error (#24459)
  • [improve][broker] Deny removing local cluster from topic level replicated cluster policy (#24351)
  • [improve][broker] Improve the log when namespace bundle is not available (#24434)
  • [improve][broker] Make maxBatchDeletedIndexToPersist configurable and document other related configs (#24392)
  • [improve][broker]Improve the log when encountered in-flight read limitation (#24359)
  • [improve][ml] Offload ledgers without check ledger length (#24344)
  • [improve][ml]Release idle offloaded read handle only the ref count is 0 (#24381)
  • [improve][offloaders] Automatically evict Offloaded Ledgers from memory (#19783)
  • [fix][broker] Fix NPE when getting delayed delivery policy (#24512)
  • [fix][broker] Fix the wrong cache name (#24407)
  • [fix][broker] Fix wrong backlog age metrics when the mark delete position point to a deleted ledger (#24518)
  • [fix][broker][branch-4.0] Revert "[improve][broker] Reduce memory occupation of the delayed message queue (#23611)" (#24429)
  • [fix][broker]Data lost due to conflict loaded up a topic for two brokers, when enabled ServiceUnitStateMetadataStoreTableViewImpl (#24478)
  • [improve][broker] Enable concurrent processing of pending read Entries to avoid duplicate Reads (#24346)
  • [improve][broker][branch-4.0] Update to Oxia 0.6.0 and use new group-id (#24454)
  • [refactor][broker] Expose the managedLedger field for the sub class (#24448)

Client

  • [fix][client] Close orphan producer or consumer when the creation is interrupted (#24539)
  • [fix][client] Fix ClientCnx handleSendError NPE (#24517)
  • [fix][client] Fix issue in auto releasing of idle connection with topics pattern consumer (#24528)
  • [fix][client] Fix some potential resource leak (#24402)
  • [fix][client] NPE in MultiTopicsConsumerImpl.negativeAcknowledge (#24476)
  • [fix][client] Prevent NPE when seeking with null topic in TopicMessageId (#24404)
  • [fix][client][branch-4.0] Partitioned topics are unexpectedly created by client after deletion (#24554) (#24571)
  • [fix][txn] Fix negative unacknowledged messages in transactions by ensuring that the batch size is added into Comm...
Read more

v3.3.8

31 Jul 12:20
v3.3.8

Choose a tag to compare

2025-07-31

Library updates

  • [improve] Upgrade pulsar-client-python to 3.8.0 in Docker image (#24544)
  • [improve][misc] Upgrade Netty to 4.1.122.Final and tcnative to 2.0.72.Final (#24397)
  • [fix][sec] Upgrade Kafka connector and clients version to 3.9.1 to address CVE-2025-27818 (#24564)
  • [fix][sec] Upgrade pulsar-function-go dependencies to address CVE-2025-22868 (#24547)
  • [improve][build] replace org.apache.commons.lang to org.apache.commons.lang3 (#24473)
  • [improve][broker] Upgrade bookkeeper to 4.17.2/commons-configuration to 2.x/grpc to 1.72.0 and enable ZooKeeper client to establish connection in read-only mode (#24468)
  • [fix][sec] Remove dependency on out-dated commons-configuration 1.x (#24562)
  • [improve][misc] Upgrade RE2/J to 1.8 (#24530)

Broker

  • [fix][broker] expose consumer name for partitioned topic stats (#24360)
  • [fix][broker] Fix ack hole in cursor for geo-replication (#20931)
  • [fix][broker] Fix Broker OOM due to too many waiting cursors and reuse a recycled OpReadEntry incorrectly (#24551)
  • [fix][broker] Fix deduplication replay might never complete for exceptions (#24511)
  • [fix][broker] Fix duplicate increment of ADD_OP_COUNT_UPDATER in OpAddEntry (#24506)
  • [fix][broker] Fix exclusive producer creation when last shared producer closes (#24516)
  • [fix][broker] Fix issue that topic policies was deleted after a sub topic deleted, even if the partitioned topic still exists (#24350)
  • [fix][broker] Fix ManagedCursor state management race conditions and lifecycle issues (#24569)
  • [fix][broker] Fix matching of topicsPattern for topic names which contain non-ascii characters (#24543)
  • [fix][broker] Fix maxTopicsPerNamespace might report a false failure (#24560)
  • [fix][broker] Fix the non-persistenttopic's replicator always get error "Producer send queue is full" if set a small value of the config replicationProducerQueueSize (#24424)
  • [fix][broker] Ignore metadata changes when broker is not in the Started state (#24352)
  • [Fix][broker] Limit replication rate based on bytes (#22674)
  • [fix][broker] No longer allow creating subscription that contains slash (#23594)
  • [fix][broker] Once the cluster is configured incorrectly, the broker maintains the incorrect cluster configuration even if you removed it (#24419)
  • [fix][broker] replication does not work due to the mixed and repetitive sending of user messages and replication markers (#24453)
  • [fix][broker] Resolve the issue of frequent updates in message expiration deletion rate (#24190)
  • [fix][broker]excessive replication speed leads to error: Producer send queue is full (#24189)
  • [fix][broker]Fix deadlock when compaction and topic deletion execute concurrently (#24366)
  • [fix][broker]Global topic policies do not affect after unloading topic and persistence global topic policies never affect (#24279)
  • [fix][broker]Non-global topic policies and global topic policies overwrite each other (#24286)
  • [fix] Prevent IllegalStateException: Field 'message' is not set (#24472)
  • [fix][ml] Cursor ignores the position that has an empty ack-set if disabled deletionAtBatchIndexLevelEnabled (#24406)
  • [fix][ml] Enhance OpFindNewest to support skip non-recoverable data (#24441)
  • [fix][ml] Enhance OpFindNewest to support skip non-recoverable data (#24441)
  • [fix][ml] Fix asyncReadEntries might never complete if empty entries are read from BK (#24515)
  • [fix][ml] Fix ManagedCursorImpl.individualDeletedMessages concurrent issue (#24338)
  • [fix][ml] Fix the possibility of message loss or disorder when ML PayloadProcessor processing fails (#24522)
  • [fix][ml]Received more than once callback when calling cursor.delete (#24405)
  • [fix][ml]Revert a behavior change of releasing idle offloaded ledger handle: only release idle BlobStoreBackedReadHandle (#24384)
  • [fix][ml]Still got BK ledger, even though it has been deleted after offloaded (#24432)
  • [fix][offload] Complete the future outside of the reading loop in BlobStoreBackedReadHandleImplV2.readAsync (#24331)
  • [fix][txn] Fix deadlock when loading transaction buffer snapshot (#24401)
  • [improve][broker] Add managedCursor/LedgerInfoCompressionType settings to broker.conf (#24391)
  • [improve][broker] Added synchronized for sendMessages in Non-Persistent message dispatchers (#24386)
  • [improve][broker] change to warn log level for ack validation error (#24459)
  • [improve][broker] Deny removing local cluster from topic level replicated cluster policy (#24351)
  • [improve][broker] Improve the log when namespace bundle is not available (#24434)
  • [improve][broker] Make maxBatchDeletedIndexToPersist configurable and document other related configs (#24392)
  • [improve][broker]Improve the log when encountered in-flight read limitation (#24359)
  • [improve][ml] Offload ledgers without check ledger length (#24344)
  • [improve][ml]Release idle offloaded read handle only the ref count is 0 (#24381)
  • [improve][offloaders] Automatically evict Offloaded Ledgers from memory (#19783)
  • [fix][broker] Fix NPE when getting delayed delivery policy (#24512)
  • [fix][broker] Fix wrong backlog age metrics when the mark delete position point to a deleted ledger (#24518)
  • [fix][broker][branch-3.3] Disable broken ExtensibleLoadManager tests and add closeInternalTopics in follower monitor (#24557)
  • [improve][broker] Phase 1 of PIP-370 support disable create topics on remote cluster through replication (#23169)
  • [improve][broker] Part 2 of PIP-370: add metrics "pulsar_replication_disconnected_count" (#23213)

Client

  • [fix][client] Close orphan producer or consumer when the creation is interrupted (#24539)
  • [fix][client] Fix ClientCnx handleSendError NPE (#24517)
  • [fix][client] Fix issue in auto releasing of idle connection with topics pattern consumer (#24528)
  • [fix][client] Fix some potential resource leak (#24402)
  • [fix][client] NPE in MultiTopicsConsumerImpl.negativeAcknowledge (#24476)
  • [fix][client] Prevent NPE when seeking with null topic in TopicMessageId (#24404)
  • [fix][client][branch-4.0] Partitioned topics are unexpectedly created by client after deletion (#24554) (#24571)
  • [fix][txn] Fix negative unacknowledged messages in transactions by ensuring that the batch size is added into CommandAck (#24443)
  • [improve][client] Terminate consumer.receive() when consumer is closed (#24550)
  • [fix][client] Fix RawReader interface compatibility

Pulsar IO and Pulsar Functions

  • [fix][io] Acknowledge RabbitMQ message after processing the message successfully (#24354)
  • [fix][io] Fix kinesis avro bytes handling (#24316)

Others

  • [fix][proxy] Fix default value of connectionMaxIdleSeconds in Pulsar Proxy (#24529)
  • [fix][proxy]...
Read more