Skip to content

Releases: apache/pulsar

v4.0.6

31 Jul 14:30
v4.0.6
Compare
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
Compare
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

v3.0.13

31 Jul 11:51
v3.0.13
Compare
Choose a tag to compare

2025-07-31

Library updates

  • [improve][broker][branch-3.0] Upgrade BookKeeper to 4.16.7
  • [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)

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] 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)

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)

Pulsar IO and Pulsar Functions

  • [fix][io] Acknowledge RabbitMQ message after processing the message successfully (#24354)
  • [fix][io] Fix kinesis avro bytes handling (#24316)
  • [fix][io][branch-3.0] Backport Kinesis Sink custom native executable support #23762 (#24349)
  • [fix][io][branch-3.0]Pulsar-SQL: Fix classcast ex when decode decimal value (#24317)

Others

  • [fix][proxy] Fix default value of connectionMaxIdleSeconds in Pulsar Proxy (#24529)
  • [fix][proxy] Fix proxy OOM by replacing TopicName with a simple conversion method (#24465)
  • [improve][misc] Optimize topic list hashing so that potentially large String allocation is avoided (#24525)

Tests & CI

  • [fix][build] Add missing <name> to submodules (#24421)
  • [fix][build] Fix potential insufficient protostuff-related configs (#21629)
  • [fix][ci][branch-3.0] Fix issue in GitHub Actions when /etc/docker/daemon.json file doesn't exist
  • [fix][test] Cleanup resources if starting PulsarService fails in PulsarTestContext (#21467)
  • [fix][test] Fix flaky AutoScaledReceiverQueueSizeTest.testNegativeClientMemory (#24324)
  • [fix][test] fix flaky GrowableArrayBlockingQueueTest.testPollBlockingThreadsTer...
Read more

v3.3.7

23 May 06:26
v3.3.7
Compare
Choose a tag to compare

2025-05-23

Library updates

  • [fix][sec] Upgrade Jetty to 9.4.57.v20241219 to mitigate CVE-2024-6763 (#24232)
  • [improve] Upgrade Apache Commons library versions to compatible versions (#24205)
  • [improve] Upgrade Netty to 4.1.121.Final (#24214)
  • [improve] Upgrade pulsar-client-python to 3.7.0 in Docker image (#24302)
  • [improve][build] Upgrade commons-compress version from 1.27.0 to 1.27.1 (#24270)

Broker

  • [fix][broker] Consumer stuck when delete subscription __compaction failed (#23980)
  • [fix][broker] Fix broker shutdown delay by resolving hanging health checks (#24210)
  • [fix][broker] Fix ByteBuf memory leak in REST API for publishing messages (#24228)
  • [fix][broker] Fix cluster level OffloadedReadPriority to bookkeeper-first does not work (#24151)
  • [fix][broker] Fix compaction service log's wrong condition (#24207)
  • [fix][broker] fix ExtensibleLoadManager to override the ownerships concurrently without blocking load manager thread (#24156)
  • [fix][broker] Fix HashedWheelTimer leak in PulsarService by stopping it in shutdown (#24275)
  • [fix][broker] Fix HealthChecker deadlock in shutdown (#24216)
  • [fix][broker] Fix potential deadlock when creating partitioned topic (#24313)
  • [fix][broker] Fix seeking by timestamp can be reset the cursor position to earliest (#23919)
  • [fix][broker] Fix some problems in calculate totalAvailableBookies in method getExcludedBookiesWithIsolationGroups when some bookies belongs to multiple isolation groups. (#24091)
  • [fix][broker] Fix tenant creation and update with null value (#24209)
  • [fix][broker] fix wrong method name checkTopicExists. (#24293)
  • [fix][broker] Orphan schema after disabled a cluster for a namespace (#24223)
  • [fix][broker] The feature brokerDeleteInactivePartitionedTopicMetadataEnabled leaves orphan topic policies and topic schemas (#24150)
  • [fix][broker] Unregister non-static metrics collectors registered in Prometheus default registry (#24257)
  • [fix][broker]Fix incorrect priority between topic policies and global topic policies (#24254)
  • [fix][broker]fix memory leak, messages lost, incorrect replication state if using multiple schema versions(auto_produce) (#24178)
  • [fix][admin] Backlog quota's policy is null which causes a NPE (#24192)
  • [fix][ml] Fix ML thread blocking issue in internalGetPartitionedStats API (#24167)
  • [fix][ml] Skip deleting cursor if it was already deleted before calling unsubscribe (#24098)
  • [improve][broker] Optimize subscription seek (cursor reset) by timestamp (#22792)
  • [improve][broker]Improve the feature "Optimize subscription seek (cursor reset) by timestamp": search less entries (#24219)

Client

  • [fix][client] Fix incorrect producer.getPendingQueueSize due to incomplete queue implementation (#24184)
  • [fix][client] Fix producer publishing getting stuck after message with incompatible schema is discarded (#24282)
  • [improve][client] validate ClientConfigurationData earlier to avoid resource leaks (#24187)
  • [improve][client]Improve transaction log when a TXN command timeout (#24230)

Pulsar IO and Pulsar Functions

  • [fix][io] Fix SyntaxWarning in Pulsar Python functions (#24297)
  • [improve][io] Add configuration parameter for disabling aggregation for Kinesis Producers (#24289)
  • [improve][io] support kafka connect transforms and predicates (#24221)
  • [improve][io] Upgrade Kafka client and compatible Confluent platform version (#24201)
  • [improve][io][kca] support fully-qualified topic names in source records (#24248)

Others

  • [cleanup][misc] Add override annotation (#24033)
  • [fix][cli] Refactor scripts to detect major Java version and pass correct add-opens parameters (#22927)
  • [fix][misc] Fix ByteBuf leak in SchemaUtils (#24274)
  • [fix][proxy] Fix incorrect client error when calling get topic metadata (#24181)
  • [fix][proxy] Propagate client connection feature flags through Pulsar Proxy to Broker (#24158)
  • [fix][schema] Reject unsupported Avro schema types during schema registration (#24103)
  • [improve][cli] Make pulsar-perf termination more responsive by using Thread interrupt status (#24309)
  • [improve][misc] Migrate from multiple nullness annotation libraries to JSpecify annotations (#24239)

Tests & CI

  • [fix][build] Ensure that buildtools is Java 8 compatible and fix remaining compatibility issue (#24307)
  • [fix][build] Fix docker image building by replacing deprecated and removed compress argument (#24155)
  • [fix][test] Fix flaky BatchMessageWithBatchIndexLevelTest.testBatchMessageAck (#24212)
  • [fix][test] Fix flaky BrokerServiceChaosTest (#24162)
  • [fix][test] Fix flaky BrokerServiceChaosTest.testFetchPartitionedTopicMetadataWithCacheRefresh (#24161)
  • [fix][test] Fix flaky ManagedCursorTest.testLastActiveAfterResetCursor and disable failing SchemaTest (#24261)
  • [fix][test] Fix flaky ManagedCursorTest.testSkipEntriesWithIndividualDeletedMessages (#24244)
  • [fix][test] Fix flaky NamespacesTest.testNamespacesApiRedirects (#24194)
  • [fix][test] Fix invalid test CompactionTest.testDeleteCompactedLedgerWithSlowAck (#24166)
  • [fix][test] Fix more Netty ByteBuf leaks in tests (#24299)
  • [fix][test] Fix multiple ByteBuf leaks in tests (#24281)
  • [fix][test] Fix multiple resource leaks in tests (#24218)
  • [fix][test] Fix remaining UnfinishedStubbingException issue with AuthZTests (#24174)
  • [fix][test] Fix resource leaks in ProxyTest and fix invalid tests (#24204)
  • [fix][test] Fix resource leaks in PulsarBrokerStarterTest (#24235)
  • [fix][test] Fix TestNG BetweenTestClassesListenerAdapter listener (#24258)
  • [fix][test] Fix UnfinishedStubbing issue in AuthZTests (#24165)
  • [fix][test] Improve reliability of IncrementPartitionsTest (#24172)
  • [fix][test] Simplify BetweenTestClassesListenerAdapter and fix issue with BeforeTest/AfterTest annotations (#24304)
  • [fix][test] Update partitioned topic subscription assertions in IncrementPartitionsTest (#24056)
  • [fix][test]flaky-test:ManagedLedgerInterceptorImplTest.testManagedLedgerPayloadInputProcessorFailure (#24170)
  • [improve][test] Use configured session timeout for MockZooKeeper and TestZKServer in PulsarTestContext (#24171)
  • [cleanup][test] Remove unused parameter from deleteNamespaceWithRetry method in MockedPulsarServiceBaseTest (#24283)
  • [improve] Adapt startup scripts for Java 24 changes (#24236)
  • [improve][build] Build apachepulsar/pulsar-io-kinesis-sink-kinesis_producer with Alpine 3.21 (#24180)
  • [improve][build] Improve thread leak detector by ignoring "Attach Listener" thread (#24277)
  • [improve][build] Upgrade Gradle Develocity Maven Extension...
Read more

v4.0.5

22 May 17:29
v4.0.5
Compare
Choose a tag to compare

2025-05-22

Library updates

  • [fix][sec] Upgrade Jetty to 9.4.57.v20241219 to mitigate CVE-2024-6763 (#24232)
  • [improve] Upgrade Netty to 4.1.121.Final (#24214)
  • [improve] Upgrade Apache Commons library versions to compatible versions (#24205)
  • [improve] Upgrade pulsar-client-python to 3.7.0 in Docker image (#24302)
  • [improve][build] Upgrade commons-compress version from 1.27.0 to 1.27.1 (#24270)
  • [improve][build] Upgrade Lombok to 1.18.38 to support JDK 24 (#24237)

Broker

  • [fix][broker] Consumer stuck when delete subscription __compaction failed (#23980)
  • [fix][broker] Fix broker shutdown delay by resolving hanging health checks (#24210)
  • [fix][broker] Fix ByteBuf memory leak in REST API for publishing messages (#24228)
  • [fix][broker] Fix cluster level OffloadedReadPriority to bookkeeper-first does not work (#24151)
  • [fix][broker] Fix compaction service log's wrong condition (#24207)
  • [fix][broker] fix ExtensibleLoadManager to override the ownerships concurrently without blocking load manager thread (#24156)
  • [fix][broker] Fix HashedWheelTimer leak in PulsarService by stopping it in shutdown (#24275)
  • [fix][broker] Fix HealthChecker deadlock in shutdown (#24216)
  • [fix][broker] Fix NPE from the wrong iterator in the ownership cleanup job(ExtensibleLoadManagerImpl only) (#24196)
  • [fix][broker] Fix potential deadlock when creating partitioned topic (#24313)
  • [fix][broker] Fix some problems in calculate totalAvailableBookies in method getExcludedBookiesWithIsolationGroups when some bookies belongs to multiple isolation groups. (#24091)
  • [fix][broker] Fix tenant creation and update with null value (#24209)
  • [fix][broker] fix wrong method name checkTopicExists. (#24293)
  • [fix][broker] Fixes Inconsistent ServiceUnitStateData View (ExtensibleLoadManagerImpl only) (#24186)
  • [fix][broker] Orphan schema after disabled a cluster for a namespace (#24223)
  • [fix][broker] The feature brokerDeleteInactivePartitionedTopicMetadataEnabled leaves orphan topic policies and topic schemas (#24150)
  • [fix][broker] Unregister non-static metrics collectors registered in Prometheus default registry (#24257)
  • [fix][broker]Fix incorrect priority between topic policies and global topic policies (#24254)
  • [fix][broker]fix memory leak, messages lost, incorrect replication state if using multiple schema versions(auto_produce) (#24178)
  • [fix][admin] Backlog quota's policy is null which causes a NPE (#24192)
  • [fix][ml] Fix ML thread blocking issue in internalGetPartitionedStats API (#24167)
  • [fix][ml] Skip deleting cursor if it was already deleted before calling unsubscribe (#24098)

Client

  • [fix][client] Fix incorrect producer.getPendingQueueSize due to incomplete queue implementation (#24184)
  • [fix][client] Fix producer publishing getting stuck after message with incompatible schema is discarded (#24282)
  • [improve][client] validate ClientConfigurationData earlier to avoid resource leaks (#24187)
  • [improve][client]Improve transaction log when a TXN command timeout (#24230)

Pulsar IO and Pulsar Functions

  • [fix][io] Fix SyntaxWarning in Pulsar Python functions (#24297)
  • [improve][io] Add configuration parameter for disabling aggregation for Kinesis Producers (#24289)
  • [improve][io] support kafka connect transforms and predicates (#24221)
  • [improve][io] Upgrade Kafka client and compatible Confluent platform version (#24201)
  • [improve][io][kca] support fully-qualified topic names in source records (#24248)

Others

  • [cleanup] Remove unused config autoShrinkForConsumerPendingAcksMap (#24315)
  • [cleanup] remove unused config messagePublishBufferCheckIntervalInMillis (#24252)
  • [cleanup] Remove unused static fields in BrokerService (#24251)
  • [cleanup][misc] Add override annotation (#24033)
  • [cleanup][test] Remove unused parameter from deleteNamespaceWithRetry method in MockedPulsarServiceBaseTest (#24283)
  • [fix] chore: remove unused preciseTopicPublishRateLimiterEnable (#24249)
  • [fix][misc] Fix ByteBuf leak in SchemaUtils (#24274)
  • [fix][misc] Fix ByteBuf leaks in tests by making ByteBufPair.coalesce release the input ByteBufPair (#24273)
  • [fix][misc]: ignore deleted ledger when tear down cluster (#23831)
  • [fix][proxy] Fix incorrect client error when calling get topic metadata (#24181)
  • [fix][proxy] Propagate client connection feature flags through Pulsar Proxy to Broker (#24158)
  • [fix][schema] Reject unsupported Avro schema types during schema registration (#24103)
  • [improve][cli] Make pulsar-perf termination more responsive by using Thread interrupt status (#24309)
  • [improve][misc] Migrate from multiple nullness annotation libraries to JSpecify annotations (#24239)

Tests & CI

  • [fix][build] Ensure that buildtools is Java 8 compatible and fix remaining compatibility issue (#24307)
  • [fix][build] Fix docker image building by replacing deprecated and removed compress argument (#24155)
  • [fix][build] Fix errorprone maven profile configuration (#24246)
  • [fix][build] Fix skipTag and use explicit tag for image name (#24168)
  • [improve] Adapt startup scripts for Java 24 changes (#24236)
  • [improve][broker]Improve the feature "Optimize subscription seek (cursor reset) by timestamp": search less entries (#24219)
  • [improve][build] Allow building and running tests on JDK 24 and upcoming JDK 25 LTS (#24268)
  • [improve][build] Build apachepulsar/pulsar-io-kinesis-sink-kinesis_producer with Alpine 3.21 (#24180)
  • [improve][build] Improve thread leak detector by ignoring "Attach Listener" thread (#24277)
  • [improve][build] Suppress JVM class sharing warning when running tests (#24278)
  • [improve][build] Upgrade errorprone to 2.38.0 (#24242)
  • [improve][build] Upgrade Gradle Develocity Maven Extension dependencies (#24260)
  • [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] Add Netty leak detection reporting to Pulsar CI (#24272)
  • [improve][ci] Disable detailed console logging for integration tests in CI (#24266)
  • [improve][test] Use configured session timeout for MockZooKeeper and TestZKServer in PulsarTestContext (#24171)
  • [fix][test] Fix flaky BatchMessageWithBatchIndexLevelTest.testBatchMessageAck (#24212)
  • [fix][test] Fix flaky BrokerServiceChaosTest (#24162)
  • [fix][test] Fix flaky BrokerServiceChaosTest.testFetchPartitionedTopicMetadataW...
Read more

v3.0.12

22 May 17:19
v3.0.12
Compare
Choose a tag to compare

2025-05-22

Library updates

  • [fix][sec] Upgrade Jetty to 9.4.57.v20241219 to mitigate CVE-2024-6763 (#24232)
  • [improve] Upgrade Netty to 4.1.121.Final (#24214)
  • [improve] Upgrade pulsar-client-python to 3.7.0 in Docker image (#24302)
  • [improve][build] Upgrade Lombok to 1.18.38 to support JDK 24 (#24237)

Broker

  • [fix][broker] Consumer stuck when delete subscription __compaction failed (#23980)
  • [fix][broker] Fix broker shutdown delay by resolving hanging health checks (#24210)
  • [fix][broker] Fix ByteBuf memory leak in REST API for publishing messages (#24228)
  • [fix][broker] Fix compaction service log's wrong condition (#24207)
  • [fix][broker] Fix HashedWheelTimer leak in PulsarService by stopping it in shutdown (#24275)
  • [fix][broker] Fix HealthChecker deadlock in shutdown (#24216)
  • [fix][broker] Fix missing validation when setting retention policy on topic level (#24032)
  • [fix][broker] Fix potential deadlock when creating partitioned topic (#24313)
  • [fix][broker] Fix seeking by timestamp can be reset the cursor position to earliest (#23919)
  • [fix][broker] Fix some problems in calculate totalAvailableBookies in method getExcludedBookiesWithIsolationGroups when some bookies belongs to multiple isolation groups. (#24091)
  • [fix][broker] Fix tenant creation and update with null value (#24209)
  • [fix][broker] fix wrong method name checkTopicExists. (#24293)
  • [fix][broker] Orphan schema after disabled a cluster for a namespace (#24223)
  • [fix][broker] The feature brokerDeleteInactivePartitionedTopicMetadataEnabled leaves orphan topic policies and topic schemas (#24150)
  • [fix][broker] Unregister non-static metrics collectors registered in Prometheus default registry (#24257)
  • [fix][broker]Fix incorrect priority between topic policies and global topic policies (#24254)
  • [fix][broker]fix memory leak, messages lost, incorrect replication state if using multiple schema versions(auto_produce) (#24178)
  • [fix][admin] Backlog quota's policy is null which causes a NPE (#24192)
  • [fix][bk] Fix the var name for IsolationGroups (#21320)
  • [fix][ml] Fix ML thread blocking issue in internalGetPartitionedStats API (#24167)
  • [fix][ml] Skip deleting cursor if it was already deleted before calling unsubscribe (#24098)
  • [improve][broker] Optimize subscription seek (cursor reset) by timestamp (#22792)
  • [improve][broker]Improve the feature "Optimize subscription seek (cursor reset) by timestamp": search less entries (#24219)

Client

  • [fix][client] Fix incorrect producer.getPendingQueueSize due to incomplete queue implementation (#24184)
  • [fix][client] Fix producer publishing getting stuck after message with incompatible schema is discarded (#24282)
  • [improve][client] validate ClientConfigurationData earlier to avoid resource leaks (#24187)
  • [improve][client]Improve transaction log when a TXN command timeout (#24230)

Pulsar IO and Pulsar Functions

  • [fix][io] Fix SyntaxWarning in Pulsar Python functions (#24297)
  • [improve][io] Add configuration parameter for disabling aggregation for Kinesis Producers (#24289)
  • [improve][io] support kafka connect transforms and predicates (#24221)
  • [improve][io] Upgrade Kafka client and compatible Confluent platform version (#24201)
  • [improve][io][kca] support fully-qualified topic names in source records (#24248)

Others

  • [cleanup][misc] Add override annotation (#24033)
  • [fix][misc] Fix ByteBuf leak in SchemaUtils (#24274)
  • [fix][proxy] Fix incorrect client error when calling get topic metadata (#24181)
  • [fix][proxy] Propagate client connection feature flags through Pulsar Proxy to Broker (#24158)
  • [fix][schema] Reject unsupported Avro schema types during schema registration (#24103)

Tests & CI

  • [fix][build] Ensure that buildtools is Java 8 compatible and fix remaining compatibility issue (#24307)
  • [fix][test] Fix flaky BatchMessageWithBatchIndexLevelTest.testBatchMessageAck (#24212)
  • [fix][test] Fix flaky BrokerServiceChaosTest (#24162)
  • [fix][test] Fix flaky BrokerServiceChaosTest.testFetchPartitionedTopicMetadataWithCacheRefresh (#24161)
  • [fix][test] Fix flaky ManagedCursorTest.testLastActiveAfterResetCursor and disable failing SchemaTest (#24261)
  • [fix][test] Fix flaky ManagedCursorTest.testSkipEntriesWithIndividualDeletedMessages (#24244)
  • [fix][test] Fix invalid test CompactionTest.testDeleteCompactedLedgerWithSlowAck (#24166)
  • [fix][test] Fix more Netty ByteBuf leaks in tests (#24299)
  • [fix][test] Fix multiple ByteBuf leaks in tests (#24281)
  • [fix][test] Fix multiple resource leaks in tests (#24218)
  • [fix][test] Fix resource leaks in ProxyTest and fix invalid tests (#24204)
  • [fix][test] Fix TestNG BetweenTestClassesListenerAdapter listener (#24258)
  • [fix][test] Improve reliability of IncrementPartitionsTest (#24172)
  • [fix][test] Simplify BetweenTestClassesListenerAdapter and fix issue with BeforeTest/AfterTest annotations (#24304)
  • [fix][test] Update partitioned topic subscription assertions in IncrementPartitionsTest (#24056)
  • [fix][test]flaky-test:ManagedLedgerInterceptorImplTest.testManagedLedgerPayloadInputProcessorFailure (#24170)
  • [improve][test] Use configured session timeout for MockZooKeeper and TestZKServer in PulsarTestContext (#24171)
  • [improve][build] Upgrade Gradle Develocity Maven Extension dependencies (#24260)
  • [improve][ci] Disable detailed console logging for integration tests in CI (#24266)
  • [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)
  • [cleanup][test] Remove unused parameter from deleteNamespaceWithRetry method in MockedPulsarServiceBaseTest (#24283)

For the complete list, check the full changelog.

v4.0.4

09 Apr 09:15
v4.0.4
Compare
Choose a tag to compare

2025-04-09

Library updates

Broker

  • [fix] Avoid negative estimated entry count (#24055)
  • [fix][broker] Add expire check for replicator (#23975)
  • [fix][broker] Avoid IllegalStateException when marker_type field is not set in publishing (#24087)
  • [fix][broker] fix delay queue sequence issue. (#24035)
  • [fix][broker] Fix Metadata Event Synchronizer producer creation retry so that the producer gets created eventually (#24081)
  • [fix][broker] Fix Metadata event synchronizer should not fail with bad version (#24080)
  • [fix][broker] Fix missing validation when setting retention policy on topic level (#24032)
  • [fix][broker] Fix NPE while publishing Metadata-Event with not init producer (#24079)
  • [fix][broker] Fix UnsupportedOperationException while setting subscription level dispatch rate policy (#24048)
  • [fix][broker] http metric endpoint get compaction latency stats always be 0 (#24067)
  • [fix][broker] Pattern subscription doesn't work when the pattern excludes the topic domain. (#24072)
  • [fix][broker] Restore the behavior to dispatch batch messages according to consumer permits (#24092)
  • [fix][broker] topics infinitely failed to delete after remove cluster from replicated clusters modifying when using partitioned system topic (#24097)
  • [fix][broker]Fix failed consumption after loaded up a terminated topic (#24063)
  • [fix][ml] Corrected pulsar_storage_size metric to not multiply offloaded storage by the write quorum (#24054)
  • [fix][ml] Don't estimate number of entries when ledgers are empty, return 1 instead (#24125)
  • [fix][ml] Fix issues in estimateEntryCountBySize (#24089)
  • [fix][ml] Return 1 when bytes size is 0 or negative for entry count estimation (#24131)
  • [improve][broker] Change topic exists log to warn (#24116)
  • [improve][broker] extract getMaxEntriesInThisBatch into a method and add unit test for it (#24117)
  • [improve][broker] Optimize message expiration rate repeated update issues (#24073)
  • [improve][broker] Optimize ThresholdShedder with improved boundary checks and parameter reuse (#24064)
  • [improve][broker][branch-4.0] PIP-406: Introduce metrics related to dispatch throttled events (#24111)
  • [improve][meta] Change log level from error to warn for unknown notification types in OxiaMetadataStore (#24126)

Client

  • [fix][client] Copy eventTime to retry letter topic and DLQ messages (#24059)
  • [fix][client] Fix building broken batched message when publishing (#24061)
  • [fix][client] Fix consumer leak when thread is interrupted before subscribe completes (#24100)
  • [fix][client] Pattern subscription regression when broker-side evaluation is disabled (#24104)
  • [fix][client] PIP-409 retry/dead letter topic producer config don't take effect. (#24071)
  • [improve][client] PIP-409: support producer configuration for retry/dead letter topic producer (#24020)
  • [improve][client] Prevent NullPointException when closing ClientCredentialsFlow (#24123)
  • [clean][client] Clean code for the construction of retry/dead letter topic name (#24082)

Pulsar IO and Pulsar Functions

  • [fix][io] Fix KinesisSink json flattening for AVRO's SchemaType.BYTES (#24132)
  • [improve][fn] Introduce NewOutputMessageWithError to enable error handling (#24122)
  • [improve][io] Enhance Kafka connector logging with focused bootstrap server information (#24128)
  • [improve][io] Remove sleep when sourceTask.poll of kafka return null (#24124)

Others

  • [fix][doc] fix doc related to chunk message feature. (#24023)
  • [fix][doc] Workaround Go Yaml issue go-yaml/yaml#789 in docker-compose example (#24040)
  • [improve][monitor] Add version=0.0.4 to /metrics content type for Prometheus 3.x compatibility (#24060)

Tests & CI

  • [fix][ci] Bump dependency-check to 12.1.0 to fix OWASP Dependency Check job (#24083)
  • [fix][test] Fix flaky NonPersistentTopicTest.testMsgDropStat (#24134)
  • [fix][test] Fix flaky PrometheusMetricsTest.testBrokerMetrics (#24042)

For the complete list, check the full changelog.

v3.3.6

09 Apr 09:14
v3.3.6
Compare
Choose a tag to compare

2025-04-09

Library updates

  • [fix] Bump google.golang.org/protobuf from 1.32.0 to 1.33.0 in /pulsar-function-go (#22261)
  • [fix][sec] Upgrade jwt/v5 to 5.2.2 to address CVE-2025-30204 (#24140)
  • [fix][sec] Upgrade pulsar-function-go dependencies to address CVE-2025-22870 (#24135)
  • [improve] Upgrade Netty to 4.1.119.Final (#24049)

Broker

  • [fix] Avoid negative estimated entry count (#24055)
  • [fix][broker] Add expire check for replicator (#23975)
  • [fix][broker] Avoid IllegalStateException when marker_type field is not set in publishing (#24087)
  • [fix][broker] Fix Metadata Event Synchronizer producer creation retry so that the producer gets created eventually (#24081)
  • [fix][broker] Fix Metadata event synchronizer should not fail with bad version (#24080)
  • [fix][broker] Fix missing validation when setting retention policy on topic level (#24032)
  • [fix][broker] Fix NPE while publishing Metadata-Event with not init producer (#24079)
  • [fix][broker] Pattern subscription doesn't work when the pattern excludes the topic domain. (#24072)
  • [fix][broker] topics infinitely failed to delete after remove cluster from replicated clusters modifying when using partitioned system topic (#24097)
  • [fix][broker]Fix failed consumption after loaded up a terminated topic (#24063)
  • [fix][ml] Corrected pulsar_storage_size metric to not multiply offloaded storage by the write quorum (#24054)
  • [fix][ml] Don't estimate number of entries when ledgers are empty, return 1 instead (#24125)
  • [fix][ml] Fix issues in estimateEntryCountBySize (#24089)
  • [fix][ml] Return 1 when bytes size is 0 or negative for entry count estimation (#24131)
  • [improve][broker] Change topic exists log to warn (#24116)
  • [improve][broker] Optimize message expiration rate repeated update issues (#24073)
  • [improve][broker] Optimize ThresholdShedder with improved boundary checks and parameter reuse (#24064)
  • [improve][broker] Separate offload read and write thread pool (#24025)
  • [improve][meta] Change log level from error to warn for unknown notification types in OxiaMetadataStore (#24126)

Client

  • [fix][client] Copy eventTime to retry letter topic and DLQ messages (#24059)
  • [fix][client] Fix building broken batched message when publishing (#24061)
  • [fix][client] Fix consumer leak when thread is interrupted before subscribe completes (#24100)
  • [fix][client] Pattern subscription regression when broker-side evaluation is disabled (#24104)
  • [improve][client] Prevent NullPointException when closing ClientCredentialsFlow (#24123)
  • [clean][client] Clean code for the construction of retry/dead letter topic name (#24082)

Pulsar IO and Pulsar Functions

  • [fix][io] Fix KinesisSink json flattening for AVRO's SchemaType.BYTES (#24132)
  • [improve][io] Enhance Kafka connector logging with focused bootstrap server information (#24128)
  • [improve][io] Remove sleep when sourceTask.poll of kafka return null (#24124)

Others

  • [fix][doc] fix doc related to chunk message feature. (#24023)
  • [improve][monitor] Add version=0.0.4 to /metrics content type for Prometheus 3.x compatibility (#24060)

Tests & CI

  • [fix][ci] Bump dependency-check to 12.1.0 to fix OWASP Dependency Check job (#24083)
  • [fix][test] Fix flaky NonPersistentTopicTest.testMsgDropStat (#24134)
  • [fix][test] Fix flaky PrometheusMetricsTest.testBrokerMetrics (#24042)

For the complete list, check the full changelog.

v3.0.11

09 Apr 07:11
v3.0.11
Compare
Choose a tag to compare

2025-04-09

Library updates

  • [fix] Bump google.golang.org/protobuf from 1.32.0 to 1.33.0 in /pulsar-function-go (#22261)
  • [fix][sec] Upgrade jwt/v5 to 5.2.2 to address CVE-2025-30204 (#24140)
  • [fix][sec] Upgrade pulsar-function-go dependencies to address CVE-2025-22870 (#24135)
  • [improve] Upgrade Netty to 4.1.119.Final (#24049)

Broker

  • [fix] Avoid negative estimated entry count (#24055)
  • [fix][admin] Verify is policies read only before revoke permissions on topic (#23730)
  • [fix][broker] Add expire check for replicator (#23975)
  • [fix][broker] Avoid IllegalStateException when marker_type field is not set in publishing (#24087)
  • [fix][broker] fix broker identifying incorrect stuck topic (#24006)
  • [fix][broker] Fix BucketDelayedDeliveryTracker thread safety (#24014)
  • [fix][broker] Fix get outdated compactedTopicContext after compactionHorizon has been updated (#20984)
  • [fix][broker] Fix Metadata Event Synchronizer producer creation retry so that the producer gets created eventually (#24081)
  • [fix][broker] Fix Metadata event synchronizer should not fail with bad version (#24080)
  • [fix][broker] Fix NPE while publishing Metadata-Event with not init producer (#24079)
  • [fix][broker] Fix UnsupportedOperationException while setting subscription level dispatch rate policy (#24048)
  • [fix][broker] Geo Replication lost messages or frequently fails due to Deduplication is not appropriate for Geo-Replication (#23697)
  • [fix][broker] http metric endpoint get compaction latency stats always be 0 (#24067)
  • [fix][broker] Pattern subscription doesn't work when the pattern excludes the topic domain. (#24072)
  • [fix][broker] topics infinitely failed to delete after remove cluster from replicated clusters modifying when using partitioned system topic (#24097)
  • [fix][broker]Fix failed consumption after loaded up a terminated topic (#24063)
  • [fix][ml] Corrected pulsar_storage_size metric to not multiply offloaded storage by the write quorum (#24054)
  • [fix][ml] Don't estimate number of entries when ledgers are empty, return 1 instead (#24125)
  • [fix][ml] Fix issues in estimateEntryCountBySize (#24089)
  • [fix][ml] Return 1 when bytes size is 0 or negative for entry count estimation (#24131)
  • [improve][broker] Change topic exists log to warn (#24116)
  • [improve][broker] Fix non-persistent system topic schema compatibility (#23286)
  • [improve][broker] Improve CompactedTopicImpl lock (#20697)
  • [improve][broker] Make the estimated entry size more accurate (#23931)
  • [improve][broker] Optimize message expiration rate repeated update issues (#24073)
  • [improve][broker] Optimize ThresholdShedder with improved boundary checks and parameter reuse (#24064)
  • [improve][ml] Use lock-free queue in InflightReadsLimiter since there's no concurrent access (#23962)

Client

  • [fix][client] Copy eventTime to retry letter topic and DLQ messages (#24059)
  • [fix][client] Fix building broken batched message when publishing (#24061)
  • [fix][client] Fix consumer leak when thread is interrupted before subscribe completes (#24100)
  • [fix][client] Pattern subscription regression when broker-side evaluation is disabled (#24104)
  • [improve][client] Prevent NullPointException when closing ClientCredentialsFlow (#24123)
  • [clean][client] Clean code for the construction of retry/dead letter topic name (#24082)

Pulsar IO and Pulsar Functions

  • [fix][io] Fix KinesisSink json flattening for AVRO's SchemaType.BYTES (#24132)
  • [improve][fn] Set default tenant and namespace for ListFunctions cmd (#23881)
  • [improve][io] Enhance Kafka connector logging with focused bootstrap server information (#24128)
  • [improve][io] Remove sleep when sourceTask.poll of kafka return null (#24124)

Others

  • [fix][doc] fix doc related to chunk message feature. (#24023)
  • [improve][cli] Support additional msg metadata for V1 topic on peek message cmd (#23978)
  • [improve][monitor] Add version=0.0.4 to /metrics content type for Prometheus 3.x compatibility (#24060)

Tests & CI

  • [fix][test] Fix flaky test OneWayReplicatorUsingGlobalZKTest.testConfigReplicationStartAt (#24011)
  • [fix][test]Fix flaky test V1_ProducerConsumerTest.testConcurrentConsumerReceiveWhileReconnect (#24019)
  • [fix][ci] Bump dependency-check to 12.1.0 to fix OWASP Dependency Check job (#24083)
  • [improve][test] Upgrade Testcontainers to 1.20.4 and docker-java to 3.4.0 (#24003)
  • [improve][ci] Upgrade Gradle Develocity Maven Extension to 1.23.1 (#24004)

For the complete list, check the full changelog.

v4.0.3

27 Feb 11:36
v4.0.3
Compare
Choose a tag to compare

2025-02-27

Known issues

There's a potential regression where consuming messages could fail due to #23931 changes. This is being addressed in #24055 and #24089. No workarounds currently exist.

Library updates

  • [feat][misc] upgrade oxia java client to 0.5.0 (#23871)
  • [fix] Bump org.apache.solr:solr-core from 8.11.3 to 9.8.0 in /pulsar-io/solr (#23899)
  • [fix] Use Alpine 3.21 in base image (#23964)
  • [fix][build] Upgrade json-smart to 2.5.2 (#23966)
  • [improve] Upgrade to Netty 4.1.117.Final (#23863)
  • [fix][sec] Upgrade to Netty 4.1.118 to address CVE-2025-24970 (#23965)

Broker

  • [fix][broker] Fix bug in RangeCache where different instance of the key wouldn't ever match (#23903)
  • [fix][broker] Apply dispatcherMaxReadSizeBytes also for replay reads for Shared and Key_Shared subscriptions (#23894)
  • [fix][broker] Closed topics won't be removed from the cache (#23884)
  • [fix][broker] Fix BucketDelayedDeliveryTracker thread safety (#24014)
  • [fix][broker] Fix NPE during active consumer is disconnected (#24008)
  • [fix][broker] Fix incorrect blockedConsumerOnUnackedMsgs value when maxUnackedMessagesPerConsumer is 1 (#23796)
  • [fix][broker] Fix rate limiter token bucket and clock consistency issues causing excessive throttling and connection timeouts (#23930)
  • [fix][broker] Fix repeatedly acquired pending reads quota (#23869)
  • [fix][broker] Fix seeking by timestamp can be reset the cursor position to earliest (#23919)
  • [fix][broker] Geo Replication lost messages or frequently fails due to Deduplication is not appropriate for Geo-Replication (#23697)
  • [fix][broker] Make InflightReadsLimiter asynchronous and apply it for replay queue reads (#23901)
  • [fix][broker] PIP-322 Fix issue with rate limiters where rates can exceed limits initially and consumption pauses until token balance is positive (#24012)
  • [fix][broker] PIP-379 Key_Shared implementation race condition causing out-of-order message delivery (#23874)
  • [fix][broker] Skip to persist cursor info if it failed by cursor closed (#23615)
  • [fix][broker] fix broker identifying incorrect stuck topic (#24006)
  • [fix][broker] fix broker may lost rack information (#23331)
  • [fix][meta] Fix ephemeral Zookeeper put which creates a persistent znode (#23984)
  • [fix][meta] Fix ephemeral handling of ZK nodes and fix MockZooKeeper ephemeral and ZK stat handling (#23988)
  • [fix][ml] Fix cursor metadata compatability issue when switching the config unackedRangesOpenCacheSetEnabled (#23759)
  • [fix][ml] Fix deadlock in PendingReadsManager (#23958)
  • [fix][ml] Fix memory leak due to duplicated RangeCache value retain operations (#23955)
  • [fix][ml] Fix memory leaks in ManagedCursorInfo and ManagedLedgerInfo decompression and compression (#23960)
  • [fix][ml] incorrect non-durable cursor's backlog due to concurrently trimming ledger and non-durable cursor creation (#23951)
  • [improve][broker] Avoid PersistentReplicator.expireMessages logic compute backlog twice (#23957)
  • [improve][broker] Avoid logging errors when there is a connection issue during subscription. (#23939)
  • [improve][broker] Avoid printing log for IncompatibleSchemaException in ServerCnx (#23938)
  • [improve][broker] Do not print error logs for NotFound or Conflict errors when using the Admin API (#23928)
  • [improve][broker] Don't print error logs for ProducerBusyException (#23929)
  • [improve][broker] Fix non-persistent system topic schema compatibility (#23286)
  • [improve][broker] Improve Consumer.equals performance (#23864)
  • [improve][broker] Make the estimated entry size more accurate (#23931)
  • [improve][broker] Refactor a private method to eliminate an unnecessary parameter (#23915)
  • [improve][broker] Remove spamming logs for customized managed ledger (#23862)
  • [improve][broker] Support values up to 2^32 in ConcurrentBitmapSortedLongPairSet (#23878)
  • [improve][meta] Simplify getting parent path in ZKMetadataStore without using java.io.File (#23996)
  • [improve][ml] Use lock-free queue in InflightReadsLimiter since there's no concurrent access (#23962)

Client

  • [feat][client] Support forward proxy for the ZTS server in pulsar-client-auth-athenz (#23947)
  • [fix] Avoid NPE when closing an uninitialized SameAuthParamsLookupAutoClusterFailover (#23911)
  • [fix] Initialize UrlServiceProvider before trying to use transaction coordinator (#23914)
  • [fix][client] Fix LoadManagerReport not found (#23886)
  • [fix][client] Fix memory leak in ClientCnx.newLookup when there's TooManyRequestsException (#23971)
  • [fix][client] Fix memory leak when message size exceeds max message size and batching is enabled (#23967)
  • [fix][client] call redeliver 1 msg but did 2 msgs (#23943)
  • [fix][client] fix retry topic with exclusive mode. (#23859)
  • [improve][client] Avoid logging errors for retriable errors when creating producer (#23935)
  • [improve][client] Update TypedMessageBuilder deliverAfter and deliverAt api comment (#23969)
  • [improve][cli] Support additional msg metadata for V1 topic on peek message cmd (#23978)

Pulsar IO and Pulsar Functions

  • [fix][io] Fix pulsar-io:pom not found (#23979)
  • [improve][fn] Set default tenant and namespace for ListFunctions cmd (#23881)
  • [improve][io] Allow skipping connector deployment (#23932)

Others

  • [fix] fix for code scanning alert no. 48: Uncontrolled data used in path expression (#23985)
  • [fix][build] Use amazoncorretto:21-alpine3.20 JDK build for Alpine 3.20 (#23898)
  • [fix][build] Add develops for buildtools (#23992)
  • [improve][proxy] Make keep-alive interval configurable in Pulsar Proxy (#23981)

Tests & CI

  • [fix][test] Fix flaky DelayedDeliveryTest.testEnableTopicDelayedDelivery (#23893)
  • [fix][test] Fix flaky test MetadataStoreTest.emptyStoreTest (#23998)
  • [fix][test] Fix flaky test OneWayReplicatorUsingGlobalZKTest.testConfigReplicationStartAt (#24011)
  • [fix][test] Fix quiet time implementation in BrokerTestUtil.receiveMessages (#23876)
  • [fix][test] fix flaky testNegativeAcksWithBackoff when batch enabled. (#23986)
  • [fix][test]Fix flaky test V1_ProducerConsumerTest.testConcurrentConsumerReceiveWhileReconnect (#24019)
  • [improve][test] Add solution to PulsarMockBookKeeper for intercepting reads (#23875)
  • [improve][test] Support decorating topic, subscription, dispatcher, ManagedLedger and ManagedCursors instances in tests (#23892)
  • [improve][test] Upgrade Testcontainers to 1.20.4 and docker-java to 3.4.0 (#24003)
  • [fix][ci] Configure Docker data-root to /mnt/doc...
Read more