Skip to main content

Apache Pulsar 3.0.6

2024-08-01

Broker

  • [feat][broker] Implementation of PIP-323: Complete Backlog Quota Telemetry (#21816) (#22740)
  • [feat][broker][branch-3.0] PIP-321 Introduce allowed-cluster at the namespace level (#22378) (#22960)
  • [fix] Make operations on individualDeletedMessages in lock scope (#22966)
  • [fix] Remove blocking calls from BookieRackAffinityMapping (#22846)
  • [improve] Refactored BK ClientFactory to return futures (#22853)
  • [fix][broker] Asynchronously return brokerRegistry.lookupAsync when checking if broker is active(ExtensibleLoadManagerImpl only) (#22899)
  • [fix][broker] Can't connecte to non-persist topic when enable broker client tls (#22991)
  • [fix][broker] Check the broker is available for the SLA monitor bundle when the ExtensibleLoadManager is enabled (#22485)
  • [fix][broker] Check the markDeletePosition and calculate the backlog (#22947)
  • [fix][broker] Ensure that PulsarService is ready for serving incoming requests (#22977)
  • [fix][broker] EntryFilters fix NoClassDefFoundError due to closed classloader (#22767)
  • [fix][broker] Fix MessageDeduplication replay timeout cause topic loading stuck (#23004)
  • [fix][broker] Fix NPE after publishing a tombstone to the service unit channel (#22859)
  • [fix][broker] Fix Replicated Topic unload bug when ExtensibleLoadManager is enabled (#22496)
  • [fix][broker] Fix broker OOM when upload a large package. (#22989)
  • [fix][broker] Fix cursor should use latest ledger config (#22644)
  • [fix][broker] Fix geo-replication admin client url (#22584)
  • [fix][broker] Fix stuck when enable topic level replication and build remote admin fails (#23028)
  • [fix][broker] Fix topic status for oldestBacklogMessageAgeSeconds continuously increases even when there is no backlog. (#22907)
  • [fix][broker] Fix updatePartitionedTopic when replication at ns level and topic policy is set (#22971)
  • [fix][broker] Fix wrong logic of method TopicName.getPartition(int index) (#19841)
  • [fix][broker] Handle BucketDelayedDeliveryTracker recover failed (#22735)
  • [fix][broker] Immediately tombstone Deleted and Free state bundles (#22743)
  • [fix][broker] Make ExtensibleLoadManagerImpl.getOwnedServiceUnits async (#22727)
  • [fix][broker] Messages lost on the remote cluster when using topic level replication (#22890)
  • [fix][broker] PulsarStandalone started with error if --stream-storage-port is not 4181 (#22993)
  • [fix][broker] Remove blocking calls from Subscription.getStats (#23088)
  • [fix][broker] Replication stuck when partitions count between two clusters is not the same (#22983)
  • [fix][broker] Support lookup options for extensible load manager (#22487)
  • [fix][broker] Update init and shutdown time and other minor logic (ExtensibleLoadManagerImpl only) (#22930)
  • [fix][broker] broker log a full thread dump when a deadlock is detected in healthcheck every time (#22916)
  • [fix][broker] fix deadlock when disable topic level Geo-Replication (#22738)
  • [fix][broker] fix topic partitions was expanded even if disabled topic level replication (#22769)
  • [fix][broker] response not-found error if topic does not exist when calling getPartitionedTopicMetadata (#22838)
  • [fix][broker]Fix lookupService.getTopicsUnderNamespace can not work with a quote pattern (#23014)
  • [fix][broker][branch-3.0] Do not try to clean owned bundles from inactive source brokers (ExtensibleLoadManagerImpl only) (#23064) (#23077)
  • [fix][broker][branch-3.0] The topic might reference a closed ledger (#22860) (#22900)
  • [improve][broker] Check max producers/consumers limitation first before other ops to save resources (#23074)
  • [improve][broker] Clear thread local BrokerEntryMetadata instance before reuse (#22752)
  • [improve][broker] Follow up #4196 use PulsarByteBufAllocator handle OOM (#20837)
  • [improve][broker] GetPartitionMetadata fail also can produce messages (#23050)
  • [improve][broker] Improve CPU resources usege of TopicName Cache (#23052)
  • [improve][broker] Improve efficiency of checking message deletion (#20490)
  • [improve][broker] Improve exception for topic does not have schema to check (#22974)
  • [improve][broker] Include runtime dependencies in server distribution (#22001)
  • [improve][broker] Optimize PersistentTopic.getLastDispatchablePosition (#22707)
  • [improve][broker] PIP-356 Support Geo-Replication starts at earliest position (#22856)
  • [improve][broker] Remove ClassLoaderSwitcher to avoid objects allocations and consistent the codestyle (#22796)
  • [improve][broker] Use RoaringBitmap in tracking individual acks to reduce memory usage (#23006)
  • [improve][broker] [break change] Do not create partitioned DLQ/Retry topic automatically (#22705)
  • [improve][broker] avoid creating new objects when intercepting (#22790)
  • [improve][broker] checkTopicExists supports checking partitioned topic without index (#21701)
  • [improve][broker] do not grant permission for each partition to reduce unnecessary zk metadata (#18222)
  • [improve][broker] high CPU usage caused by list topics under namespace (#23049)
  • [improve][broker] make system topic distribute evenly. (#22953)
  • [improve][broker]Ensure namespace deletion doesn't fail (#22627)
  • [improve][broker][branch-3.0] PIP-364: Introduce a new load balance algorithm AvgShedder (#23053)
  • [cleanup][ml] ManagedCursor clean up. (#22246)
  • [fix][ml] Add entry fail due to race condition about add entry failed/timeout and switch ledger (#22221)
  • [fix][ml]: subscription props could be lost in case of missing ledger during recovery (#22637)
  • [fix][ml] Fix race conditions in RangeCache (#22789)
  • [improve][ml] RangeCache refactoring: test race conditions and prevent endless loops (#22814)
  • [improve][ml] RangeCache refactoring follow-up: use StampedLock instead of synchronized (#22818)
  • [fix][admin] Clearly define REST API on Open API (#22783)
  • [fix][admin] Clearly define REST API on Open API for Namesaces@v2 (#22775)
  • [fix][admin] Clearly define REST API on Open API for Topics (#22782)
  • [fix][admin] Fix can't delete tenant for v1 (#22550)
  • [fix][admin] Fix half deletion when attempt to topic with a incorrect API (#23002)
  • [fix][admin][part-1]Clearly define REST API on Open API (#22774)
  • [improve][admin] Check if the topic existed before the permission operations (#22742)

Client

  • [fix][client] Fix negative acknowledgement by messageId (#23060)
  • [fix][client] Fix orphan consumer when reconnection and closing are concurrency executing (#22958)
  • [fix][client] Fix pattern consumer create crash if a part of partitions of a topic have been deleted (#22854)
  • [fix][client] Fix resource leak in Pulsar Client since HttpLookupService doesn't get closed (#22858)
  • [fix][client] PIP-344 Do not create partitioned metadata when calling pulsarClient.getPartitionsForTopic(topicName) (#22206)
  • [fix][client] fix producer/consumer perform lookup for migrated topic (#21356)
  • [improve][client] PIP-344 support feature flag supportsGetPartitionedMetadataWithoutAutoCreation (#22773)
  • [improve][client] improve the class GetTopicsResult (#22766)

Pulsar IO and Pulsar Functions

  • [fix][fn] Enable optimized Netty direct byte buffer support for Pulsar Function runtimes (#22910)
  • [fix][fn] Support compression type and crypto config for all producers in Functions and Connectors (#22950)
  • [improve][fn] Make producer cache bounded and expiring in Functions/Connectors (#22945)

Others

  • [fix][cli] Fix Pulsar standalone "--wipe-data" (#22885)
  • [fix][cli] Fix Pulsar standalone shutdown - bkCluster wasn't closed (#22868)
  • [fix][cli] Fix the pulsar-daemon parameter passthrough syntax (#22905)
  • [improve][cli][branch-3.0] PIP-353: Improve transaction message visibility for peek-message (#22788)
  • [fix][meta] Check if metadata store is closed in RocksdbMetadataStore (#22852)
  • [fix][misc] Topic name from persistence name should decode local name (#22879)
  • [fix][offload] Break the fillbuffer loop when met EOF (#22722)
  • [fix][schema] Error checking schema compatibility on a schema-less topic via REST API (#22720)

Library updates

  • [fix][sec] Upgrade Bouncycastle libraries to address CVEs (#22826)
  • [fix] Bump io.airlift:aircompressor from 0.20 to 0.27 (#22819)
  • [improve] Upgrade IPAddress to 5.5.0 (#22886)
  • [improve] Upgrade Jetcd to 0.7.7 and VertX to 4.5.8 (#22835)
  • [cleanup][misc] Remove classifier from netty-transport-native-unix-common dependency (#22951)
  • [fix][misc] Remove RoaringBitmap dependency from pulsar-common (#23008)
  • [fix][misc] Rename netty native libraries in pulsar-client-admin-shaded (#22954)
  • [improve][misc] Upgrade to Bookkeeper 4.16.6 (#22963)
  • [improve][misc] Replace rename-netty-native-libs.sh script with renaming with maven-shade-plugin (#22957)
  • [improve][misc] Upgrade to Netty 4.1.111.Final and switch to use grpc-netty-shaded (#22892)

Tests & CI

  • [fix][ci] Fix OWASP Dependency Check download by using NVD API key (#22999)
  • [fix][ci] Fix jacoco code coverage report aggregation (#22964)
  • [fix][ci] Replace removed macos-11 with macos-latest in GitHub Actions (#22965)
  • [improve][build] Support git worktree working directory while building docker images (#22851)
  • [improve][build] Upgrade dependency-check-maven-plugin to 10.0.2 (#23012)
  • [improve][ci] Migrate from Gradle Enterprise to Develocity (#22880)
  • [improve][ci] Switch to use DEVELOCITY_ACCESS_KEY from GRADLE_ENTERPRISE_ACCESS_KEY (#23090)
  • [fix][test] Fix TableViewBuilderImplTest NPE and infinite loop (#22924)
  • [fix][test] Fix thread leaks in Managed Ledger tests and remove duplicate shutdown code (#21426)
  • [improve][test] Add a test to guarantee the TNX topics will not be replicated (#22721)

For the complete list, check the full changelog.