v2.9.2
ƒ Security
- Get rid of CVEs in Solr connector #13822
- Get rid of CVEs in InfluxDB connector #13821
- Get rid of CVEs in batch-data-generator #13820
- Get rid of CVEs brought in with aerospike #13819
- Suppress false positive Avro CVE-2021-43045 #13764
- Upgrade protobuf to 3.16.1 to address CVE-2021-22569 #13695
- Upgrade Jackson to 2.12.6 #13694
- Upgrade Log4j to 2.17.1 to address CVE-2021-44832 #13552
- Upgrade to Log4J 2.17.0 to mitigate CVE-2021-45105 #13392
- Cipher params not work in KeyStoreSSLContext #13322
- Use JDK default security provider when Conscrypt isn't available #12938
- Return if namespace policies are read only #12514
- Upgrade Postgre driver to 42.2.25 to get rid of CVE-2022-21724 #14119
- Bump slf4j from 1.7.25 to 1.7.32 #13595
- Upgrade Netty to 4.1.72 - CVE-2021-43797 #13328
Broker
- Fix lost message issue due to ledger rollover. #14664
- Fix thread leak in MLTransactionMetadataStore #14524
- Fix npe in ManagedLedgerImpl #14481
- Fix
Future.join()
causing deadlock. #14469 - Fix Broker HealthCheck Endpoint Exposes Race Conditions #14367
- Validate rack name #14336
- Fix avg-messagePerEntry metrics for consumer #14330
- Fix the wrong parameter in the log. #14309
- Fix batch ack count is a negative issue. #14288
- Bug fix: IllegalArgumentException: Invalid period 0.0 to calculate rate #14280
- Clean up individually deleted messages before the mark-delete position #14261
- If mark-delete operation fails, mark the cursor as "dirty" #14256
- Fix detecting number of NICs in EC2 #14252
- Remove log unacked msg. #14246
- Change broker producer fence log level #14196
- Avoid creating any topics in
NamespaceService#checkTopicExists
during topic lookup. #14134 - Fix NPE of cumulative ack mode and incorrect unack message count #14021
- Fix NPE -
ReplicatedSubscriptionsController
send marker message when enable deduplicated. #14017 - KeyShared stickyHashRange subscription: prevent stuck subscription in case of consumer restart #14014
- Add null check to workaround NPE in unit tests with Mockito/PowerMock #14006
- Fix handling of consumers with equal names on on key shared selector with consistent hashing #13991
- Trim configuration value string which contains blank prefix or suffix #13984
- WaitingCursors potential heap memory leak #13939
- Fix read schema compatibility strategy priority #13938
- Fix SystemTopicBasedTopicPoliciesService NPE issue. #13840
- NPE when get isAllowAutoUploadSchema #13831
- Fix topic produced through REST not support Authorization #13771
- Fix call sync method in async rest API for
internalGetSubscriptionsForNonPartitionedTopic
#13745 - Fix the deadlock while using zookeeper thread to create ledger #13744
- Fix inefficient forEach loop #13742
- Fix non persistent topic subscription error. #13685
- Fix invalid rack name cause bookie join rack failed #13683
- Release old bundle from ownership cache when operator split bundle #13678
- Avoid call sync method in async rest API for force delete subscription #13668
- Avoid call sync method in async rest API for delete subscription #13666
- Fix getInternalStats occasional lack of LeaderInfo #13656
- Fix internal topic effect by InactiveTopicPolicy. #13611
- Fix bug :Infinity value for CPU or Bandwidth usage #13609
- Change
ContextClassLoader
toNarClassLoader
in BrokerInterceptor #13589 - Fix NPE when unloading namespace bundle #13571
- Allow both limit and limitsize be null #13557
- The log prints NamespaceService#isServiceUnitActive exception stack information. #13553
- Update log content #13540
- HealthCheck v2 failed #13525
- Change ContextClassLoader to NarClassLoader in AdditionalServlet #13501
- Optimize the debug log that affects performance, and unify the style #13498
- Fix multi roles authz cannot handle empty roles case #13477
- Fix the NPE in system topics policies service #13469
- Fix race conditions in closing producers and consumers #13428
- Fix deadlock in metadata-store callback thread for branch 2.9 #13426
- Remove check resource when delete failure domain #13421
- Fix create the dynamic configuration resource if not exist #13420
- Fix batch message ack does not decrease the unacked-msg count. #13383
- Fix dead loop in BacklogQuotaManager.dropBacklogForTimeLimit #13249
- Modify return result of NamespacesBase#internalGetPublishRate #13237
- Optimize ManagedLedger Ledger Ownership Check #13222
- Fix shedding heartbeat ns #13208
- Fix when deleting topic with NotFoundException, do not return to client. #13203
- Clean up active consumer on already closed connection #13196
- Update cursor last active timestamp when reseting cursor #13166
- Use current resourceUsage value as historyUsage when leader change in ThresholdShedder #13136
- Don't attempt to delete pending ack store unless transactions are enabled #13041
- Fix race condition in ResourceLockImpl#revalidate #13006
- Fix NPE in
PersistentTopic.checkSubscriptionTypesEnable
#12961 - Fix wrong isEmpty method of ConcurrentOpenLongPairRangeSet #12953
- Correct param of delete method for v1 topic #12936
- Change create topic return error to Status.BAD_REQUEST #12919
- Fix topic policy listener deleted by mistake. #12904
- Remove readerCaches and close reader when exception occurs in SystemTopicBasedTopicPoliciesService #12873
- Fix deleting tenants with active namespaces with 500. #12848
- Bug Fix: topic policy is not properly init if namespace is loaded first. #12833
- Add broker config isAllowAutoUpdateSchema #12786
- Fix TopicPoliciesCacheNotInitException issue. #12773
- The problem of two exception handling #12744
- Handle lookup redirect for V1-topics with different cluster #12743
- Fix race condition in PersistentTopic#addReplicationCluster #12729
- Remove catching
NamingException
. #12725 - Even if always compatible is set, Consumers cannot be created #12721
- Fix znode leakage caused by deleting tenant #12711
- Remove unused listeners if it have no listeners. #12654
- Optimize exception information for schemas #12647
- Support retry when creating reader of Topic Policies #12622
- Fix String should use equals but not ==. #12619
- Fix 12614, waitingForPingResponse needs to be modified with volatile for concurrent sence #12615
- Cleanup ProxyPublishConsumeTest #12607
- Fix additional servlets nar might extract to null directory #12585
- Fix log typo in NamespaceService#checkHeartbeatNamespace #12582
- Clean up the metadata of the non-persistent partitioned topics. #12550
- Add git branch information for PulsarVersion #12541
- Websocket should pass the encryption context to the consumers #12539
- The count of topics on the bundle is less than 2, skip split #12527
- Remove redundant null check for getInternalListener #12474
- Optimize the code: remove extra spaces #12470
- Fix wrong property name in NamespaceIsolationDataImpl#secondary #12433
- Fix the null point caused by deleting the system topic policy #12367
- Future completed twice in the method of impl.MLPendingAckStore#closeAsync #12362
- Fix the race of delete subscription and delete topic #12240
- Fix delete authentication policies when delete topic. #12215
- Fix update ledger list to znode version mismatch failed, ledger not delete #12015
- Fix issues 11964, deadlock bug when use key_shared mode #11965
- Fix validateGlobalNamespaceOwnership wrap exception issue. #14269
- Fix reader skipped remaining compacted data during the topic unloading. #13629
- Return message ID from compacted ledger while the compaction cursor reach the end of the topic #13533
- Fix getting the last message-id from an empty compact ledger #13476
- Fix lost compaction data due to compaction properties missed during reset-cursor #12698
- Do not move the non-durable cursor position when trimming ledgers while topic with compaction #12602
- Fix can't read the latest message of the compacted topic #14449
- Fix skips compacted data for reader/consumer #12464
- Fix wrong behaviour caused by not cleaning up topic policy service state. #14503
- Avoid thread deadlock problem when creating topic policy reader #13837
- Bug Fix: topic policy is not properly init if namespace is loaded first. #13422
- Fix parse BigDecimal #14019
- Fix: bug when allAll bucket #13467
- Support GET_BACKLOG_SIZE topic op after enable auth #12850
- Reduce the readFailureBackoff time #12444
- Add readWorkerThreadsThrottlingEnabled to conf/bookkeeper.conf #12666
Transaction
- Fix cursor readPosition is bigger than maxPosition in OpReadEntry #14667
- Fix MLTransactionMetadataStore.update async fail #14532
- Fix end transaction at state of timeout #14370
- Optimize testEndTBRecoveringWhenManagerLedgerDisReadable #14303
- Delete changeMaxReadPositionAndAddAbortTimes when checkIfNoSnapshot #14276
- Adopt single thread pool in TC #14238
- Fix send normal message can't change MaxReadPosition #14192
- Optimize transaction timeout #14172
- Fix subscription ack transaction marker. #14170
- Fix OpBase.callback is not called in TransactionMetaStoreHandler#failPendingRequest #14133
- Fix deadlock on txn semaphore permit exhaustion #14131
- Fix unack message count for transaction Ack while disabled batch index ack #14071
- Fix individual ack with transaction decrease unAckMessageCounnt #14020
- Resolve the performance bottleneck of TransactionBufferHandle #13988
- RetryException should not be return #13828
- Fix recover of TransactionBuffer #13739
- Duplicate TYPE of Prometheus metrics #13704
- Remove txn add partition info log #13670
- Fix no response to client when handleSubscribe because PendingAckHandleImpl init fail #13655
- PendingAckHandleImpl handle isInCacheRequest #13481
- Stop TB recovering with exception #13425
- Optimize transaction FieldUpdater to static final #13396
- Delete the redundant code #13327
- Allow transaction to be committed or aborted in the state of aborting or committing. #13323
- Remove request if can not send #13308
- Fix generate transactionId some comments #13234
- Fix transaction sequenceId generate error. #13209
- No TransactionCoordinatorNotFound, but automatic reconnect #13135
- Add a check for uninitialized PendingAck #13088
- Handle exception double #12881
- Stop TP replaying with Exception #12700
- Stop TB recovering with exception #12636
- Txn client check timeout #12521
- Fix maxReadPosition with normal publish #12386
- Fix bugs, Exception thrower by TB::appendBufferToTxn must be ManagedLedgerException. #12376
- Merge transactionBuffer exception into a class #12358
- Add transaction perf #11933
- Adopt Single_thread to handle TcClient connecting #13969
- Stop TC replaying with exception #12705
- Fix performance #13253
Admin
- Fix Broker HealthCheck Endpoint Exposes Race Conditions. #14658
- Fix delete namespace issue. #14657
- Make sure policies.is_allow_auto_update_schema not null #14409
- Fix delete namespace issue. #14215
- Fix NPE when reset-cursor at a non-existent topic (RestException without cause) #13573
- Add transaction admin #13447
- Print topic internal info as formatted json #12709
- Add --all option to get all version schema of topic #12535
- Modify exception of set-properties for namespace #12436
- Get schema validation enforce add applied. #12349
- Add corresponding get command for namespace #12322
- Pulsar admin exposes secret for source and sink #13059
- Perfect judgment conditions of pulsar-admin #12315
Proxy
- Fix port exhaustion and connection issues in Pulsar Proxy #14078
- Allow config of IO and acceptor threads in proxy #14054
- Prevent leak of unreleased lookupRequestSemaphore permits #13812
- Fix issue when Proxy fails to start and logs about an uncaught exception #13171
- Add error log when new jetty client exception #12840
- Remove unnecessary Pulsar Client usage from Pulsar Proxy #13836
Clients
- [Java] Fix ConsumerBuilderImpl#subscribeAsync blocks calling thread. #14433
- [Java] Fix adding message to list potential issue #14377
- [Java] Fix send to deadLetterTopic not working when reach maxRedeliverCount #14317
- [Java] Fix time unit mismatch in errMsg when producer send fails. #14299
- [Java] Fix PersistentAcknowledgmentsGroupingTracker set BitSet issue. #14260
- [Java] Check
getTlsTrustStorePath
NPE when user forget to set it. #14253 - [Java] Fix consume failure when BatchReceivePolicy#maxNumBytes < message size #14139
- [Java] Use
scheduleWithFixedDelay
instead ofscheduleAtFixedRate
for java producer batch timer #14125 - [Java] Add a default timeout for OAuth2 Metadata Resolver #14056
- [Java] Fix send chunking message failed when ordering key is set. #13699
- [Java] Fix send chunking message failed when encryption enabled #13689
- [Java] Fix Producer semaphore permit release issue #13682
- [Java] Fix the wrong multi-topic has message available behavior #13634
- [Java] Use PulsarByteBufAllocator to allocate buffer for chunks #13536
- [Java] Fix resources leak when create producer failed #13505
- [Java] Fix semaphore and memory leak when chunks failed to enqueue #13454
- [Java] Fix invalid setting of enabled ciphers to fix warning from BoringSSL #13435
- [Java] Fix multi topic reader has message available behavior #13332
- [Java] Improve consumer listener logic #13273
- [Java] Fix memory leak when message payload processor is configured #13233
- [Java] Change the time units from ns to ms #13057
- [Java] Use sendAsync instead of send when produce message to retry topic. #12946
- [Java] Avoid IllegalStateException in ClientCnx debug logs #12899
- [Java] Fix pending queue-size stats for batch messages #12704
- [Java] Fix invalid firstSentAt in log message when timeout first time #12588
- [Java] Add conf backoff values #12520
- [Java] Update producer stats when producer close #12500
- [Java] Fix a typo in UnAckedMessageTracker #12467
- [Java] Fix the retry topic's
REAL_TOPIC
&ORIGIN_MESSAGE_ID
property #12451 - [Java] Change the producer fence error log to debug level #12447
- [Java] Add log error tracking for semaphore count leak #12410
- [Java] Fix race condition of OpSendMsgQueue when publishing messages #14231
- [C++] Fix wrong unit of Access Token Response's
expires_in
field #14554 - [C++] Fix thread safety issue for multi topic consumer #14380
- [C++] Fix pulsar client cpp build fail in gcc-4.8.5 #14053
- [C++] Fix hasMessageAvailable returns wrong value for last message #13883
- [C++] Fix in macOS CMake might find error boost-python libs path #13193
- [C++] Fix libcurl miss auth header when broker return 307 #13112
- [C++] Define and expose PULSAR_VERSION macro #12769
- [C++] Fix request timeout for GetLastMessageId doesn't work #12586
- [C++] Support setting priority for consumers #12526
- [C++] Fix connection read error logging #12492
- [C++] Use weak ref to ClientConnection for timeout task #12409
- [C++] Fix Version.h not found when CMake binary directory is customized #13324
- [C++] Fix GCC compilation failure caused by warning macro #14402
- [C++] Fix frequent segmentation fault of Python tests by refactoring ExecutorService #12427
- [Python] Apply clang-format check for python wrapper #13418
- [Python] Python schema support custom Avro configurations for Enum type #12642
- [Python] JsonSchema encoding is not idempotent #12490
- [Python] Cannot use any values that evaluates to False #12489
- [Python] Python client support using custom Avro schema definition #12516
- [WebSocket] Fix
ClassCastException
when user createMultiTopicReader
. #14316 - [WebSocket] Add debug log for WebSocket. #12458
CleanUp
- Remove unnecessary boxing unboxing #12790
- Optimize if statement #12741
- Remove unnecessary string operation #12719
- Remove redundant placeholders #12717
- Remove unused code in PersistentTopic.java #12715
- Remove unnecessary powermock annotation #12713
- Remove useless method "PersistentTopic#getPersistentTopic" #12655
- Remove unused isTxnMessage #12472
- Optimize SecurityUtility code flow #12431
- Remove redundant code #12424
Doc
- Fix doc for the wrong default value of
maxPendingChunkedMessage
#14144 - Update notice year. #13653
- Fix java doc for MultipleListenerValidator #12389
Pulsar SQL
- Fix PulsarRecordCursor deserialize issue. #14379
- Support protobuf/timestamp #13287
- Handle message null schema version in PulsarRecordCursor #12809
- Support query chunked messages feature in Pulsar SQL #12720
- Pulsar SQL support query big entry data #12448
- Fix time field use error #12249
Dependency
- Bump netty version to 4.1.74.Final #14257
- Upgrade commons-cli to 1.5.0 #14094
- Upgrade Gson version 2.8.6 to 2.8.9 #13610
- Fix issue of mixed SLF4J library versions in presto libs #13603
- Remove the unused junit4 dependency in managed ledger #13514
- Upgrade to BookKeeper 4.14.3 #12760
- Some dependencies in integration tests scope should be test #12696
- Upgrade debezium to 1.7.1 #12644
- Upgrade BK to 4.14.4 and Grpc to 1.42.1 #13714
Test
- BacklogQuotaManagerTest#testProducerExceptionAndThenUnblockSizeQuota #14213
- BacklogQuotaManagerTest.testConsumerBacklogEvictionTimeQuotaWithEmptyLedger #13724
- Fix flakiness issue when spying ServerCnx #13608
- Fix flaky test for BrokerServiceLookupTest.testModularLoadManagerSplitBundle #13159
- Fix flaky caused by message receive timeout in testBlockBrokerDispatching #12954
- Fix flaky test in PersistentStreamingDispatcherBlockConsumerTest #12943
- Fix flaky test in testReplicatorProducerName #12898
- JavaInstanceTest should be AssertEquals #12836
- ElasticSearchClientTests tests time out #12694
- Close Zk database on unit tests #12649
- Optimize the tests extends from TransactionTestBase #12560
- Broker resource group test optimize fail msg #12438
- Fix some tests not enabled in integration tests #12417
- Fix windows test path probleam #12398
- Fix ProxyServiceStarterTest flaky tests #12344
- AdminApiTest.testNamespaceSplitBundleConcurrent #14565
- Add test to ensure correct zk children cache invalidation #14178
- Upgrade Mockito to latest stable 3.x version, 3.12.4 #13622
- Add @test annotation to test methods #12640
Build
- Add suppression for pulsar-package-bookkeeper-storage #13451
- Suppress false positive check for netty-tcnative-classes #13364
Tool
- Fix NPE in cmdTopics #13450
- Add missed import #13037
- Support listenerThreads configuration. #12892
- Improve exception info for invaild time-related option #12828
- Fix doc for pulsar-admin bookies cmd #12542
Function
- Miss runtime set in GoInstanceConfig #13031
- Remove corrupt visible testing annotation in function workers #12621
- Pulsar admin exposes secrets for function #12950
CLI
- Support auto-recovery service in pulsar cli #12985
- Enable CLI to publish non-batched messages #12641
CI
- Replace deprecated "adopt" OpenJDK distribution with "temurin" in GitHub Actions config #12945
Connector
- [ES-Sink] Use topic name as the index name if indexName is not configured #13064
- [ES-Sink] Correct @FieldDoc defaultValue for some fields #12697
- Don't create AvroData for each KafkaSourceRecord #12859