Skip to main content

Apache Pulsar 3.3.0

2024-06-06​

PIP​

  • PIP-315: Configurable max delay limit for delayed delivery #21798
  • PIP-321 Introduce allowed-cluster at the namespace level #21648
  • PIP-324: Alpine Docker images #21716
  • PIP-325: Add command to abort transaction #21731
  • PIP-326: Create a BOM to ease dependency management #21747
  • PIP-329: Strategy for maintaining the latest tag to Pulsar docker images #21872
  • PIP-330: getMessagesById gets all messages #21873
  • PIP 342: Support OpenTelemetry metrics in Pulsar client #22178
  • PIP-343: Use picocli instead of jcommander #22181
  • PIP-344 Correct the behavior of the public API pulsarClient.getPartitionsForTopic(topicName) #22182
  • PIP-335: Oxia metadata plugin #22009
  • PIP-339: Introducing the --log-topic Option for Pulsar Sinks and Sources #22071

Broker​

  • [admin][broker] Fix force delete subscription not working #22423
  • [cleanup][admin] Remove unused methods in PersistentTopicsBase #22424
  • [cleanup][broker] Remove unused NamespaceBundleFactory parameter when creating OwnershipCache #22482
  • [cleanup][broker]βˆ‚ fix doc for TransactionBuffer#isTxnAborted #21956
  • [cleanup][broker] fix return value of TransactionTimeoutTrackerImpl#addTransaction #22020
  • [cleanup][broker] remove useless code comment #22459
  • [cleanup][meta] Remove com.beust.jcommander.internal import #22294
  • [cleanup][ml] ManagedCursor clean up. #22246
  • [cleanup][test] remove useless TestAuthorizationProvider2 #22595
  • [feat][admin] Enable Gzip Compression by Default in Admin Client #22464
  • [feat][admin] PIP-330: getMessagesById gets all messages #21918
  • [feat][broker] Implementation of PIP-323: Complete Backlog Quota Telemetry #21816
  • [feat][broker] PIP-264: Add Java runtime metrics #22616
  • [feat][broker] PIP-264: Add topic messaging metrics #22467
  • [feat][misc] Add Pulsar BOM (Bill of Materials) #21871
  • [feat][misc] PIP-264: Implement topic lookup metrics using OpenTelemetry #22058
  • [feat][misc] PIP-320: Add OpenTelemetry scaffolding #22010
  • [fix] Fix Reader can be stuck from transaction aborted messages. #22610
  • [fix] Fixed implicit conversions from long -> int #22055
  • [fix] Include swagger annotations in shaded client lib #22570
  • [fix] Restored method as deprecated in AbstractMetadataStore #21950
  • [fix] Test was leaving client instance to null #22631
  • [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 deprecated check #22653
  • [fix][admin] Fix namespace admin api exception response #22587
  • [fix][admin][part-1]Clearly define REST API on Open API #22774
  • [fix][broker] Add the missed opentelemetry-sdk-testing dependency to tests of pulsar-broker-auth-sasl #22665
  • [fix][broker] Avoid being stuck when closing the broker with extensible load manager #22573
  • [fix][broker] Avoid consumers receiving acknowledged messages from compacted topic after reconnection #21187
  • [fix][broker] Avoid execute prepareInitPoliciesCacheAsync if namespace is deleted #22268
  • [fix][broker] Avoid expired unclosed ledgers when checking expired messages by ledger closure time #22335
  • [fix][broker] Check cursor state before adding it to the waitingCursors #22191
  • [fix][broker] Check the broker is available for the SLA monitor bundle when the ExtensibleLoadManager is enabled #22485
  • [fix][broker] Close dispatchers stuck due to mismatch between dispatcher.consumerList and dispatcher.consumerSet #22270
  • [fix][broker] Continue closing even when executor is shut down #22599
  • [fix][broker] Create new ledger after the current ledger is closed #22034
  • [fix][broker] Delete compacted ledger when topic is deleted #21745
  • [fix][broker] Disable system topic message deduplication #22582
  • [fix][broker] Do not migrate internal topics during Blue-Green Migration when ExtensibleLoadBalancer is used #22478
  • [fix][broker] Enabling batch causes negative unackedMessages due to ack and delivery concurrency #22090
  • [fix][broker] Expire messages according to ledger close time to avoid client clock skew #21940
  • [fix][broker] Fix BufferOverflowException and EOFException bugs in /metrics gzip compression #22576
  • [fix][broker] Fix NPE causing dispatching to stop when using Key_Shared mode and allowOutOfOrderDelivery=true #22533
  • [fix][broker] Fix OpReadEntry.skipCondition NPE issue #22367
  • [fix][broker] Fix PersistentSubscription duplicate implementation interface Subscription #22359
  • [fix][broker] Fix Replicated Topic unload bug when ExtensibleLoadManager is enabled #22496
  • [fix][broker] Fix ResourceGroup report local usage #22340
  • [fix][broker] Fix ResourceGroups loading #21781
  • [fix][broker] Fix String wrong format #21829
  • [fix][broker] Fix a deadlock in SystemTopicBasedTopicPoliciesService during NamespaceEventsSystemTopicFactory init #22528
  • [fix][broker] Fix break change: could not subscribe partitioned topic with a suffix-matched regexp due to a mistake of PIP-145 #21885
  • [fix][broker] Fix broken topic policy implementation compatibility with old pulsar version #22535
  • [fix][broker] Fix broker not starting when both transactions and the Extensible Load Manager are enabled #22139
  • [fix][broker] Fix can not subscribe partitioned topic with a suffix-matched regexp #22025
  • [fix][broker] Fix compaction/replication data loss when expire messages #21865
  • [fix][broker] Fix configurationMetadataSyncEventTopic is marked supporting dynamic setting, but not implemented #22684
  • [fix][broker] Fix consumer stops receiving messages when with large backlogs processing #22454
  • [fix][broker] Fix deadlock while skip non-recoverable ledgers. #21915
  • [fix][broker] Fix getMessageById throws 500 #21919
  • [fix][broker] Fix hash collision when using a consumer name that ends with a number #22053
  • [fix][broker] Fix invalid condition in logging exceptions #22412
  • [fix][broker] Fix issue of field 'topic' is not set when handle GetSchema request #22377
  • [fix][broker] Fix issue with GetMessageIdByTimestamp can't find match messageId from compacted ledger #21600
  • [fix][broker] Fix leader broker cannot be determined when the advertised address and advertised listeners are configured #21894
  • [fix][broker] Fix message drop record in producer stat #22458
  • [fix][broker] Fix metrics pulsar_topic_load_failed_count is 0 when load non-persistent topic fails and fix the flaky test testBrokerStatsTopicLoadFailed #22580
  • [fix][broker] Fix nothing changed after removing dynamic configs #22673
  • [fix][broker] Fix potential NPE when disabling the liveness check #21840
  • [fix][broker] Fix reader stuck when read from compacted topic with read compact mode disable #21969
  • [fix][broker] Fix returns wrong webServiceUrl when both webServicePort and webServicePortTls are set #21842
  • [fix][broker] Fix schema deletion error when deleting a partitioned topic with many partitions and schema #21977
  • [fix][broker] Fix thread safety of loadSheddingTask and loadResourceQuotaTask fields #22660
  • [fix][broker] Fix typo #21843
  • [fix][broker] Fix typo in CompactedTopicImpl. #22235
  • [fix][broker] Fix typos in Consumer class #22532
  • [fix][broker] Fix typos in PersistentTopic class #22364
  • [fix][broker] Fix typos in UniformLoadShedder class #21907
  • [fix][broker] Fix write all compacted out entry into compacted topic #21917
  • [fix][broker] Fix wrong double-checked locking for readOnActiveConsumerTask in dispatcher #22279
  • [fix][broker] Make ExtensibleLoadManagerImpl.getOwnedServiceUnits async #22727
  • [fix][broker] One topic can be closed multiple times concurrently #17524
  • [fix][broker] Optimize /metrics, fix unbounded request queue issue and fix race conditions in metricsBufferResponse mode #22494
  • [fix][broker] Part-1: Replicator can not created successfully due to an orphan replicator in the previous topic owner #21946
  • [fix][broker] Part-2: Replicator can not created successfully due to an orphan replicator in the previous topic owner #21948
  • [fix][broker] Prevent long deduplication cursor backlog so that topic loading wouldn't timeout #22479
  • [fix][broker] Reader stuck after call hasMessageAvailable when enable replicateSubscriptionState #22572
  • [fix][broker] Replication stopped due to unload topic failed #21947
  • [fix][broker] Restore the broker id to match the format used in existing Pulsar releases #21937
  • [fix][broker] Return getOwnerAsync without waiting on source broker upon Assigning and Releasing and handle role change during role init #22112
  • [fix][broker] Sanitize values before logging in apply-config-from-env.py script #22044
  • [fix][broker] Set ServiceUnitStateChannel topic compaction threshold explicitly, improve getOwnerAsync, and fix other bugs #22064
  • [fix][broker] Skip topic.close during unloading if the topic future fails with ownership check, and fix isBundleOwnedByAnyBroker to use ns.checkOwnershipPresentAsync for ExtensibleLoadBalancer #22379
  • [fix][broker] Subscription stuck due to called Admin API analyzeSubscriptionBacklog #22019
  • [fix][broker] Support OIDC providers with JWK without alg field set in keys #22421
  • [fix][broker] Support lookup options for extensible load manager #22487
  • [fix][broker] Support running docker container with gid != 0 #22081
  • [fix][broker] Unify topic-level policies enable judgment conditions #19501
  • [fix][broker] Update TransferShedder underloaded broker check to consider max loaded broker's msgThroughputEMA and update IsExtensibleLoadBalancerImpl check #22321
  • [fix][broker] Update topic partition failed when config maxNumPartitionsPerPartitionedTopic<0 #22397
  • [fix][broker] Update topic policies as much as possible when some ex was thrown #21810
  • [fix][broker] add timeout for health check read. #21990
  • [fix][broker] avoid offload system topic #22497
  • [fix][broker] correct compaction phase one timeout meaning #21908
  • [fix][broker] fix mismatch between dispatcher.consumerList and dispatcher.consumerSet #22283
  • [fix][broker] fix the wrong value of BrokerSrevice.maxUnackedMsgsPerDispatcher #21765
  • [fix][broker] print non log when delete partitioned topic failed #22153
  • [fix][broker]Fix NonPersistentDispatcherMultipleConsumers ArrayIndexOutOfBoundsException #21856
  • [fix][broker]Support setting autoSkipNonRecoverableData dynamically in expiryMon… #21991
  • [fix][broker][admin] Fix cannot update properties on NonDurable subscription. #22411
  • [fix][misc] Make ConcurrentBitSet thread safe #22361
  • [fix][misc] NPE during standalone shutdown #22636
  • [fix][misc] Rename all shaded Netty native libraries #22415
  • [fix][ml] Fix NPE of getValidPositionAfterSkippedEntries when recovering a terminated managed ledger #22552
  • [fix][ml] Fix retry mechanism of deleting ledgers to invalidate #21869
  • [fix][ml] Mark delete stuck due to switching cursor ledger fails #22662
  • [fix][ml] No rollover inactive ledgers when metadata service invalid #22284
  • [fix][ml]Expose ledger timestamp #22338
  • [fix][offload] Break the fillbuffer loop when met EOF #22722
  • [fix][offload] Fix OOM in tiered storage, caused by unbounded offsets cache #22679
  • [fix][offload] Fix Offload readHandle cannot close multi times. #22162
  • [fix][offload] Increase file upload limit from 2048MiB to 4096MiB for GCP/GCS offloading #22554
  • [fix][sec] Revert "[fix][sec] Add a check for the input time value (apache#22023)" #22243
  • [fix][sec] Add a check for the input time value #22023
  • [fix][sec] Dismiss warning about MD5 since it's sufficient for these use cases #22282
  • [fix][sec] Go Functions security updates #21844
  • [fix][sec] implicit narrowing conversion in compound assignment #22074
  • [fix][storage] ReadonlyManagedLedger initialization does not fill in the properties #22630
  • [fix][txn] Get previous position by managed ledger. #22024
  • [fix][txn]Fix TopicTransactionBuffer potential thread safety issue #22149
  • [fix][txn]Handle exceptions in the transaction pending ack init #21274
  • [fix][ws] Check the validity of config before start websocket service #22231
  • [improve] Added CodeQL static scanner #22037
  • [improve] Make the config metricsBufferResponse description more effective #22490
  • [improve] PIP-335: Pulsar with Oxia integration test #22045
  • [improve] PIP-342: OTel client metrics support #22179
  • [improve] Removed unnecessary native libraries from Docker images #22230
  • [improve] Retry re-validating ResourceLock with backoff after errors #22617
  • [improve] Run Trivy image scanner with the current image #22386
  • [improve] Update Oxia client to 0.1.6 #22525
  • [improve][admin] Align the auth and check it at the first place for topic related API #22507
  • [improve][admin] Add authorization test for schema and align auth for transaction #22399
  • [improve][admin] Align the auth and check it at the first place for topic related API #22342
  • [improve][admin] Check if the topic existed before the permission operations #22547
  • [improve][admin] Expose the offload threshold in seconds to the amdin #22101
  • [improve][admin] Fix the createMissingPartitions doesn't response correctly #22311
  • [improve][broker] Add an error log to troubleshoot the failure of starting broker registry. #22065
  • [improve][broker] Add createTopicIfDoesNotExist option to RawReader constructor #22264
  • [improve][broker] Add fine-grain authorization to ns/topic management endpoints #22305
  • [improve][broker] Add fine-grain authorization to retention admin API #22163
  • [improve][broker] Add logging to leader election #22645
  • [improve][broker] Add logs to getInternalStats for quickly locate problem when schema ledger is lost #22233
  • [improve][broker] Add missing configuration keys for caching catch-up reads #22295
  • [improve][broker] Add topic name to emitted error messages. #22506
  • [improve][broker] Apply loadBalancerDebugModeEnabled in LeastResourceUsageWithWeight #22549
  • [improve][broker] Avoid repeated Read-and-discard when using Key_Shared mode #22245
  • [improve][broker] Cache the internal writer when sent to system topic. #22099
  • [improve][broker] Change log level to reduce duplicated logs #22147
  • [improve][broker] Close TopicPoliciesService to allow Pulsar broker graceful shutdown #22589
  • [improve][broker] Consistently add fine-grain authorization to REST API #22202
  • [improve][broker] Create partitioned topics automatically when enable topic level replication #22537
  • [improve][broker] Deprecate unused enableNamespaceIsolationUpdateOnTime config #22449
  • [improve][broker] Disable JFR metric reporting in OpenTelemetry #22669
  • [improve][broker] Do not close the socket if lookup failed due to LockBusyException #21993
  • [improve][broker] Do not print an Error log when responding to HTTP-404 when calling Admin API and the topic does not exist. #21995
  • [improve][broker] Do not retain the data in the system topic #22022
  • [improve][broker] Do not try to open ML when the topic meta does not exist and do not expect to create a new one. #21995 #22004
  • [improve][broker] Don't log brokerClientAuthenticationParameters and bookkeeperClientAuthenticationParameters by default #22395
  • [improve][broker] Don't rollover empty ledgers based on inactivity #21893
  • [improve][broker] Don't use forkjoin pool by default for deleting partitioned topics #22598
  • [improve][broker] Exclude producers for geo-replication from publishers field of topic stats #22556
  • [improve][broker] Improve Gzip compression, allow excluding specific paths or disabling it #22370
  • [improve][broker] Improve NamespaceUnloadStrategy error message #21880
  • [improve][broker] Include runtime dependencies in server distribution #22001
  • [improve][broker] Make BrokerSelectionStrategy pluggable #22553
  • [improve][broker] Optimize gzip compression for /metrics endpoint by sharing/caching compressed result #22521
  • [improve][broker] Optimize web interface deleteDynamicConfiguration return error message #22356
  • [improve][broker] PIP-299-part-1: Stop dispatch messages if the individual acks will be lost in the persistent storage #21423
  • [improve][broker] PIP-299-part-2: add config dispatcherPauseOnAckStatePersistentEnabled #21370
  • [improve][broker] PIP-299-part-3: Add dynamic config support: dispatcherPauseOnAckStatePersistentEnabled #21837
  • [improve][broker] PIP-299-part-4: Add topic-level policy: dispatcherPauseOnAckStatePersistent #21874
  • [improve][broker] PIP-299-part-5: Add namespace-level policy: dispatcherPauseOnAckStatePersistent #21926
  • [improve][broker] PIP-307: Add feature flag config option #21866
  • [improve][broker] PIP-307: Add monitoring metrics for graceful closure of producers/consumers #21854
  • [improve][broker] Propagate cause exception in TopicBusyException when applicable #22596
  • [improve][broker] Recover susbcription creation on the broken schema ledger topic #22469
  • [improve][broker] Reduce ResourceGroup log #21957
  • [improve][broker] Reduce the duplicated null check for LeaderElectionService #22465
  • [improve][broker] Remove the atomicity on active consumer of a dispatcher #22285
  • [improve][broker] Repeat the handleMetadataChanges callback when configurationMetadataStore equals localMetadataStore #22519
  • [improve][broker] Servlet support response compression #21667
  • [improve][broker] Skip loading the NAR packages if not configured #21867
  • [improve][broker] Support X-Forwarded-For and HA Proxy Protocol for resolving original client IP of http/https requests #22524
  • [improve][broker] Support create RawReader based on configuration #22280
  • [improve][broker] backlog quota exceed limit log replaced with debug #22488
  • [improve][broker] defer the ownership checks if the owner is inactive (ExtensibleLoadManager) #21811
  • [improve][broker] perf: Reduce stickyHash calculations of non-persistent topics in SHARED subscriptions #22536
  • [improve][doc] Improve doc for maxTotalReceiverQueueSizeAcrossPartitions and receiverQueueSize of ConsumerBuilder #21841
  • [improve][log] Print source client addr when enabled haProxyProtocolEnabled #22686
  • [improve][meta] Log a warning when ZK batch fails with connectionloss #22566
  • [improve][misc] Add mandatory checkbox about release policy in the issue template #22267
  • [improve][misc] Include native epoll library for Netty for arm64 #22319
  • [improve][misc] Remove the call to sun InetAddressCachePolicy #22329
  • [improve][misc] Specify /pulsar/data as the home dir for the user in the Alpine based image #22447
  • [improve][ml] Filter out deleted entries before read entries from ledger. #21739
  • [improve][offload] Apply autoSkipNonRecoverableData configuration to tiered storage #22531
  • [improve][offload] Replace usage of shaded class in OffsetsCache #22683
  • [improve][proxy] Add a check for brokerServiceURL that does not support multi uri yet #21972
  • [improve][storage] Periodically rollover Cursor ledgers #22622
  • [improve][pip] PIP-339: Introducing the --log-topic Option for Pulsar Sinks and Sources #22071
  • [improve][txn] Add command to abort transaction #21630
  • [improve][ws] Add memory limit configuration for Pulsar client used in Websocket proxy #22666
  • [improve][pip] PIP-324: Alpine image #22054

Pulsar IO and Pulsar Functions​

  • [bug][fn] Prevent putstate uses empty values #22127
  • [fix][fn] Add missing version field back to querystate API #21966
  • [fix][fn] Prevent create state table from API calls for non-exists instances #22107
  • [fix][fn] Throw 404 RestException when state key not found #21921
  • [fix][fn] Use unified PackageManagement service to download packages #21955
  • [fix][fn] fix broken function-go test #22260
  • [fix][fn]make sure the classloader for ContextImpl is functionClassLoader in different runtimes #22501
  • [improve][fn] Add configuration for connector & functions package url sources #22184
  • [improve][fn] Add missing "exception" argument to some log.error #22140
  • [improve][fn] Expose RuntimeFlags as CLI option for Pulsar Functions and Connectors #22514
  • [improve][fn] Optimize Function Worker startup by lazy loading and direct zip/bytecode access #22122
  • [improve][fn] Pass FunctionDetails to Go instance #22350
  • [improve][fn] Show the class name of exceptions for pulsar functions #21833
  • [feat][io] AzureDataExplorer/Kusto Sink for Pulsar #22006
  • [fix][io] CompressionEnabled didn't work on elasticsearch sink #22565
  • [fix][io] Fix es index creation #22654
  • [fix][io] Kafka Source connector maybe stuck #22511
  • [improve][io]: Add validation for JDBC sink not supporting primitive schema #22376

CLI​

  • [cleanup][cli] Cleanup jcommander #22337
  • [improve][cli] CmdConsume print publishTime And eventTime info. #22308
  • [improve][cli] PIP-343: Refactor pulsar-perf to subcommand #22388
  • [improve][cli] PIP-343: Use picocli instead of jcommander in bin/pulsar #22288
  • [improve][cli] PIP-343: Use picocli instead of jcommander in pulsar-client-tools #22209
  • [improve][cli] PIP-343: Use picocli instead of jcommander in pulsar-function #22331
  • [improve][cli] PIP-343: Use picocli instead of jcommander in pulsar-perf #22303
  • [improve][cli] Remove cli unnecessary code #22161
  • [improve][cli] error out when --destinationBroker is set when --bundle is empty #21879
  • [fix][cli] Fix help option #22408
  • [fix][cli] Fix the bug when set-retention specified size with -T #22150
  • [fix][cli] Fix typos in CmdSinks class #22358
  • [fix][cli] Remove defaultValue of tenant/namespace for CmdFunctions #22764

Client​

  • [feat][client] Introduce Refresh API in the TableView #21417
  • [fix][client] Consumer lost message ack due to race condition in acknowledge with batch message #22353
  • [fix][client] Do no retrying for error subscription not found when disabled allowAutoSubscriptionCreation #22164
  • [fix][client] Fix Consumer should return configured batch receive max messages #22619
  • [fix][client] Fix ConsumerBuilderImpl#subscribe silent stuck when using pulsar-client:3.0.x with jackson-annotations prior to 2.12.0 #21985
  • [fix][client] Fix DLQ producer name conflicts when multiples consumers send messages to DLQ #21890
  • [fix][client] Fix client side memory leak when call MessageImpl.create and fix imprecise client-side metrics: pendingMessagesUpDownCounter, pendingBytesUpDownCounter, latencyHistogram #22393
  • [fix][client] Fix messages in the batch container timed out unexpectedly #21889
  • [fix][client] Fix multi-topics consumer could receive old messages after seek #21945
  • [fix][client] Fix wrong results of hasMessageAvailable and readNext after seeking by timestamp #22363
  • [fix][client] GenericProtobufNativeSchema not implement getNativeSchema method. #22204
  • [fix][client] Messages lost due to TopicListWatcher reconnect #21853
  • [fix][client] Unclear error message when creating a consumer with two same topics #22255
  • [fix][client] fix Reader.hasMessageAvailable might return true after seeking to latest #22201
  • [fix][client] fix huge permits if acked a half batched message #22091
  • [fix][client]Fixed getting an incorrect maxMessageSize value when accessing multiple clusters in the same process #22306
  • [improve][client] Mention partitioning in failover priorityLevel javaDoc #21980
  • [improve][client] add physicalAddress as part of connection pool key #22196

Library updates​

  • [fix] Bump google.golang.org/protobuf from 1.32.0 to 1.33.0 in /pulsar-function-go/examples #22262
  • [fix] Bump golang.org/x/net from 0.17.0 to 0.23.0 in /pulsar-function-go #22540
  • [fix] Bump org.apache.solr:solr-core from 8.11.1 to 8.11.3 in /pulsar-io/solr #22047
  • [fix] Upgrade Alpine packages at build time to fix CVE-2023-4236 #22763
  • [fix] Upgrade jose4j to 0.9.4 #22273
  • [fix][broker] upgrade jclouds 2.5.0 -> 2.6.0 #22220
  • [fix][sec] Upgrade Bouncycastle to 1.78 #22509
  • [fix][sec] Upgrade Debezium oracle connector version to avoid CVE-2023-4586 #22641
  • [fix][sec] Upgrade Jetty to 9.4.54.v20240208 to address CVE-2024-22201 #22144
  • [fix][sec] Upgrade Zookeeper to 3.9.2 to address CVE-2024-23944 #22275
  • [fix][sec] Upgrade aws-sdk.version to avoid CVE-2024-21634 #22633
  • [fix][sec] Upgrade commons-compress to 1.26.0 #22086
  • [fix][sec] Upgrade elasticsearch-java version to avoid CVE-2023-4043 #22640
  • [improve] Upgrade to Oxia client 0.2.0 #22663
  • [improve][misc] Upgrade to Bookkeeper 4.17.0 #22551
  • [improve][misc] Upgrade to Bookkeeper 4.16.5 #22484
  • [improve][bk] Upgrade BookKeeper dependency to 4.16.4 #21983
  • [improve][build] Upgrade Lombok to 1.18.32 for Java 22 support #22425
  • [improve][build] Upgrade OTel library versions #22649
  • [improve][build] Upgrade OWASP Dependency check version to 9.1.0 #22530
  • [improve][ci] Upgrade GitHub Actions versions to fix deprecation warning #21978
  • [improve][ci] Upgrade Gradle Enterprise maven extension version #22096
  • [improve][ci] Upgrade codecov-action version #22123
  • [improve][ci] Upgrade deprecated GitHub Actions to supported versions #22620
  • [improve][ci] Upgrade pulsar-client-python to 3.4.0 to avoid CVE-2023-1428 #21899
  • [improve][ci] Upgrade to actions/upload-artifact@v4 #21836
  • [improve][misc] Upgrade Netty version to 4.1.105.Final #21923
  • [improve][misc] Upgrade checkstyle to 10.14.2 #22291
  • [improve][misc] Upgrade jersey to 2.41 #22290
  • [improve][misc] Upgrade log4j2 to 2.23.1 #22327
  • [improve][misc] Upgrade slf4j to 2.0.13 #22391
  • [improve][misc] Upgrade to Netty 4.1.108 and tcnative 2.0.65 #22369
  • [improve][build] Use slf4j-bom to align slf4j versions #22646

Tests & CI​

  • [feat][ci] Add Trivy container scan Github workflow #22063
  • [fix][ci] Don't allow merging PR without successful result #22563
  • [fix][ci] Fix OWASP dep check GH actions workflow #21831
  • [fix][ci] Fix labeler GitHub Actions workflow, adapt to v5 configuration format #22628
  • [fix][ci] Fix labels for flaky test GitHub issue template #22434
  • [fix][ci] Fix snappy-java native lib fails to load in x86 alpine #22804
  • [fix][ci] Tolerate mount option change failing in CI #22241
  • [improve][ci] Disable test that causes OOME until the problem has been resolved #22586
  • [improve][ci] Improve OWASP dependency checks #21817
  • [improve][ci] Only run CodeQL when the PR contains changes to non-test java code #22146
  • [improve][ci] Require all conversations on code to be resolved before merging PRs #21832
  • [improve][ci] Run CodeQL within Pulsar CI workflow as mandatory check #22132
  • [improve][ci] Run OWASP dependency check for offloaders and pulsar-io even when main check fails #21826
  • [improve][ci] Switch JDK distribution from temurin to corretto #22238
  • [improve][ci] revisit tune-runner-vm action, drop tuning for docker #22448
  • [fix][test] Clear MockedPulsarServiceBaseTest fields to prevent test runtime memory leak #22659
  • [fix][test] Clear fields in test cleanup to reduce memory consumption #22583
  • [fix][test] Fix NPE in BookKeeperClusterTestCase tearDown #22493
  • [fix][test] Fix Thread.getThreadGroup().getName() NPE #22070
  • [fix][test] Fix flaky ManagedLedgerErrorsTest.recoverAfterZnodeVersionError #22368
  • [fix][test] Fix flaky RGUsageMTAggrWaitForAllMsgsTest #22252
  • [fix][test] Fix flaky test BrokerServiceAutoSubscriptionCreationTest #22190
  • [fix][test] Fix flaky test ManagedLedgerTest.testGetNumberOfEntriesInStorage #22344
  • [fix][test] Fix flaky test ReplicatorTest #22594
  • [fix][test] Fix flaky test testPerTopicExpiredStat #22018
  • [fix][test] Fix test code create namespace conflict #21941
  • [fix][test] Fix test testAsyncFunctionMaxPending #22121
  • [fix][test] Fix test testTransactionBufferMetrics #22117
  • [fix][test] Fix the flaky tests of ManagedLedgerImplUtilsTest #22611
  • [fix][test] Fix the tests with same namespace name #22240
  • [fix][test] Fix thread leak in InjectedClientCnxClientBuilder and EnableProxyProtocolTest #21878
  • [fix][test] Fix thread leak in TopicPoliciesAuthZTest #22257
  • [fix][test] Flaky-test: ManagedLedgerTest.testTimestampOnWorkingLedger #22600
  • [fix][test] Flaky-test: testMessageExpiryWithTimestampNonRecoverableException and testIncorrectClientClock #22489
  • [fix][test] Make base test class method protected so that it passes ReportUnannotatedMethods validation #21976
  • [fix][test] Move ExtensibleLoadManagerImplTest to flaky tests #22495
  • [fix][test] SchemaMap in AutoConsumeSchema has been reused #22500
  • [fix][test] fix flaky test shouldProvideConsistentAnswerToTopicLookupsUsingAdminApi #22249
  • [fix][test] fix test testSyncNormalPositionWhenTBRecover #22120
  • [improve][test] Add operation authentication test for namespace API #22398
  • [improve][test] Add policy authentication test for namespace API #22593
  • [improve][test] Add topic operation checker for topic API #22468
  • [improve][test] Add topic policy test for topic API #22546
  • [improve][test] Clear fields in AuthZTest classes at cleanup #22661
  • [improve][test] Don't configure Mockito spying for MultiBrokerTestZKBaseTest #22250
  • [improve][test] Move ShadowManagedLedgerImplTest to flaky tests #22526
  • [improve][test] Move most flaky tests to flaky group #22433
  • [improve][test] Reduce AdvertisedListenersMultiBrokerLeaderElectionTest flakiness #22258
  • [improve][test] Reduce logging overhead in tests #22251
  • [improve][test] Remove redudant test code #21999
  • [improve][test] Replace usage of curl in Java test and fix stream leaks #22463- [fix][test] Clear MockedPulsarServiceBaseTest fields to prevent test runtime memory leak #22659
  • [fix][test] Clear fields in test cleanup to reduce memory consumption #22583
  • [fix][test] Fix NPE in BookKeeperClusterTestCase tearDown #22493
  • [fix][test] Fix Thread.getThreadGroup().getName() NPE #22070
  • [fix][test] Fix flaky ManagedLedgerErrorsTest.recoverAfterZnodeVersionError #22368
  • [fix][test] Fix flaky RGUsageMTAggrWaitForAllMsgsTest #22252
  • [fix][test] Fix flaky test BrokerServiceAutoSubscriptionCreationTest #22190
  • [fix][test] Fix flaky test ManagedLedgerTest.testGetNumberOfEntriesInStorage #22344
  • [fix][test] Fix flaky test ReplicatorTest #22594
  • [fix][test] Fix flaky test testPerTopicExpiredStat #22018
  • [fix][test] Fix test code create namespace conflict #21941
  • [fix][test] Fix test testAsyncFunctionMaxPending #22121
  • [fix][test] Fix test testTransactionBufferMetrics #22117
  • [fix][test] Fix the flaky tests of ManagedLedgerImplUtilsTest #22611
  • [fix][test] Fix the tests with same namespace name #22240
  • [fix][test] Fix thread leak in InjectedClientCnxClientBuilder and EnableProxyProtocolTest #21878
  • [fix][test] Fix thread leak in TopicPoliciesAuthZTest #22257
  • [fix][test] Flaky-test: ManagedLedgerTest.testTimestampOnWorkingLedger #22600
  • [fix][test] Flaky-test: testMessageExpiryWithTimestampNonRecoverableException and testIncorrectClientClock #22489
  • [fix][test] Make base test class method protected so that it passes ReportUnannotatedMethods validation #21976
  • [fix][test] Move ExtensibleLoadManagerImplTest to flaky tests #22495
  • [fix][test] SchemaMap in AutoConsumeSchema has been reused #22500
  • [fix][test] fix flaky test shouldProvideConsistentAnswerToTopicLookupsUsingAdminApi #22249
  • [fix][test] fix test testSyncNormalPositionWhenTBRecover #22120
  • [improve][test] Add operation authentication test for namespace API #22398
  • [improve][test] Add policy authentication test for namespace API #22593
  • [improve][test] Add topic operation checker for topic API #22468
  • [improve][test] Add topic policy test for topic API #22546
  • [improve][test] Clear fields in AuthZTest classes at cleanup #22661
  • [improve][test] Don't configure Mockito spying for MultiBrokerTestZKBaseTest #22250
  • [improve][test] Move ShadowManagedLedgerImplTest to flaky tests #22526
  • [improve][test] Move most flaky tests to flaky group #22433
  • [improve][test] Reduce AdvertisedListenersMultiBrokerLeaderElectionTest flakiness #22258
  • [improve][test] Reduce logging overhead in tests #22251
  • [improve][test] Remove redudant test code #21999
  • [improve][test] Replace usage of curl in Java test and fix stream leaks #22463

Other​

  • [fix][build] Add curl command for pulsar image #22732
  • [fix][build] Add special handling for pulsar-bom in set-project-version.sh #22272
  • [fix][build] Fix CVE-2024-2511 by upgrading to OpenSSL in docker image #22731
  • [fix][build] Fix building java-test-image without setting IMAGE_JDK_MAJOR_VERSION #22095
  • [fix][build] Fix potential insufficient protostuff-related configs #21629
  • [fix][build] Fix ps command #22451
  • [fix][build] Fix pulsar-client-python installation on ARM arch #22733
  • [fix][build] Fix the errorprone maven profile #21834
  • [fix][build] Fix typo in rename script for windows cmd #22426
  • [fix][build] Fixed creation of packages-storage directory in docker image #22730
  • [fix][build] Remove duplicate mapping key in docker-compose yaml file #21979
  • [improve][build] Bump version to 3.3.0-SNAPSHOT #21818
  • [improve][build] Update copyright date #21830

A special thanks to the following contributors who contributed to Pulsar 3.3.0: freeznet, dragosvictor, poorbarcode, merlimat, jiangpengcheng, heesung-sn, crossoverJie, mattisonchao, hanmz, nikhilerigila09, izumo27, pgier, sherlock-lin, yaalsn, thetumbled, chenhongSZ, mukesh154, hangc0276, gvanyao, nodece, Denovo1998, coderzc, zhangqian321, eolivelli, rdhabalia, lhotari, Shawyeok, BewareMyPower, dao-jun, massakam, teet-vaher-sympower, Demogorgon314, Technoboy-, AnonHxy, codelipenghui, liangyepianzhou, zymap, jianyun8023, shibd, dlg99, onobc, nicoloboschi