Skip to main content

Apache Pulsar 3.3.1

2024-08-01

Broker

  • [feat][broker] PIP-264: Add OpenTelemetry consumer metrics (#22693)
  • [feat][broker] PIP-321 Introduce allowed-cluster at the namespace level (#22378) (#22961)
  • [fix] Make operations on individualDeletedMessages in lock scope (#22966)
  • [fix] Remove blocking calls from BookieRackAffinityMapping (#22846)
  • [fix][admin] Fix half deletion when attempt to topic with a incorrect API (#23002)
  • [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 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 ProducerBusy issue due to incorrect userCreatedProducerCount on non-persistent topic (#22685)
  • [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] Handle BucketDelayedDeliveryTracker recover failed (#22735)
  • [fix][broker] Immediately tombstone Deleted and Free state bundles (#22743)
  • [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 advertised listeners when gracefully transferring topics (ExtensibleLoadManagerImpl only) (#22862)
  • [fix][broker] The topic might reference a closed ledger (#22860)
  • [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] disable loadBalancerDirectMemoryResourceWeight by default (#22821)
  • [fix][broker] fix deadlock when disable topic level Geo-Replication (#22738)
  • [fix][broker] fix replicated subscriptions for transactional messages (#22452)
  • [fix][broker] fix topic partitions was expanded even if disabled topic level replication (#22769)
  • [fix][broker] maintain last active info in memory only. (#22794)
  • [fix][broker] rename to changeMaxReadPositionCount (#22656)
  • [fix][broker] response not-found error if topic does not exist when calling getPartitionedTopicMetadata (#22838)
  • [fix][broker] usedLocallySinceLastReport should always be reset (#22672)
  • [fix][broker]Fix lookupService.getTopicsUnderNamespace can not work with a quote pattern (#23014)
  • [fix][broker][branch-3.3] Do not try to clean owned bundles from inactive source brokers (ExtensibleLoadManagerImpl only) (#23064) (#23085)
  • [fix][misc] Disable JFR based telemetry collection since it's not used (#22869)
  • [fix][misc] Topic name from persistence name should decode local name (#22879)
  • [fix][ml] Add entry fail due to race condition about add entry failed/timeout and switch ledger (#22221)
  • [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][ml]: subscription props could be lost in case of missing ledger during recovery (#22637)
  • [improve] Refactored BK ClientFactory to return futures (#22853)
  • [improve] Validate range of argument before long -> int conversion (#22830)
  • [improve][broker] Add additionalSystemCursorNames ignore list for TTL check (#22614)
  • [improve][broker] Add subscription prefix for internal reader (#23044)
  • [improve][broker] Check max producers/consumers limitation first before other ops to save resources (#23074)
  • [improve][broker] Close protocol handlers before unloading namespace bundles (#22728)
  • [improve][broker] Do not call cursor.isCursorDataFullyPersistable if disabled dispatcherPauseOnAckStatePersistentEnabled (#22729)
  • [improve][broker] GetPartitionMetadata fail also can produce messages (#23050)
  • [improve][broker] Improve CPU resources usege of TopicName Cache (#23052)
  • [improve][broker] Improve exception for topic does not have schema to check (#22974)
  • [improve][broker] PIP-355: Enhancing Broker-Level Metrics for Pulsar (#22779)
  • [improve][broker] PIP-356 Support Geo-Replication starts at earliest position (#22856)
  • [improve][broker] Reduce number of OpenTelemetry consumer attributes (#22837)
  • [improve][broker] Reduce the CPU pressure from the transaction buffer in rolling restarts (#23062)
  • [improve][broker] Remove ClassLoaderSwitcher to avoid objects allocations and consistent the codestyle (#22796)
  • [improve][broker] Reuse topic OpenTelemetry attributes (#22876)
  • [improve][broker] Trigger offload on topic load (#22652)
  • [improve][broker] Use RoaringBitmap in tracking individual acks to reduce memory usage (#23006)
  • [improve][broker] avoid creating new objects when intercepting (#22790)
  • [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)

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)
  • [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)
  • [improve][io] The JDBC connector supports JSON substructure schema (#23043)

Others

  • [fix][cli] Fix Pulsar standalone "--wipe-data" (#22885)
  • [fix][cli] Fix Pulsar standalone shutdown - bkCluster wasn't closed (#22868)
  • [fix][cli] Fix expiration of tokens created with "pulsar tokens create" (#22815)
  • [fix][cli] Fix healthcheck script pulsar-zookeeper-ruok.sh (#22873)
  • [fix][cli] Fix the pulsar-daemon parameter passthrough syntax (#22905)
  • [fix][conf] fix configuration name and typo. (#22822)
  • [fix][meta] Check if metadata store is closed in RocksdbMetadataStore (#22852)
  • [improve][offload] Allow to disable the managedLedgerOffloadDeletionLagInMillis (#22689)

Library updates

  • [fix][sec] Upgrade Bouncycastle libraries to address CVEs (#22826)
  • [fix][sec] Upgrade postgresql version to avoid CVE-2024-1597 (#22635)
  • [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)
  • [improve] Upgrade to Oxia client 0.3.0 (#22807)
  • [fix] Upgrade to Oxia 0.3.1 (#23048)
  • [cleanup][misc] Remove classifier from netty-transport-native-unix-common dependency (#22951)
  • [improve][misc] Set Alpine base image to 3.20 instead of 3.19.1 (#22941)
  • [improve][misc] Replace rename-netty-native-libs.sh script with renaming with maven-shade-plugin (#22957)
  • [improve][misc] Upgrade Bookkeeper to 4.17.1 (#22962)
  • [improve][misc] Upgrade OTel library to 1.38.0 version (#22825)
  • [improve][misc] Upgrade to Netty 4.1.111.Final and switch to use grpc-netty-shaded (#22892)
  • [fix][misc] Add proper nslookup (included in bind-tools) to docker image (#22878)
  • [fix][misc] Remove RoaringBitmap dependency from pulsar-common (#23008)
  • [fix][misc] Rename netty native libraries in pulsar-client-admin-shaded (#22954)

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)
  • [fix][test] Fix TableViewBuilderImplTest NPE and infinite loop (#22924)
  • [fix][test] Update OpenTelemetry receiver endpoint in integration test (#22998)
  • [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] Add arm64 image build (#22755)
  • [improve][ci] Migrate from Gradle Enterprise to Develocity (#22880)
  • [improve][ci] Switch to use DEVELOCITY_ACCESS_KEY from GRADLE_ENTERPRISE_ACCESS_KEY (#23090)
  • [improve][test] Add a test to guarantee the TNX topics will not be replicated (#22721)

For the complete list, check the full changelog.