You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@pulsar.apache.org by GitBox <gi...@apache.org> on 2022/08/18 07:45:21 UTC

[GitHub] [pulsar-site] Anonymitaet commented on a diff in pull request #167: [Don't Merge] Pulsar 2.11.0 release notes

Anonymitaet commented on code in PR #167:
URL: https://github.com/apache/pulsar-site/pull/167#discussion_r948757625


##########
site2/website-next/release-notes/versioned/pulsar-2.11.0.md:
##########
@@ -0,0 +1,484 @@
+---
+id: pulsar-2.11.0
+title: Apache Pulsar 2.11.0 
+sidebar_label: Apache Pulsar 2.11.0 
+---
+
+#### 2022-08-16
+
+### Important notice
+- Rename Pulsar txn metrics to specify OpenMetrics [#16581](https://github.com/apache/pulsar/pull/16581)
+- Rename Pulsar schema metrics to specify OpenMetrics [#16610](https://github.com/apache/pulsar/pull/16610)
+- Rename Pulsar lb metrics to specify OpenMetrics [#16611](https://github.com/apache/pulsar/pull/16611)
+- Remove jul-to-slf4j #16320 [#16320](https://github.com/apache/pulsar/pull/16320)
+- Fix get non-persistent topics issue in Namespaces [#16170](https://github.com/apache/pulsar/pull/16170)
+- Fix producer/consume permission can’t get schema [#15956](https://github.com/apache/pulsar/pull/15956)
+- Add verification for configured default backlog quota and retention [#15441](https://github.com/apache/pulsar/pull/15441)
+- Fix broker LoadBalance uneffective [#15314](https://github.com/apache/pulsar/pull/15314)
+- Ensure the deletion consistency of topic and schema [#14608](https://github.com/apache/pulsar/pull/14608)
+- Transaction cumulative ack redeliver change [#14371](https://github.com/apache/pulsar/pull/14371)
+- Bump prometheus client version from 0.5.0 to 0.15.0 [#13785](https://github.com/apache/pulsar/pull/13785)
+- [PIP-158] Split client TLS transport encryption from authentication [#15634](https://github.com/apache/pulsar/pull/15634)
+- [PIP-155] Removed Python 2 support [#15376](https://github.com/apache/pulsar/pull/15376)
+- [PIP-156] Build Pulsar Server on Java 17 [#15264](https://github.com/apache/pulsar/pull/15264)
+- [PIP-162] Enable system topic by default [#15619](https://github.com/apache/pulsar/pull/15619)
+- [PIP-174] New managed ledger entry cache implementation [#15955](https://github.com/apache/pulsar/pull/15955)
+
+### PIPs
+- [PIP 37] Support chunking with Shared subscription [#16202](https://github.com/apache/pulsar/pull/16202)
+- [PIP-74] Pulsar client memory limits [#14400](https://github.com/apache/pulsar/pull/14400)
+- [PIP-81] Split createNewMetadataLedger into multiple methods for reuse [#15425](https://github.com/apache/pulsar/pull/15425)
+- [PIP 97] Update Authentication Interfaces to Include Async Authentication Methods [#12104](https://github.com/apache/pulsar/pull/12104)
+- [PIP-100] Support pluggable topic factory [#12235](https://github.com/apache/pulsar/pull/12235)
+- [PIP-105] Store Subscription properties [#15757](https://github.com/apache/pulsar/pull/15757)
+- [PIP-117] Change Pulsar standalone defaults [#15478](https://github.com/apache/pulsar/pull/15478)
+- [PIP-132] Include message header size when check maxMessageSize for non-batch message on the client side. [#14007](https://github.com/apache/pulsar/pull/14007)
+- [PIP-136] Sync Pulsar metadata across multiple clouds [#16425](https://github.com/apache/pulsar/pull/16425)
+- [PIP-143] Support split bundle by specified boundaries [#13796](https://github.com/apache/pulsar/pull/13796)
+- [PIP-145] Improve performance of regex subscriptions [#14505](https://github.com/apache/pulsar/pull/14505)
+- [PIP-146] ManagedCursorInfo compression [#14542](https://github.com/apache/pulsar/pull/14542)
+- [PIP 149] Making the REST Admin API fully async [#14365](https://github.com/apache/pulsar/issues/14365)
+- [PIP-152] Support subscription level dispatch rate limiter setting [#15295](https://github.com/apache/pulsar/issues/15295)
+- [PIP-153] Optimize metadataPositions in MLPendingAckStore [#15137](https://github.com/apache/pulsar/pull/15137)
+- [PIP-160] Make transactions work more efficiently by aggregation operation for transaction log and pending ack store [#15370](https://github.com/apache/pulsar/issues/15370)
+- [PIP-161] Exclusive Producer: ability to fence out an existing Producer [#15488](https://github.com/apache/pulsar/pull/15488)
+- [PIP-163] Add lowWaterMark check before appending entry to TB [#15424](https://github.com/apache/pulsar/pull/15424)
+- [PIP-166] Function add MANUAL delivery semantics [#16279](https://github.com/apache/pulsar/pull/16279)
+- [PIP-179] Support the admin API to check unknown request parameters [#16135](https://github.com/apache/pulsar/issues/16135)
+- [PIP-181] Pulsar Shell [#16250](https://github.com/apache/pulsar/issues/16250)
+- [PIP-184] Topic specific consumer priorityLevel [#16715](https://github.com/apache/pulsar/issues/16715)
+- [PIP-187] Add API to analyze a subscription backlog and provide a accurate value [#16545](https://github.com/apache/pulsar/issues/16545)
+
+### Broker
+- [PIP 81] Split the individual acknowledgments into multiple entries
+  - Add range set wrapper to support record dirty ledgers [#15607](https://github.com/apache/pulsar/pull/15607)
+  - Notifications for faster topic discovery [#16062](https://github.com/apache/pulsar/pull/16062)
+  - Split createNewMetadataLedger into multiple methods for reuse [#15425](https://github.com/apache/pulsar/pull/15425)
+- [PIP 105] Store Subscription properties
+  - Store Subscription properties [#15757](https://github.com/apache/pulsar/pull/15757)
+  - Pulsar Admin: create subscription with Properties [#15503](https://github.com/apache/pulsar/pull/15503)
+  - Fix error on recycled SubscriptionPropertiesList [#15335](https://github.com/apache/pulsar/pull/15335)
+- [PIP 160] Make transactions work more efficiently by aggregation operation for transaction log and pending ack store
+  - Pending ack log store enables the batch feature [#16707](https://github.com/apache/pulsar/pull/16707)
+  - Metrics stats of Transaction buffered writer [#16758](https://github.com/apache/pulsar/pull/16758)
+  - Transaction buffered writer supports Timer [#16727](https://github.com/apache/pulsar/pull/16727)
+  - Transaction log store enables the batch feature [#16685](https://github.com/apache/pulsar/pull/16685)
+  - Protocol changes and configuration changes for transaction batch log [#16617](https://github.com/apache/pulsar/pull/16617)
+  - Txn buffered writer for transaction log batch [#16428](https://github.com/apache/pulsar/pull/16428)
+- [PIP 145] Improve performance of regex subscriptions
+  - Enable evaluating subscription pattern on broker side [#14804](https://github.com/apache/pulsar/pull/14804)
+  - Notifications for faster topic discovery [#16062](https://github.com/apache/pulsar/pull/16062)
+- [PIP-156] Build Pulsar Server on Java 17
+  - Build changes by dropping some required checks [#15496](https://github.com/apache/pulsar/pull/15496)
+  - Build Pulsar Server on Java 17 [#15264](https://github.com/apache/pulsar/pull/15264)
+- Optimize getting ledger and entry id from entry [#17108](https://github.com/apache/pulsar/pull/17108)
+- Fix calculate avg message per entry [#17046](https://github.com/apache/pulsar/pull/17046)
+- Bundle-data metadata leak because of bundlestats was not clean [#17095](https://github.com/apache/pulsar/pull/17095)
+- Duplicate ByteBuffer when Caching Backlogged Consumers [#17105](https://github.com/apache/pulsar/pull/17105)
+- Fix offload read handle NPE [#17056](https://github.com/apache/pulsar/pull/17056)
+- Move the state check forward [#17020](https://github.com/apache/pulsar/pull/17020)
+- Improve naming for delete topic error [#16965](https://github.com/apache/pulsar/pull/16965)
+- Increment topic stats outbound message counters and update rate after messages have been written to the TCP/IP connection [#17043](https://github.com/apache/pulsar/pull/17043)
+- Prevent StackOverFlowException in SHARED subscription [#16968](https://github.com/apache/pulsar/pull/16968)
+- Improve the package download process [#16365](https://github.com/apache/pulsar/pull/16365)
+- Skip mis-configured resource usage(>100%) in load balancer [#16937](https://github.com/apache/pulsar/pull/16937)
+- Not allow to terminate system topic [#17006](https://github.com/apache/pulsar/pull/17006)
+- Follow up on #16968 to restore some behavior in PersistentDispatcherMultipleConsumers [#17018](https://github.com/apache/pulsar/pull/17018)
+- Remove exception log when access status.html [#17025](https://github.com/apache/pulsar/pull/17025)
+- Remove unnecessary lock on the stats thread [#16983](https://github.com/apache/pulsar/pull/16983)
+- Fix memory leak if entry exists in cache [#16996](https://github.com/apache/pulsar/pull/16996)
+- Fix ConcurrentModificationException when ModularLoadManagerImpl start [#16953](https://github.com/apache/pulsar/pull/16953)
+- Split TLS transport encryption support from authentication [#16819](https://github.com/apache/pulsar/pull/16819)
+- Support start multiple bookies for BKCluster [#16847](https://github.com/apache/pulsar/pull/16847)
+- Fix MaxQueueSize semaphore release leak in createOpSendMsg [#16915](https://github.com/apache/pulsar/pull/16915)
+- PulsarLedgerManager to pass correct error code to BK client [#16857](https://github.com/apache/pulsar/pull/16857)
+- Improve get the basic authentication config [#16526](https://github.com/apache/pulsar/pull/16526)
+- Change delete pending ack position from foreach to firstKey [#16927](https://github.com/apache/pulsar/pull/16927)
+- Adapt basic authentication configuration with prefix [#16935](https://github.com/apache/pulsar/pull/16935)
+- Fix misleading -c option in pulsar standalone [#16838](https://github.com/apache/pulsar/pull/16838)
+- Fix rack awareness cache expiration data race [#16825](https://github.com/apache/pulsar/pull/16825)
+- Fix Repeated messages of shared dispatcher [#16812](https://github.com/apache/pulsar/pull/16812)
+- Avoid IllegalStateException while client_version is not set [#16788](https://github.com/apache/pulsar/pull/16788)
+- Optimize concurrent collection's shrink logic [#16754](https://github.com/apache/pulsar/pull/16754)
+- Support clear old bookie data for BKCluster [#16744](https://github.com/apache/pulsar/pull/16744)
+- Fix consumer does not abide by the max unacks limitation for Key_Shared subscription [#16718](https://github.com/apache/pulsar/pull/16718)
+- Avoid ConcurrentModificationException for ModularLoadManagerImpl.cleanupDeadBrokersData() [#16690](https://github.com/apache/pulsar/pull/16690)
+- Retry to delete the namespace if new topics created during the namespace deletion [#16676](https://github.com/apache/pulsar/pull/16676)
+- Fix consumer does not abide by the max unacks limitation for Shared subscription [#16670](https://github.com/apache/pulsar/pull/16670)
+- Support for get token from HTTP params [#16650](https://github.com/apache/pulsar/pull/16650)
+- Make defaultOffloader create after offloaderStats overrides [#16638](https://github.com/apache/pulsar/pull/16638)
+- BadVersionException when splitting bundles, delay 100ms and try again [#16612](https://github.com/apache/pulsar/pull/16612)
+- PulsarLedgerManager: add missed return statement [#16607](https://github.com/apache/pulsar/pull/16607)
+- The configuration loadBalancerNamespaceMaximumBundles is invalid [#16552](https://github.com/apache/pulsar/pull/16552)
+- Retry when DistributedIdGenerator has BadVersion error [#16491](https://github.com/apache/pulsar/pull/16491)
+- Fixed error when delayed messages trackers state grows to >1.5GB [#16490](https://github.com/apache/pulsar/pull/16490)
+- Fix RawReader hasMessageAvailable returns true when no messages [#16443](https://github.com/apache/pulsar/pull/16443)
+- Fix No such ledger exception [#16420](https://github.com/apache/pulsar/pull/16420)
+- Add config maxUnloadBundleNumPerShedding for UniformLoadShedder [#16409](https://github.com/apache/pulsar/pull/16409)
+- Fix etcd cluster error and add test for etcd cluster [#16309](https://github.com/apache/pulsar/pull/16309)
+- Skip reading more entries for a pending read with no more entries [#16400](https://github.com/apache/pulsar/pull/16400)
+- Recycle OpReadEntry in some corner cases [#16399](https://github.com/apache/pulsar/pull/16399)
+- Add dynamic configuration for UniformLoadShedder [#16391](https://github.com/apache/pulsar/pull/16391)
+- Fix RawReader out of order [#16390](https://github.com/apache/pulsar/pull/16390)
+- Create the cursor ledger lazily to improve the subscribe performance [#16389](https://github.com/apache/pulsar/pull/16389)
+- Release the entry in getEarliestMessagePublishTimeOfPos [#16386](https://github.com/apache/pulsar/pull/16386)
+- Update cpu ResourceUsage before updating SystemResourceUsage usage [#16366](https://github.com/apache/pulsar/pull/16366)
+- Use shared broker client scheduled executor provider [#16338](https://github.com/apache/pulsar/pull/16338)
+- Do not use IO thread for consumerFlow in Shared subscription [#16304](https://github.com/apache/pulsar/pull/16304)
+- Provide new load balance placement strategy implementation based on the least resource usage with weight [#16281](https://github.com/apache/pulsar/pull/16281)
+- Fix TopicTransactionBuffer ledger apend marker throw ManagedLedgerAlreadyClosedException [#16265](https://github.com/apache/pulsar/pull/16265)
+- Avoid go through all the consumers to get the message ack owner [#16245](https://github.com/apache/pulsar/pull/16245)
+- Reduce the consumers list sort by priority level [#16243](https://github.com/apache/pulsar/pull/16243)
+- Reduce the re-schedule message read operation for PersistentDispatcherMultipleConsumers [#16241](https://github.com/apache/pulsar/pull/16241)
+- Fix npe when invoke replaceBookie. [#16239](https://github.com/apache/pulsar/pull/16239)
+- Fix getInternalStats occasional lack of LeaderInfo again [#16238](https://github.com/apache/pulsar/pull/16238)
+- Fix NPE when drop backlog for time limit [#16235](https://github.com/apache/pulsar/pull/16235)
+- Improve error msg when client is unauthorized [#16224](https://github.com/apache/pulsar/pull/16224)
+- Fix compaction subscription acknowledge Marker msg issue [#16205](https://github.com/apache/pulsar/pull/16205)
+- Fix subscribe dispatcher limiter not be initialized [#16175](https://github.com/apache/pulsar/pull/16175)
+- Use LinkedHashSet for config items of type Set to preserve elements order [#16138](https://github.com/apache/pulsar/pull/16138)
+- Fix topic dispatch rate limiter not init on broker-level [#16084](https://github.com/apache/pulsar/pull/16084)
+- Fix NPE when get /admin/v2/namespaces/public/default/maxTopicsPerNamespace [#16076](https://github.com/apache/pulsar/pull/16076)
+- Add config to allow deliverAt time to be strictly honored [#16068](https://github.com/apache/pulsar/pull/16068)
+- Add switch for enable/disable distribute bundles evenly in LoadManager [#16059](https://github.com/apache/pulsar/pull/16059)
+- Fix thread safety issues in accessing ManagedCursorContainer.heap ArrayList [#16049](https://github.com/apache/pulsar/pull/16049)
+- Make invalid namespace and topic name logs more descriptive [#16047](https://github.com/apache/pulsar/pull/16047)
+- Terminate JVM when initialize-cluster-metadata command fails [#16039](https://github.com/apache/pulsar/pull/16039)
+- Avoid storing MessageMetadata instances returned by peekMessageMetadata [#15983](https://github.com/apache/pulsar/pull/15983)
+- Fix topic policies update not check message expiry [#15941](https://github.com/apache/pulsar/pull/15941)
+- Fix reach max tenants error if the tenant already exists [#15932](https://github.com/apache/pulsar/pull/15932)
+- Close transactionBufferClient before closing the internal Pulsar client [#15922](https://github.com/apache/pulsar/pull/15922)
+- Remove topic -> namespace cache of LedgerOffloaderStatsImpl [#15869](https://github.com/apache/pulsar/pull/15869)
+- Fix NPE when ledger id not found in OpReadEntry [#15837](https://github.com/apache/pulsar/pull/15837)
+- Fix topic-level replicator rate limiter not init [#15825](https://github.com/apache/pulsar/pull/15825)
+- Fix NPE in MessageDeduplication [#15820](https://github.com/apache/pulsar/pull/15820)
+- Configure DLog Bookie, Pulsar, and Admin clients via pass through config [#15818](https://github.com/apache/pulsar/pull/15818)
+- Fix the broker close hanged issue [#15755](https://github.com/apache/pulsar/pull/15755)
+- Disable memory limit controller in internal Pulsar clients [#15752](https://github.com/apache/pulsar/pull/15752)
+- Add timeout for unload namespace bundle [#15719](https://github.com/apache/pulsar/pull/15719)
+- Support schemaValidationEnforced on topic level [#15712](https://github.com/apache/pulsar/pull/15712)
+- Fix NPE when put value to RangeCache [#15707](https://github.com/apache/pulsar/pull/15707)
+- Fast return if ack cumulative illegal [#15695](https://github.com/apache/pulsar/pull/15695)
+- Fix creating producer failure when set backlog quota [#15663](https://github.com/apache/pulsar/pull/15663)
+- Fix logging in shutdown when broker shutdown [#15626](https://github.com/apache/pulsar/pull/15626)
+- Fix MetadataStoreException$NotFoundException while doing topic lookup [#15633](https://github.com/apache/pulsar/pull/15633)
+- Use dispatchRateLimiterLock to update dispatchRateLimiter [#15601](https://github.com/apache/pulsar/pull/15601)
+- Add .yaml suffix support for broker filter config file [#15600](https://github.com/apache/pulsar/pull/15600)
+- Added newline to end of standalone.conf [#15591](https://github.com/apache/pulsar/pull/15591)
+- Add decode InputStream for Schema [#16659](https://github.com/apache/pulsar/pull/16659)
+- Create "standalone" cluster when starting standalone server [#15583](https://github.com/apache/pulsar/pull/15583)
+- Close publishLimiter when disable it [#15520](https://github.com/apache/pulsar/pull/15520)
+- Enable SO_REUSEADDR on listen sockets for broker,proxy [#15517](https://github.com/apache/pulsar/pull/15517)
+- Fix to avoid TopicStatsImpl NPE even if producerName is null [#15502](https://github.com/apache/pulsar/pull/15502)
+- Close connection if a ping or pong message cannot be sent [#15382](https://github.com/apache/pulsar/pull/15382)
+- Introduce BitRateUnit for calculate bitrate [#15435](https://github.com/apache/pulsar/pull/15435)
+- Add verification for configured default backlog quota and retention [#15441](https://github.com/apache/pulsar/pull/15441)
+- Change unnecessary atomic to basic type [#15369](https://github.com/apache/pulsar/pull/15369)
+- Support shrink for ConcurrentSortedLongPairSet [#15354](https://github.com/apache/pulsar/pull/15354)
+- Use shrink map for message redelivery [#15342](https://github.com/apache/pulsar/pull/15342)
+- Fix precision error in UsageUnit [#15322](https://github.com/apache/pulsar/pull/15322)
+- Optimized namespace-level dispatcherRateLimiter update [#15315](https://github.com/apache/pulsar/pull/15315)
+- Fix broker LoadBalance uneffective [#15314](https://github.com/apache/pulsar/pull/15314)
+- Fix wrong unit of NIC speed on linux [#15304](https://github.com/apache/pulsar/pull/15304)
+- Fix totalEntries calculation problem in AbstractBaseDispatcher#filterEntriesForConsumere [#15298](https://github.com/apache/pulsar/pull/15298)
+- Fix resource group does not report usage [#15292](https://github.com/apache/pulsar/pull/15292)
+- Tidy up the system topic [#15252](https://github.com/apache/pulsar/pull/15252)
+- Fix race condition between timeout and completion in OpAddEntry [#15233](https://github.com/apache/pulsar/pull/15233)
+- Improve skipping of DNS resolution when creating AuthenticationDataHttp instance [#15228](https://github.com/apache/pulsar/pull/15228)
+- Skip unnecessary DNS resolution when creating AuthenticationDataHttp instance [#15221](https://github.com/apache/pulsar/pull/15221)
+- Fix MessageDeduplication#inactiveProducers may not be persistence correctly [#15206](https://github.com/apache/pulsar/pull/15206)
+- Cancel fencedTopicMonitoringTask when topic closed normally [#15202](https://github.com/apache/pulsar/pull/15202)
+- Fix npe when doCacheEviction [#15184](https://github.com/apache/pulsar/pull/15184)
+- Make health check fail if dead locked threads are detected [#15155](https://github.com/apache/pulsar/pull/15155)
+- Fix parameter saslJaasBrokerSectionName in broker.conf [#15110](https://github.com/apache/pulsar/pull/15110)
+- Fix potential to add duplicated consumer [#15051](https://github.com/apache/pulsar/pull/15051)
+- Fix rewind failed when redeliverUnacknowledgedMessages [#15046](https://github.com/apache/pulsar/pull/15046)
+- Fix race condition in updating lastMarkDeleteEntry field [#15031](https://github.com/apache/pulsar/pull/15031)
+- Avoid heartbeat topic to offload [#15008](https://github.com/apache/pulsar/pull/15008)
+- Evicting cache data by the slowest markDeletedPosition [#14985](https://github.com/apache/pulsar/pull/14985)
+- Return if reset in progress [#14978](https://github.com/apache/pulsar/pull/14978)
+- Dynamic update broker-level subscribe-rate limter [#14890](https://github.com/apache/pulsar/pull/14890)
+- Fix wrong state for non-durable cursor [#14869](https://github.com/apache/pulsar/pull/14869)
+- Support advertised listeners for HTTP and HTTPS services [#14839](https://github.com/apache/pulsar/pull/14839)
+- Support dynamic update between non-zero values of topicPublisherThrottlingTickTimeMillis [#14782](https://github.com/apache/pulsar/pull/14782)
+- Support dynamic update between non-zero values of brokerPublisherThrottlingTickTimeMillis [#14759](https://github.com/apache/pulsar/pull/14759)
+- Fix incorrect entryId in warn log when reading entry from tiered storage [#14685](https://github.com/apache/pulsar/pull/14685)
+- Optimize PositionImpl toString, compareTo and hashCode methods [#14678](https://github.com/apache/pulsar/pull/14678)
+- Improve readability of ManagedCursorImpl source code [#14617](https://github.com/apache/pulsar/pull/14617)
+- Intercept ACK command by BrokerInterceptor [#14616](https://github.com/apache/pulsar/pull/14616)
+- Add filteredMsgCount for pulsar-admin broker-stats topics [#14531](https://github.com/apache/pulsar/pull/14531)
+- Fix NPE when subscription is already removed [#14363](https://github.com/apache/pulsar/pull/14363)
+- Fix backpressure handling in Jetty web server configuration [#14353](https://github.com/apache/pulsar/pull/14353)
+- Optimize find nics process [#14340](https://github.com/apache/pulsar/pull/14340)
+- Support pass http auth status [#14044](https://github.com/apache/pulsar/pull/14044)
+- Support caching to drain backlog consumers [#12258](https://github.com/apache/pulsar/pull/12258)
+- Strict bookie affinity group strategy [#12025](https://github.com/apache/pulsar/pull/12025)
+
+### Clients

Review Comment:
   Is this part (line 217-285) already split into the following independent release notes? If so, should this part be removed here?
   
   <img width="206" alt="image" src="https://user-images.githubusercontent.com/50226895/185337812-c1721ed6-dfd5-4915-971a-3aa886e31ac0.png">
   



##########
site2/website-next/release-notes/versioned/pulsar-2.11.0.md:
##########
@@ -0,0 +1,484 @@
+---
+id: pulsar-2.11.0
+title: Apache Pulsar 2.11.0 
+sidebar_label: Apache Pulsar 2.11.0 
+---
+
+#### 2022-08-16
+
+### Important notice
+- Rename Pulsar txn metrics to specify OpenMetrics [#16581](https://github.com/apache/pulsar/pull/16581)
+- Rename Pulsar schema metrics to specify OpenMetrics [#16610](https://github.com/apache/pulsar/pull/16610)
+- Rename Pulsar lb metrics to specify OpenMetrics [#16611](https://github.com/apache/pulsar/pull/16611)
+- Remove jul-to-slf4j #16320 [#16320](https://github.com/apache/pulsar/pull/16320)
+- Fix get non-persistent topics issue in Namespaces [#16170](https://github.com/apache/pulsar/pull/16170)
+- Fix producer/consume permission can’t get schema [#15956](https://github.com/apache/pulsar/pull/15956)
+- Add verification for configured default backlog quota and retention [#15441](https://github.com/apache/pulsar/pull/15441)
+- Fix broker LoadBalance uneffective [#15314](https://github.com/apache/pulsar/pull/15314)
+- Ensure the deletion consistency of topic and schema [#14608](https://github.com/apache/pulsar/pull/14608)
+- Transaction cumulative ack redeliver change [#14371](https://github.com/apache/pulsar/pull/14371)
+- Bump prometheus client version from 0.5.0 to 0.15.0 [#13785](https://github.com/apache/pulsar/pull/13785)
+- [PIP-158] Split client TLS transport encryption from authentication [#15634](https://github.com/apache/pulsar/pull/15634)
+- [PIP-155] Removed Python 2 support [#15376](https://github.com/apache/pulsar/pull/15376)
+- [PIP-156] Build Pulsar Server on Java 17 [#15264](https://github.com/apache/pulsar/pull/15264)
+- [PIP-162] Enable system topic by default [#15619](https://github.com/apache/pulsar/pull/15619)
+- [PIP-174] New managed ledger entry cache implementation [#15955](https://github.com/apache/pulsar/pull/15955)
+
+### PIPs
+- [PIP 37] Support chunking with Shared subscription [#16202](https://github.com/apache/pulsar/pull/16202)
+- [PIP-74] Pulsar client memory limits [#14400](https://github.com/apache/pulsar/pull/14400)
+- [PIP-81] Split createNewMetadataLedger into multiple methods for reuse [#15425](https://github.com/apache/pulsar/pull/15425)
+- [PIP 97] Update Authentication Interfaces to Include Async Authentication Methods [#12104](https://github.com/apache/pulsar/pull/12104)
+- [PIP-100] Support pluggable topic factory [#12235](https://github.com/apache/pulsar/pull/12235)
+- [PIP-105] Store Subscription properties [#15757](https://github.com/apache/pulsar/pull/15757)
+- [PIP-117] Change Pulsar standalone defaults [#15478](https://github.com/apache/pulsar/pull/15478)
+- [PIP-132] Include message header size when check maxMessageSize for non-batch message on the client side. [#14007](https://github.com/apache/pulsar/pull/14007)
+- [PIP-136] Sync Pulsar metadata across multiple clouds [#16425](https://github.com/apache/pulsar/pull/16425)
+- [PIP-143] Support split bundle by specified boundaries [#13796](https://github.com/apache/pulsar/pull/13796)
+- [PIP-145] Improve performance of regex subscriptions [#14505](https://github.com/apache/pulsar/pull/14505)
+- [PIP-146] ManagedCursorInfo compression [#14542](https://github.com/apache/pulsar/pull/14542)
+- [PIP 149] Making the REST Admin API fully async [#14365](https://github.com/apache/pulsar/issues/14365)
+- [PIP-152] Support subscription level dispatch rate limiter setting [#15295](https://github.com/apache/pulsar/issues/15295)
+- [PIP-153] Optimize metadataPositions in MLPendingAckStore [#15137](https://github.com/apache/pulsar/pull/15137)
+- [PIP-160] Make transactions work more efficiently by aggregation operation for transaction log and pending ack store [#15370](https://github.com/apache/pulsar/issues/15370)
+- [PIP-161] Exclusive Producer: ability to fence out an existing Producer [#15488](https://github.com/apache/pulsar/pull/15488)
+- [PIP-163] Add lowWaterMark check before appending entry to TB [#15424](https://github.com/apache/pulsar/pull/15424)
+- [PIP-166] Function add MANUAL delivery semantics [#16279](https://github.com/apache/pulsar/pull/16279)
+- [PIP-179] Support the admin API to check unknown request parameters [#16135](https://github.com/apache/pulsar/issues/16135)
+- [PIP-181] Pulsar Shell [#16250](https://github.com/apache/pulsar/issues/16250)
+- [PIP-184] Topic specific consumer priorityLevel [#16715](https://github.com/apache/pulsar/issues/16715)
+- [PIP-187] Add API to analyze a subscription backlog and provide a accurate value [#16545](https://github.com/apache/pulsar/issues/16545)
+
+### Broker
+- [PIP 81] Split the individual acknowledgments into multiple entries
+  - Add range set wrapper to support record dirty ledgers [#15607](https://github.com/apache/pulsar/pull/15607)
+  - Notifications for faster topic discovery [#16062](https://github.com/apache/pulsar/pull/16062)
+  - Split createNewMetadataLedger into multiple methods for reuse [#15425](https://github.com/apache/pulsar/pull/15425)
+- [PIP 105] Store Subscription properties
+  - Store Subscription properties [#15757](https://github.com/apache/pulsar/pull/15757)
+  - Pulsar Admin: create subscription with Properties [#15503](https://github.com/apache/pulsar/pull/15503)
+  - Fix error on recycled SubscriptionPropertiesList [#15335](https://github.com/apache/pulsar/pull/15335)
+- [PIP 160] Make transactions work more efficiently by aggregation operation for transaction log and pending ack store
+  - Pending ack log store enables the batch feature [#16707](https://github.com/apache/pulsar/pull/16707)
+  - Metrics stats of Transaction buffered writer [#16758](https://github.com/apache/pulsar/pull/16758)
+  - Transaction buffered writer supports Timer [#16727](https://github.com/apache/pulsar/pull/16727)
+  - Transaction log store enables the batch feature [#16685](https://github.com/apache/pulsar/pull/16685)
+  - Protocol changes and configuration changes for transaction batch log [#16617](https://github.com/apache/pulsar/pull/16617)
+  - Txn buffered writer for transaction log batch [#16428](https://github.com/apache/pulsar/pull/16428)
+- [PIP 145] Improve performance of regex subscriptions
+  - Enable evaluating subscription pattern on broker side [#14804](https://github.com/apache/pulsar/pull/14804)
+  - Notifications for faster topic discovery [#16062](https://github.com/apache/pulsar/pull/16062)
+- [PIP-156] Build Pulsar Server on Java 17
+  - Build changes by dropping some required checks [#15496](https://github.com/apache/pulsar/pull/15496)
+  - Build Pulsar Server on Java 17 [#15264](https://github.com/apache/pulsar/pull/15264)
+- Optimize getting ledger and entry id from entry [#17108](https://github.com/apache/pulsar/pull/17108)
+- Fix calculate avg message per entry [#17046](https://github.com/apache/pulsar/pull/17046)
+- Bundle-data metadata leak because of bundlestats was not clean [#17095](https://github.com/apache/pulsar/pull/17095)
+- Duplicate ByteBuffer when Caching Backlogged Consumers [#17105](https://github.com/apache/pulsar/pull/17105)
+- Fix offload read handle NPE [#17056](https://github.com/apache/pulsar/pull/17056)
+- Move the state check forward [#17020](https://github.com/apache/pulsar/pull/17020)
+- Improve naming for delete topic error [#16965](https://github.com/apache/pulsar/pull/16965)
+- Increment topic stats outbound message counters and update rate after messages have been written to the TCP/IP connection [#17043](https://github.com/apache/pulsar/pull/17043)
+- Prevent StackOverFlowException in SHARED subscription [#16968](https://github.com/apache/pulsar/pull/16968)
+- Improve the package download process [#16365](https://github.com/apache/pulsar/pull/16365)
+- Skip mis-configured resource usage(>100%) in load balancer [#16937](https://github.com/apache/pulsar/pull/16937)
+- Not allow to terminate system topic [#17006](https://github.com/apache/pulsar/pull/17006)
+- Follow up on #16968 to restore some behavior in PersistentDispatcherMultipleConsumers [#17018](https://github.com/apache/pulsar/pull/17018)
+- Remove exception log when access status.html [#17025](https://github.com/apache/pulsar/pull/17025)
+- Remove unnecessary lock on the stats thread [#16983](https://github.com/apache/pulsar/pull/16983)
+- Fix memory leak if entry exists in cache [#16996](https://github.com/apache/pulsar/pull/16996)
+- Fix ConcurrentModificationException when ModularLoadManagerImpl start [#16953](https://github.com/apache/pulsar/pull/16953)
+- Split TLS transport encryption support from authentication [#16819](https://github.com/apache/pulsar/pull/16819)
+- Support start multiple bookies for BKCluster [#16847](https://github.com/apache/pulsar/pull/16847)
+- Fix MaxQueueSize semaphore release leak in createOpSendMsg [#16915](https://github.com/apache/pulsar/pull/16915)
+- PulsarLedgerManager to pass correct error code to BK client [#16857](https://github.com/apache/pulsar/pull/16857)
+- Improve get the basic authentication config [#16526](https://github.com/apache/pulsar/pull/16526)
+- Change delete pending ack position from foreach to firstKey [#16927](https://github.com/apache/pulsar/pull/16927)
+- Adapt basic authentication configuration with prefix [#16935](https://github.com/apache/pulsar/pull/16935)
+- Fix misleading -c option in pulsar standalone [#16838](https://github.com/apache/pulsar/pull/16838)
+- Fix rack awareness cache expiration data race [#16825](https://github.com/apache/pulsar/pull/16825)
+- Fix Repeated messages of shared dispatcher [#16812](https://github.com/apache/pulsar/pull/16812)
+- Avoid IllegalStateException while client_version is not set [#16788](https://github.com/apache/pulsar/pull/16788)
+- Optimize concurrent collection's shrink logic [#16754](https://github.com/apache/pulsar/pull/16754)
+- Support clear old bookie data for BKCluster [#16744](https://github.com/apache/pulsar/pull/16744)
+- Fix consumer does not abide by the max unacks limitation for Key_Shared subscription [#16718](https://github.com/apache/pulsar/pull/16718)
+- Avoid ConcurrentModificationException for ModularLoadManagerImpl.cleanupDeadBrokersData() [#16690](https://github.com/apache/pulsar/pull/16690)
+- Retry to delete the namespace if new topics created during the namespace deletion [#16676](https://github.com/apache/pulsar/pull/16676)
+- Fix consumer does not abide by the max unacks limitation for Shared subscription [#16670](https://github.com/apache/pulsar/pull/16670)
+- Support for get token from HTTP params [#16650](https://github.com/apache/pulsar/pull/16650)
+- Make defaultOffloader create after offloaderStats overrides [#16638](https://github.com/apache/pulsar/pull/16638)
+- BadVersionException when splitting bundles, delay 100ms and try again [#16612](https://github.com/apache/pulsar/pull/16612)
+- PulsarLedgerManager: add missed return statement [#16607](https://github.com/apache/pulsar/pull/16607)
+- The configuration loadBalancerNamespaceMaximumBundles is invalid [#16552](https://github.com/apache/pulsar/pull/16552)
+- Retry when DistributedIdGenerator has BadVersion error [#16491](https://github.com/apache/pulsar/pull/16491)
+- Fixed error when delayed messages trackers state grows to >1.5GB [#16490](https://github.com/apache/pulsar/pull/16490)
+- Fix RawReader hasMessageAvailable returns true when no messages [#16443](https://github.com/apache/pulsar/pull/16443)
+- Fix No such ledger exception [#16420](https://github.com/apache/pulsar/pull/16420)
+- Add config maxUnloadBundleNumPerShedding for UniformLoadShedder [#16409](https://github.com/apache/pulsar/pull/16409)
+- Fix etcd cluster error and add test for etcd cluster [#16309](https://github.com/apache/pulsar/pull/16309)
+- Skip reading more entries for a pending read with no more entries [#16400](https://github.com/apache/pulsar/pull/16400)
+- Recycle OpReadEntry in some corner cases [#16399](https://github.com/apache/pulsar/pull/16399)
+- Add dynamic configuration for UniformLoadShedder [#16391](https://github.com/apache/pulsar/pull/16391)
+- Fix RawReader out of order [#16390](https://github.com/apache/pulsar/pull/16390)
+- Create the cursor ledger lazily to improve the subscribe performance [#16389](https://github.com/apache/pulsar/pull/16389)
+- Release the entry in getEarliestMessagePublishTimeOfPos [#16386](https://github.com/apache/pulsar/pull/16386)
+- Update cpu ResourceUsage before updating SystemResourceUsage usage [#16366](https://github.com/apache/pulsar/pull/16366)
+- Use shared broker client scheduled executor provider [#16338](https://github.com/apache/pulsar/pull/16338)
+- Do not use IO thread for consumerFlow in Shared subscription [#16304](https://github.com/apache/pulsar/pull/16304)
+- Provide new load balance placement strategy implementation based on the least resource usage with weight [#16281](https://github.com/apache/pulsar/pull/16281)
+- Fix TopicTransactionBuffer ledger apend marker throw ManagedLedgerAlreadyClosedException [#16265](https://github.com/apache/pulsar/pull/16265)
+- Avoid go through all the consumers to get the message ack owner [#16245](https://github.com/apache/pulsar/pull/16245)
+- Reduce the consumers list sort by priority level [#16243](https://github.com/apache/pulsar/pull/16243)
+- Reduce the re-schedule message read operation for PersistentDispatcherMultipleConsumers [#16241](https://github.com/apache/pulsar/pull/16241)
+- Fix npe when invoke replaceBookie. [#16239](https://github.com/apache/pulsar/pull/16239)
+- Fix getInternalStats occasional lack of LeaderInfo again [#16238](https://github.com/apache/pulsar/pull/16238)
+- Fix NPE when drop backlog for time limit [#16235](https://github.com/apache/pulsar/pull/16235)
+- Improve error msg when client is unauthorized [#16224](https://github.com/apache/pulsar/pull/16224)
+- Fix compaction subscription acknowledge Marker msg issue [#16205](https://github.com/apache/pulsar/pull/16205)
+- Fix subscribe dispatcher limiter not be initialized [#16175](https://github.com/apache/pulsar/pull/16175)
+- Use LinkedHashSet for config items of type Set to preserve elements order [#16138](https://github.com/apache/pulsar/pull/16138)
+- Fix topic dispatch rate limiter not init on broker-level [#16084](https://github.com/apache/pulsar/pull/16084)
+- Fix NPE when get /admin/v2/namespaces/public/default/maxTopicsPerNamespace [#16076](https://github.com/apache/pulsar/pull/16076)
+- Add config to allow deliverAt time to be strictly honored [#16068](https://github.com/apache/pulsar/pull/16068)
+- Add switch for enable/disable distribute bundles evenly in LoadManager [#16059](https://github.com/apache/pulsar/pull/16059)
+- Fix thread safety issues in accessing ManagedCursorContainer.heap ArrayList [#16049](https://github.com/apache/pulsar/pull/16049)
+- Make invalid namespace and topic name logs more descriptive [#16047](https://github.com/apache/pulsar/pull/16047)
+- Terminate JVM when initialize-cluster-metadata command fails [#16039](https://github.com/apache/pulsar/pull/16039)
+- Avoid storing MessageMetadata instances returned by peekMessageMetadata [#15983](https://github.com/apache/pulsar/pull/15983)
+- Fix topic policies update not check message expiry [#15941](https://github.com/apache/pulsar/pull/15941)
+- Fix reach max tenants error if the tenant already exists [#15932](https://github.com/apache/pulsar/pull/15932)
+- Close transactionBufferClient before closing the internal Pulsar client [#15922](https://github.com/apache/pulsar/pull/15922)
+- Remove topic -> namespace cache of LedgerOffloaderStatsImpl [#15869](https://github.com/apache/pulsar/pull/15869)
+- Fix NPE when ledger id not found in OpReadEntry [#15837](https://github.com/apache/pulsar/pull/15837)
+- Fix topic-level replicator rate limiter not init [#15825](https://github.com/apache/pulsar/pull/15825)
+- Fix NPE in MessageDeduplication [#15820](https://github.com/apache/pulsar/pull/15820)
+- Configure DLog Bookie, Pulsar, and Admin clients via pass through config [#15818](https://github.com/apache/pulsar/pull/15818)
+- Fix the broker close hanged issue [#15755](https://github.com/apache/pulsar/pull/15755)
+- Disable memory limit controller in internal Pulsar clients [#15752](https://github.com/apache/pulsar/pull/15752)
+- Add timeout for unload namespace bundle [#15719](https://github.com/apache/pulsar/pull/15719)
+- Support schemaValidationEnforced on topic level [#15712](https://github.com/apache/pulsar/pull/15712)
+- Fix NPE when put value to RangeCache [#15707](https://github.com/apache/pulsar/pull/15707)
+- Fast return if ack cumulative illegal [#15695](https://github.com/apache/pulsar/pull/15695)
+- Fix creating producer failure when set backlog quota [#15663](https://github.com/apache/pulsar/pull/15663)
+- Fix logging in shutdown when broker shutdown [#15626](https://github.com/apache/pulsar/pull/15626)
+- Fix MetadataStoreException$NotFoundException while doing topic lookup [#15633](https://github.com/apache/pulsar/pull/15633)
+- Use dispatchRateLimiterLock to update dispatchRateLimiter [#15601](https://github.com/apache/pulsar/pull/15601)
+- Add .yaml suffix support for broker filter config file [#15600](https://github.com/apache/pulsar/pull/15600)
+- Added newline to end of standalone.conf [#15591](https://github.com/apache/pulsar/pull/15591)
+- Add decode InputStream for Schema [#16659](https://github.com/apache/pulsar/pull/16659)
+- Create "standalone" cluster when starting standalone server [#15583](https://github.com/apache/pulsar/pull/15583)
+- Close publishLimiter when disable it [#15520](https://github.com/apache/pulsar/pull/15520)
+- Enable SO_REUSEADDR on listen sockets for broker,proxy [#15517](https://github.com/apache/pulsar/pull/15517)
+- Fix to avoid TopicStatsImpl NPE even if producerName is null [#15502](https://github.com/apache/pulsar/pull/15502)
+- Close connection if a ping or pong message cannot be sent [#15382](https://github.com/apache/pulsar/pull/15382)
+- Introduce BitRateUnit for calculate bitrate [#15435](https://github.com/apache/pulsar/pull/15435)
+- Add verification for configured default backlog quota and retention [#15441](https://github.com/apache/pulsar/pull/15441)
+- Change unnecessary atomic to basic type [#15369](https://github.com/apache/pulsar/pull/15369)
+- Support shrink for ConcurrentSortedLongPairSet [#15354](https://github.com/apache/pulsar/pull/15354)
+- Use shrink map for message redelivery [#15342](https://github.com/apache/pulsar/pull/15342)
+- Fix precision error in UsageUnit [#15322](https://github.com/apache/pulsar/pull/15322)
+- Optimized namespace-level dispatcherRateLimiter update [#15315](https://github.com/apache/pulsar/pull/15315)
+- Fix broker LoadBalance uneffective [#15314](https://github.com/apache/pulsar/pull/15314)
+- Fix wrong unit of NIC speed on linux [#15304](https://github.com/apache/pulsar/pull/15304)
+- Fix totalEntries calculation problem in AbstractBaseDispatcher#filterEntriesForConsumere [#15298](https://github.com/apache/pulsar/pull/15298)
+- Fix resource group does not report usage [#15292](https://github.com/apache/pulsar/pull/15292)
+- Tidy up the system topic [#15252](https://github.com/apache/pulsar/pull/15252)
+- Fix race condition between timeout and completion in OpAddEntry [#15233](https://github.com/apache/pulsar/pull/15233)
+- Improve skipping of DNS resolution when creating AuthenticationDataHttp instance [#15228](https://github.com/apache/pulsar/pull/15228)
+- Skip unnecessary DNS resolution when creating AuthenticationDataHttp instance [#15221](https://github.com/apache/pulsar/pull/15221)
+- Fix MessageDeduplication#inactiveProducers may not be persistence correctly [#15206](https://github.com/apache/pulsar/pull/15206)
+- Cancel fencedTopicMonitoringTask when topic closed normally [#15202](https://github.com/apache/pulsar/pull/15202)
+- Fix npe when doCacheEviction [#15184](https://github.com/apache/pulsar/pull/15184)
+- Make health check fail if dead locked threads are detected [#15155](https://github.com/apache/pulsar/pull/15155)
+- Fix parameter saslJaasBrokerSectionName in broker.conf [#15110](https://github.com/apache/pulsar/pull/15110)
+- Fix potential to add duplicated consumer [#15051](https://github.com/apache/pulsar/pull/15051)
+- Fix rewind failed when redeliverUnacknowledgedMessages [#15046](https://github.com/apache/pulsar/pull/15046)
+- Fix race condition in updating lastMarkDeleteEntry field [#15031](https://github.com/apache/pulsar/pull/15031)
+- Avoid heartbeat topic to offload [#15008](https://github.com/apache/pulsar/pull/15008)
+- Evicting cache data by the slowest markDeletedPosition [#14985](https://github.com/apache/pulsar/pull/14985)
+- Return if reset in progress [#14978](https://github.com/apache/pulsar/pull/14978)
+- Dynamic update broker-level subscribe-rate limter [#14890](https://github.com/apache/pulsar/pull/14890)
+- Fix wrong state for non-durable cursor [#14869](https://github.com/apache/pulsar/pull/14869)
+- Support advertised listeners for HTTP and HTTPS services [#14839](https://github.com/apache/pulsar/pull/14839)
+- Support dynamic update between non-zero values of topicPublisherThrottlingTickTimeMillis [#14782](https://github.com/apache/pulsar/pull/14782)
+- Support dynamic update between non-zero values of brokerPublisherThrottlingTickTimeMillis [#14759](https://github.com/apache/pulsar/pull/14759)
+- Fix incorrect entryId in warn log when reading entry from tiered storage [#14685](https://github.com/apache/pulsar/pull/14685)
+- Optimize PositionImpl toString, compareTo and hashCode methods [#14678](https://github.com/apache/pulsar/pull/14678)
+- Improve readability of ManagedCursorImpl source code [#14617](https://github.com/apache/pulsar/pull/14617)
+- Intercept ACK command by BrokerInterceptor [#14616](https://github.com/apache/pulsar/pull/14616)
+- Add filteredMsgCount for pulsar-admin broker-stats topics [#14531](https://github.com/apache/pulsar/pull/14531)
+- Fix NPE when subscription is already removed [#14363](https://github.com/apache/pulsar/pull/14363)
+- Fix backpressure handling in Jetty web server configuration [#14353](https://github.com/apache/pulsar/pull/14353)
+- Optimize find nics process [#14340](https://github.com/apache/pulsar/pull/14340)
+- Support pass http auth status [#14044](https://github.com/apache/pulsar/pull/14044)
+- Support caching to drain backlog consumers [#12258](https://github.com/apache/pulsar/pull/12258)
+- Strict bookie affinity group strategy [#12025](https://github.com/apache/pulsar/pull/12025)
+
+### Clients
+- [PIP 74] Pulsar client memory limits
+  - Support auto scaled consumer receiver queue [#14494](https://github.com/apache/pulsar/pull/14494)
+  - Support dynamic limit of consumer receiver queue [#14400](https://github.com/apache/pulsar/pull/14400)
+  - Support consumer client memory limit [#15216](https://github.com/apache/pulsar/pull/15216)
+- [Java] LastBatchSendNanoTime initialization [#17058](https://github.com/apache/pulsar/pull/17058)
+- [Java] Release semaphore before discarding messages in batchMessageContainer [#17019](https://github.com/apache/pulsar/pull/17019)
+- [Java] Reduce code duplication in admin client [#16377](https://github.com/apache/pulsar/pull/16377)
+- [Java] Remove redundant check for chunked message TotalChunkMsgSize in ConsumerImpl [#16797](https://github.com/apache/pulsar/pull/16797)
+- [Java] Fix client memory limit currentUsage leak and semaphore release duplicated in ProducerImpl [#16837](https://github.com/apache/pulsar/pull/16837)
+- [Java] Forget to update memory usage when invalid message [#16835](https://github.com/apache/pulsar/pull/16835)
+- [Java] Fix subscription topic name error [#16719](https://github.com/apache/pulsar/pull/16719)
+- [Java] Send CloseConsumer on client timeout [#16616](https://github.com/apache/pulsar/pull/16616)
+- [Java] Add message key if exists to deadLetter messages [#16615](https://github.com/apache/pulsar/pull/16615)
+- [Java] Make DeadLetterPolicy deserializable [#16513](https://github.com/apache/pulsar/pull/16513)
+- [Java] Improve performance of multi-topic consumer with more than one IO thread [#16336](https://github.com/apache/pulsar/pull/16336)
+- [Java] Add initialization for the OpSendMsg [#16256](https://github.com/apache/pulsar/pull/16256)
+- [Java] Replace ScheduledExecutor to improve performance of message consumption [#16236](https://github.com/apache/pulsar/pull/16236)
+- [Java] Fix large message sometimes cannot be split into chunks [#16196](https://github.com/apache/pulsar/pull/16196)
+- [Java] Only trigger the batch receive timeout when having pending batch receives requests [#16160](https://github.com/apache/pulsar/pull/16160)
+- [Java] Fix the startMessageId can't be respected as the ChunkMessageID [#16154](https://github.com/apache/pulsar/pull/16154)
+- [Java] Fix auto cluster failover can't resolve host bug [#16152](https://github.com/apache/pulsar/pull/16152)
+- [Java] Switch to rely on Netty for Hostname Verification [#15824](https://github.com/apache/pulsar/pull/15824)
+- [Java] Prevent the trigger running concurrently in the memory limit controller [#15737](https://github.com/apache/pulsar/pull/15737)
+- [Java] Fix messages sent by producers without schema cannot be decoded [#15622](https://github.com/apache/pulsar/pull/15622)
+- [Java] Remove sensitive msg from consumer/producer stats log [#15483](https://github.com/apache/pulsar/pull/15483)
+- [Java] Add pending messages information while print the producer stats [#15440](https://github.com/apache/pulsar/pull/15440)
+- [Java] Fix flaky BatchMessageTest by initializing lastBatchSendNanoTime [#15406](https://github.com/apache/pulsar/pull/15406)
+- [Java] Check consumer schema null in advance [#15327](https://github.com/apache/pulsar/pull/15327)
+- [Java] Fix inconsistent parameter of TopicPolicies.getSubscriptionDispatchRate [#15293](https://github.com/apache/pulsar/pull/15293)
+- [Java] Fix typo in ConsumerBuilder [#15194](https://github.com/apache/pulsar/pull/15194)
+- [Java] Fix performance regression with message listener [#15162](https://github.com/apache/pulsar/pull/15162)
+- [Java] ConsumerBuilderImpl can not set null to deadLetterPolicy [#14980](https://github.com/apache/pulsar/pull/14980)
+- [Java] Fix message publishing stuck when enabling batch [#14870](https://github.com/apache/pulsar/pull/14870)
+- [Java] Returns immutable data set when use TableView [#14833](https://github.com/apache/pulsar/pull/14833)
+- [Java] Avoid timer task run before previous subscribe complete [#14818](https://github.com/apache/pulsar/pull/14818)
+- [Java] Support Reader Interceptor [#14729](https://github.com/apache/pulsar/pull/14729)
+- [Java] Optimize pause when creating sub consumers in multi-topic consumer [#14566](https://github.com/apache/pulsar/pull/14566)
+- [C++] Fix rpm and deb packaging [#17064](https://github.com/apache/pulsar/pull/17064)
+- [C++] Add producerId to the log of closed producer [#17079](https://github.com/apache/pulsar/pull/17079)
+- [C++] Add basic authentication [#15822](https://github.com/apache/pulsar/pull/15822)
+- [C++] Add getLastMessageIdAsync in Consumer [#16182](https://github.com/apache/pulsar/pull/16182)
+- [C++] Rename function name: pulsar_producer_configuration_set_crypto_failure_action [#16031](https://github.com/apache/pulsar/pull/16031)
+- [C++] Generate correct well-known OpenID configuration URL [#15928](https://github.com/apache/pulsar/pull/15928)
+- [C++] Unblock all threads when Pulsar client is closed [#15726](https://github.com/apache/pulsar/pull/15726)
+- [C++] Avoid race condition causing double callback on close [#15508](https://github.com/apache/pulsar/pull/15508)
+- [C++] Wait until event loop terminates when closing the Client [#15316](https://github.com/apache/pulsar/pull/15316)
+- [C++] Remove the flaky and meaningless tests [#15271](https://github.com/apache/pulsar/pull/15271)
+- [C++] Fix UnknownError might be returned for a partitioned producer [#15161](https://github.com/apache/pulsar/pull/15161)
+- [C++] Fix single message metadata not set correctly [#15072](https://github.com/apache/pulsar/pull/15072)
+- [C++] Add subscription properties to consumer for cpp [#15020](https://github.com/apache/pulsar/pull/15020)
+- [C++] Fix connection is not closed when broker closes the connection to proxy[#14070](https://github.com/apache/pulsar/pull/14070)
+- [C++] Fix send callback might not be invoked in key based batching [#14898](https://github.com/apache/pulsar/pull/14898)
+- [C++] Fix C++ client compile error because of keyword optional is redundant in PaddingDemo.proto [#14862](https://github.com/apache/pulsar/pull/14862)
+- [C++] Fix segmentation fault when creating socket failed [#14834](https://github.com/apache/pulsar/pull/14834)
+- [C++] Fix the race condition of connect timeout task [#14823](https://github.com/apache/pulsar/pull/14823)
+- [C++] Fix producer is never destructed until client is closed [#14797](https://github.com/apache/pulsar/pull/14797)
+- [C++] Close messages_ when PartitionedConsumer is closed [#16887](https://github.com/apache/pulsar/pull/16887)
+- [Python] Add getLastMessageIdAsync C binding [#16255](https://github.com/apache/pulsar/pull/16255)
+- [Python] Fixed reserved keys is not removed when JsonSchema being encoded [#15947](https://github.com/apache/pulsar/pull/15947)
+- [Python] Use MacOS 10.15 as the target OS version for Python wheel files [#15788](https://github.com/apache/pulsar/pull/15788)
+- [Python] Removed dependencies only need by Python2 [#15460](https://github.com/apache/pulsar/pull/15460)
+- [Python] Removed scripts to create wheel files in vagrant VMs [#15459](https://github.com/apache/pulsar/pull/15459)
+- [Python] Adjusted script to build wheel for Python 3.7 on Mac [#15407](https://github.com/apache/pulsar/pull/15407)
+- [Python] Change python cp35-cp35m lib build version to manylinux1 [#15180](https://github.com/apache/pulsar/pull/15180)
+- [Python] Generate universal2 wheel files for MacOS [#15054](https://github.com/apache/pulsar/pull/15054)
+- [Python] Added script to generate Wheel files for MacOS [#15024](https://github.com/apache/pulsar/pull/15024)
+- [Python] Added build for wheels on Alpine linux [#15016](https://github.com/apache/pulsar/pull/15016)
+- [Python] Added build for Arm64 on Linux and Python 3.10 [#15004](https://github.com/apache/pulsar/pull/15004)
+
+### Pulsar IO and Pulsar Functions
+- [Functions] Add the ability to customize logging level for Go & Python functions [#16939](https://github.com/apache/pulsar/pull/16939)
+- [Functions] Fixed error when user starts with the pulsar functions local runner [#16565](https://github.com/apache/pulsar/pull/16565)
+- [Functions] Fix netty.DnsResolverUtil compat issue on JDK9+ for the function Runtimes [#16423](https://github.com/apache/pulsar/pull/16423)
+- [Functions] Ensure bytes is a well-formed UTF-8 byte sequence when decode the FunctionState bytes to string [#16199](https://github.com/apache/pulsar/pull/16199)
+- [Functions] Support Record<?> as Function output type [#16041](https://github.com/apache/pulsar/pull/16041)
+- [Functions] Configure DLog Bookie, Pulsar, and Admin clients via pass through config [#15818](https://github.com/apache/pulsar/pull/15818)
+- [Functions] Disable memory limit controller in internal Pulsar clients [#15752](https://github.com/apache/pulsar/pull/15752)
+- [Functions] Provide default error handler for function log appender [#15728](https://github.com/apache/pulsar/pull/15728)
+- [Functions] Support disabling non-TLS service port [#15328](https://github.com/apache/pulsar/pull/15328)
+- [Functions] Check executor null when close the FileSource [#15247](https://github.com/apache/pulsar/pull/15247)
+- [Functions] Fix UserConfigFunction example [#15240](https://github.com/apache/pulsar/pull/15240)
+- [Functions] Add a cache of versioned KeyValueSchemaImpl [#15122](https://github.com/apache/pulsar/pull/15122)
+- [Functions] Add KeyStore support in WebSocket, Function Worker HTTPS Servers [#15084](https://github.com/apache/pulsar/pull/15084)
+- [Functions] Handle NPE when getLeader returns null [#15058](https://github.com/apache/pulsar/pull/15058)
+- [Functions] Remove internal dependency: pulsar-functions-instance [#14925](https://github.com/apache/pulsar/pull/14925)
+- [Functions] Allow a Function<GenericObject,?> to access the original Schema of the Message and use it [#14847](https://github.com/apache/pulsar/pull/14847)
+- [Functions] Fix pulsar-managed runtimes failed start function with package URL from package management service [#14814](https://github.com/apache/pulsar/pull/14814)
+- [Functions] Set function channel to idle to prevent DNS resolution of deleted pod [#14750](https://github.com/apache/pulsar/pull/14750)
+- [Functions] Remove extra call to gi.stats.incrTotalProcessedSuccessfully() [#12316](https://github.com/apache/pulsar/pull/12316)
+- [Functions] Fix python instance not process zip file correctly [#16697](https://github.com/apache/pulsar/pull/16697)
+- [Functions] Missing assertion in KubernetesRuntimeTest::verifyJavaInstance [#16747](https://github.com/apache/pulsar/pull/16747)
+- [IO Connector] IOConfigUtils support required and defaultValue annotations [#16785](https://github.com/apache/pulsar/pull/16785)
+- [IO Connector] Fixed kafka source config for pulsar-io-kafka when consumerConfigProperties="" [#16731](https://github.com/apache/pulsar/pull/16731)
+- [IO Connector] Add reader config to pulsar-io-debezium and pulsar-io-kafka-connect-adaptor [#16675](https://github.com/apache/pulsar/pull/16675)
+- [IO Connector] Support transactions for JDBC connector [#16468](https://github.com/apache/pulsar/pull/16468)
+- [IO Connector] JDBC sinks: support upsert and row deletion [#16448](https://github.com/apache/pulsar/pull/16448)
+- [IO Connector] Add getSourceConfig method on SourceContext [#16305](https://github.com/apache/pulsar/pull/16305)
+- [IO Connector] KCA sinks: fix offset mapping when sanitizeTopicName=true [#15950](https://github.com/apache/pulsar/pull/15950)
+- [IO Connector] Allow pulsar_tool_env.sh PULSAR_MEM to be Overridden [#15868](https://github.com/apache/pulsar/pull/15868)
+- [IO Connector] JDBC sinks: support Avro specific datatypes [#15845](https://github.com/apache/pulsar/pull/15845)
+- [IO Connector] Sink support custom acknowledge type [#15491](https://github.com/apache/pulsar/pull/15491)
+- [IO Connector] Add getSinkConfig method to SinkContext [#15482](https://github.com/apache/pulsar/pull/15482)
+- [IO Connector] Handle Avro collections native types (GenericData.Array and Utf8 map keys) [#15432](https://github.com/apache/pulsar/pull/15432)
+- [IO Connector] Handle Avro collections native types (GenericData.Array and Utf8 map keys) [#15430](https://github.com/apache/pulsar/pull/15430)
+- [IO Connector] Add hashed id support [#15428](https://github.com/apache/pulsar/pull/15428)
+- [IO Connector] ElasticSearch Sink: option to output canonical key fields (JSON and Avro) [#15426](https://github.com/apache/pulsar/pull/15426)
+- [IO Connector] Replaced "Device" with "measurement" [#15416](https://github.com/apache/pulsar/pull/15416)
+- [IO Connector] Enable bulk flushing scheduling by default [#15244](https://github.com/apache/pulsar/pull/15244)
+- [IO Connector] Set sinkType in config file [#15174](https://github.com/apache/pulsar/pull/15174)
+- [IO Connector] Add a cache of versioned KeyValueSchemaImpl [#15122](https://github.com/apache/pulsar/pull/15122)
+- [IO Connector] Support 4paradigm/OpenMLDB jdbc sink connector [#15064](https://github.com/apache/pulsar/pull/15064)
+- [IO Connector] ElasticSearch Sink: option to disable SSL certificate validation [#14997](https://github.com/apache/pulsar/pull/14997)
+- [IO Connector] Add FULL_MESSAGE_IN_JSON_EXPAND_VALUE message format to Kinesis sink [#14929](https://github.com/apache/pulsar/pull/14929)
+
+### Observability
+- [Broker] Add per-subscription EntryFilter metrics [#16932](https://github.com/apache/pulsar/pull/16932)
+- [Broker] Expose topic level storage write and read rate metrics [#16855](https://github.com/apache/pulsar/pull/16855)
+- [Broker] Rename Pulsar lb metrics to specify OpenMetrics [#16611](https://github.com/apache/pulsar/pull/16611)
+- [Broker] Rename Pulsar schema metrics to specify OpenMetrics [#16610](https://github.com/apache/pulsar/pull/16610)
+- [Broker] Rename Pulsar txn metrics to specify OpenMetrics [#16581](https://github.com/apache/pulsar/pull/16581)
+- [Broker] Optimise msgOutCounter and bytesOutCounter [#16214](https://github.com/apache/pulsar/pull/16214)
+- [Broker] Fail to expose managed ledger client stats to prometheus if bookkeeperClientExposeStatsToPrometheus is true [#16219](https://github.com/apache/pulsar/pull/16219)
+- [Broker] Add metrics for pulsar web service thread pool [#14742](https://github.com/apache/pulsar/pull/14742)
+- [Broker] Add support of PrometheusRawMetricsProvider for the Pulsar-Proxy [#14681](https://github.com/apache/pulsar/pull/14681)
+- [Broker] Add filteredMsgCount for pulsar-admin broker-stats topics [#14531](https://github.com/apache/pulsar/pull/14531)
+- [Broker] Improve /metrics endpoint performance [#14453](https://github.com/apache/pulsar/pull/14453)
+- [Broker] Offloader metrics [#13833](https://github.com/apache/pulsar/pull/13833)
+- [Broker] Improve /metrics endpoint performance [#14453](https://github.com/apache/pulsar/pull/14453)
+- [Broker] add metric for InMemoryDelayedDeliveryTracker's memory usage [#15867](https://github.com/apache/pulsar/pull/15867)
+
+### CLI
+- [Pulsar Admin] Unset namespace policy to improve deleting namespace [#17033](https://github.com/apache/pulsar/pull/17033)
+- [Pulsar Admin] Reduce PartitionedStats local REST call [#16916](https://github.com/apache/pulsar/pull/16916)
+- [Pulsar Admin] Make some police methods async in Namespaces [#16881](https://github.com/apache/pulsar/pull/16881)
+- [Pulsar Admin] Expose the last consumed flow timestamp for consumer stats [#16817](https://github.com/apache/pulsar/pull/16817)
+- [Pulsar Admin] Make some methods async in Namespaces [#16814](https://github.com/apache/pulsar/pull/16814)
+- [Pulsar Admin] Dynamic configuration for check unknown request parameters [#16781](https://github.com/apache/pulsar/pull/16781)
+- [Pulsar Admin] Make offload police methods async in Namespaces [#16760](https://github.com/apache/pulsar/pull/16760)
+- [Pulsar Admin] Support the admin API to check unknown request [#16577](https://github.com/apache/pulsar/pull/16577)
+- [Pulsar Admin] Make getBacklogQuotaMap method async in Namespaces [#16504](https://github.com/apache/pulsar/pull/16504)
+- [Pulsar Admin] Make GetMessageIdByTimestamp pure async [#16446](https://github.com/apache/pulsar/pull/16446)
+- [Pulsar Admin] Make splitNamespaceBundle and getTopicHashPositions async [#16411](https://github.com/apache/pulsar/pull/16411)
+- [Pulsar Admin] Make AutoSubscriptionCreation async [#16329](https://github.com/apache/pulsar/pull/16329)
+- [Pulsar Admin] Make SubscriptionExpirationTime method async [#16328](https://github.com/apache/pulsar/pull/16328)
+- [Pulsar Admin] Make some method on permission async [#16324](https://github.com/apache/pulsar/pull/16324)
+- [Pulsar Admin] Make unloadNamespaceBundle async [#16313](https://github.com/apache/pulsar/pull/16313)
+- [Pulsar Admin] Make Namespaces.deleteNamespaceBundle async [#16287](https://github.com/apache/pulsar/pull/16287)
+- [Pulsar Admin] Make deleteTopic method async [#16232](https://github.com/apache/pulsar/pull/16232)
+- [Pulsar Admin] Make compactionStatus method async [#16231](https://github.com/apache/pulsar/pull/16231)
+- [Pulsar Admin] Make terminate method async [#16227](https://github.com/apache/pulsar/pull/16227)
+- [Pulsar Admin] Make getList async [#16221](https://github.com/apache/pulsar/pull/16221)
+- [Pulsar Admin] Make getPartitionedTopicList method async [#16217](https://github.com/apache/pulsar/pull/16217)
+- [Pulsar Admin] Improve documentation for unackedMessages stat [#16213](https://github.com/apache/pulsar/pull/16213)
+- [Pulsar Admin] Make internalPeekNthMessage method async [#16192](https://github.com/apache/pulsar/pull/16192)
+- [Pulsar Admin] Fix get non-persistent topics issue in Namespaces [#16170](https://github.com/apache/pulsar/pull/16170)
+- [Pulsar Admin] Make getInternalStats method async [#16141](https://github.com/apache/pulsar/pull/16141)
+- [Pulsar Admin] Fix get-publish-rete Admin API handle exception behavior [#16001](https://github.com/apache/pulsar/pull/16001)
+- [Pulsar Admin] Release LookupRequestSemaphore before returning data [#15974](https://github.com/apache/pulsar/pull/13549)
+- [Pulsar Admin] Fix producer/consume permission can’t get schema [#15956](https://github.com/apache/pulsar/pull/15956)
+- [Pulsar Admin] Make publish rate and dispatch rate operation async [#15946](https://github.com/apache/pulsar/pull/15946)
+- [Pulsar Admin] Support to get topic properties [#15944](https://github.com/apache/pulsar/pull/15944)
+- [Pulsar Admin] New API to get subscription properties [#16095](https://github.com/apache/pulsar/pull/16095)
+- [Pulsar Admin] Make some operation subscription dispatchRate methods in Namespaces async [#15880](https://github.com/apache/pulsar/pull/15880)
+- [Pulsar Admin] Make some methods in SchemasResourceBase async [#15821](https://github.com/apache/pulsar/pull/15821)
+- [Pulsar Admin] Make some operation replication clusters async [#15760](https://github.com/apache/pulsar/pull/15760)
+- [Pulsar Admin] Make some methods of ClusterBase pure async [#15685](https://github.com/apache/pulsar/pull/15685)
+- [Pulsar Admin] Allow creating builtin functions in pulsar-admin CLI [#15671](https://github.com/apache/pulsar/pull/15671)
+- [Pulsar Admin] Enable users to specify TTL options in units other than seconds [#15657](https://github.com/apache/pulsar/pull/15657)
+- [Pulsar Admin] Make some operation SubscribeRate methods in Namespaces async [#15656](https://github.com/apache/pulsar/pull/15656)
+- [Pulsar Admin] Add transaction admin to get recover time in stats [#15654](https://github.com/apache/pulsar/pull/15654)
+- [Pulsar Admin] Make some operation auto topic creation in Namespaces async [#15621](https://github.com/apache/pulsar/pull/15621)
+- [Pulsar Admin] Add topic name and sub name for NotFound error message [#15606](https://github.com/apache/pulsar/pull/15606)
+- [Pulsar Admin] Make some methods in ResourceQuotasBase async [#15605](https://github.com/apache/pulsar/pull/15605)
+- [Pulsar Admin] Make some methods in TenantsBase async [#15603](https://github.com/apache/pulsar/pull/15603)
+- [Pulsar Admin] Make some operation messageTTL methods in Namespaces async [#15577](https://github.com/apache/pulsar/pull/15577)
+- [Pulsar Admin] Enable users to specify some time options in units other than seconds [#15563](https://github.com/apache/pulsar/pull/15563)
+- [Pulsar Admin] Make some methods of ClusterBase pure async [#15527](https://github.com/apache/pulsar/pull/15527)
+- [Pulsar Admin] Support filtering system topic when get list [#15410](https://github.com/apache/pulsar/pull/15410)
+- [Pulsar Admin] Make some methods of ClusterBase pure async [#15358](https://github.com/apache/pulsar/pull/15358)
+- [Pulsar Admin] Make some methods of ClusterBase pure async [#15318](https://github.com/apache/pulsar/pull/15318)
+- [Pulsar Admin] Add admin api updateTransactionCoordinatorNumber [#15296](https://github.com/apache/pulsar/pull/15296)
+- [Pulsar Admin] Put validateTopicOwnershipAsync before validateTopicOperationAsync [#15265](https://github.com/apache/pulsar/pull/15265)
+- [Pulsar Admin] Remove duplication validateTopicOwnershipAsync [#15120](https://github.com/apache/pulsar/pull/15410)
+- [Pulsar Admin] Fix pulsar-admin not prompting message when there is a 500 error [#14856](https://github.com/apache/pulsar/pull/14856)
+- [Pulsar Admin] Add get active brokers api without cluster name [#14702](https://github.com/apache/pulsar/pull/14702)
+- [Pulsar Admin] Grab contextual stacktrace for sync methods [#14620](https://github.com/apache/pulsar/pull/14620)
+- [Pulsar Admin] Correct status message prompt [#14603](https://github.com/apache/pulsar/pull/14603)
+- [Pulsar CLI] Add a separate TLS transport encryption configuration [#16930](https://github.com/apache/pulsar/pull/16930)
+- [Pulsar CLI] Fix incorrect description for producing messages [#16876](https://github.com/apache/pulsar/pull/16876)
+- [Pulsar CLI] Use NoSplitter for subscription properties [#16862](https://github.com/apache/pulsar/pull/16862)
+- [Pulsar CLI] Add TLS provider support [#16700](https://github.com/apache/pulsar/pull/16700)
+- [Pulsar CLI] Support getEarliestTimeInBacklog at getPartitionedStats method [#16388](https://github.com/apache/pulsar/pull/16388)
+- [Pulsar CLI] Add query options to the get topics in Namespace [#16167](https://github.com/apache/pulsar/pull/16167)
+- [Pulsar CLI] Add cli cmd for subscription level dispatch-rate-limiter [#15862](https://github.com/apache/pulsar/pull/15862)
+- [Pulsar CLI] Disable Pulsar client memory limit by default [#15748](https://github.com/apache/pulsar/pull/15748)
+- [Pulsar CLI] Fix check on create function class name [#15700](https://github.com/apache/pulsar/pull/15862)
+- [Pulsar CLI] Support filtering system topic when get list [#15410](https://github.com/apache/pulsar/pull/15410)
+- [Pulsar CLI] Change the default for max-connections from 100 to 1 [#15387](https://github.com/apache/pulsar/pull/15387)
+- [Pulsar CLI] Add short name for full name in admin cli [#14301](https://github.com/apache/pulsar/pull/14301)
+- [Client Tool] Add tlsTrustCertFilePath as CLI argument for pulsar-client-tool [#16961](https://github.com/apache/pulsar/pull/16961)
+- [Perf Tool] Able to set maxLookupRequest for pulsar-perf [#16967](https://github.com/apache/pulsar/pull/16967)
+
+### Others

Review Comment:
   Should this part be split into several parts to improve readbility?
   
   eg.
   ```
   #### Proxy
   
   #### Schema
   
   #### Tiered storage
   
   ...
   ```



##########
site2/website/release-notes.md:
##########
@@ -1,6 +1,486 @@
 
 ## Apache Pulsar Release Notes
 
+### 2.11.0
+#### 2022-08-16
+
+### Important notice
+- Rename Pulsar txn metrics to specify OpenMetrics [#16581](https://github.com/apache/pulsar/pull/16581)
+- Rename Pulsar schema metrics to specify OpenMetrics [#16610](https://github.com/apache/pulsar/pull/16610)
+- Rename Pulsar lb metrics to specify OpenMetrics [#16611](https://github.com/apache/pulsar/pull/16611)
+- Remove jul-to-slf4j #16320 [#16320](https://github.com/apache/pulsar/pull/16320)
+- Fix get non-persistent topics issue in Namespaces [#16170](https://github.com/apache/pulsar/pull/16170)
+- Fix producer/consume permission can’t get schema [#15956](https://github.com/apache/pulsar/pull/15956)
+- Add verification for configured default backlog quota and retention [#15441](https://github.com/apache/pulsar/pull/15441)
+- Fix broker LoadBalance uneffective [#15314](https://github.com/apache/pulsar/pull/15314)
+- Ensure the deletion consistency of topic and schema [#14608](https://github.com/apache/pulsar/pull/14608)
+- Transaction cumulative ack redeliver change [#14371](https://github.com/apache/pulsar/pull/14371)
+- Bump prometheus client version from 0.5.0 to 0.15.0 [#13785](https://github.com/apache/pulsar/pull/13785)
+- [PIP-158] Split client TLS transport encryption from authentication [#15634](https://github.com/apache/pulsar/pull/15634)
+- [PIP-155] Removed Python 2 support [#15376](https://github.com/apache/pulsar/pull/15376)
+- [PIP-156] Build Pulsar Server on Java 17 [#15264](https://github.com/apache/pulsar/pull/15264)
+- [PIP-162] Enable system topic by default [#15619](https://github.com/apache/pulsar/pull/15619)
+- [PIP-174] New managed ledger entry cache implementation [#15955](https://github.com/apache/pulsar/pull/15955)
+
+### PIPs
+- [PIP 37] Support chunking with Shared subscription [#16202](https://github.com/apache/pulsar/pull/16202)
+- [PIP-74] Pulsar client memory limits [#14400](https://github.com/apache/pulsar/pull/14400)
+- [PIP-81] Split createNewMetadataLedger into multiple methods for reuse [#15425](https://github.com/apache/pulsar/pull/15425)
+- [PIP 97] Update Authentication Interfaces to Include Async Authentication Methods [#12104](https://github.com/apache/pulsar/pull/12104)
+- [PIP-100] Support pluggable topic factory [#12235](https://github.com/apache/pulsar/pull/12235)
+- [PIP-105] Store Subscription properties [#15757](https://github.com/apache/pulsar/pull/15757)
+- [PIP-117] Change Pulsar standalone defaults [#15478](https://github.com/apache/pulsar/pull/15478)
+- [PIP-132] Include message header size when check maxMessageSize for non-batch message on the client side. [#14007](https://github.com/apache/pulsar/pull/14007)
+- [PIP-136] Sync Pulsar metadata across multiple clouds [#16425](https://github.com/apache/pulsar/pull/16425)
+- [PIP-143] Support split bundle by specified boundaries [#13796](https://github.com/apache/pulsar/pull/13796)
+- [PIP-145] Improve performance of regex subscriptions [#14505](https://github.com/apache/pulsar/pull/14505)
+- [PIP-146] ManagedCursorInfo compression [#14542](https://github.com/apache/pulsar/pull/14542)
+- [PIP 149] Making the REST Admin API fully async [#14365](https://github.com/apache/pulsar/issues/14365)
+- [PIP-152] Support subscription level dispatch rate limiter setting [#15295](https://github.com/apache/pulsar/issues/15295)
+- [PIP-153] Optimize metadataPositions in MLPendingAckStore [#15137](https://github.com/apache/pulsar/pull/15137)
+- [PIP-160] Make transactions work more efficiently by aggregation operation for transaction log and pending ack store [#15370](https://github.com/apache/pulsar/issues/15370)
+- [PIP-161] Exclusive Producer: ability to fence out an existing Producer [#15488](https://github.com/apache/pulsar/pull/15488)
+- [PIP-163] Add lowWaterMark check before appending entry to TB [#15424](https://github.com/apache/pulsar/pull/15424)
+- [PIP-166] Function add MANUAL delivery semantics [#16279](https://github.com/apache/pulsar/pull/16279)
+- [PIP-179] Support the admin API to check unknown request parameters [#16135](https://github.com/apache/pulsar/issues/16135)
+- [PIP-181] Pulsar Shell [#16250](https://github.com/apache/pulsar/issues/16250)
+- [PIP-184] Topic specific consumer priorityLevel [#16715](https://github.com/apache/pulsar/issues/16715)
+- [PIP-187] Add API to analyze a subscription backlog and provide a accurate value [#16545](https://github.com/apache/pulsar/issues/16545)
+
+### Broker
+- [PIP 81] Split the individual acknowledgments into multiple entries
+  - Add range set wrapper to support record dirty ledgers [#15607](https://github.com/apache/pulsar/pull/15607)
+  - Notifications for faster topic discovery [#16062](https://github.com/apache/pulsar/pull/16062)
+  - Split createNewMetadataLedger into multiple methods for reuse [#15425](https://github.com/apache/pulsar/pull/15425)
+- [PIP 105] Store Subscription properties
+  - Store Subscription properties [#15757](https://github.com/apache/pulsar/pull/15757)
+  - Pulsar Admin: create subscription with Properties [#15503](https://github.com/apache/pulsar/pull/15503)
+  - Fix error on recycled SubscriptionPropertiesList [#15335](https://github.com/apache/pulsar/pull/15335)
+- [PIP 160] Make transactions work more efficiently by aggregation operation for transaction log and pending ack store
+  - Pending ack log store enables the batch feature [#16707](https://github.com/apache/pulsar/pull/16707)
+  - Metrics stats of Transaction buffered writer [#16758](https://github.com/apache/pulsar/pull/16758)
+  - Transaction buffered writer supports Timer [#16727](https://github.com/apache/pulsar/pull/16727)
+  - Transaction log store enables the batch feature [#16685](https://github.com/apache/pulsar/pull/16685)
+  - Protocol changes and configuration changes for transaction batch log [#16617](https://github.com/apache/pulsar/pull/16617)
+  - Txn buffered writer for transaction log batch [#16428](https://github.com/apache/pulsar/pull/16428)
+- [PIP 145] Improve performance of regex subscriptions
+  - Enable evaluating subscription pattern on broker side [#14804](https://github.com/apache/pulsar/pull/14804)
+  - Notifications for faster topic discovery [#16062](https://github.com/apache/pulsar/pull/16062)
+- [PIP-156] Build Pulsar Server on Java 17
+  - Build changes by dropping some required checks [#15496](https://github.com/apache/pulsar/pull/15496)
+  - Build Pulsar Server on Java 17 [#15264](https://github.com/apache/pulsar/pull/15264)
+- Optimize getting ledger and entry id from entry [#17108](https://github.com/apache/pulsar/pull/17108)
+- Fix calculate avg message per entry [#17046](https://github.com/apache/pulsar/pull/17046)
+- Bundle-data metadata leak because of bundlestats was not clean [#17095](https://github.com/apache/pulsar/pull/17095)
+- Duplicate ByteBuffer when Caching Backlogged Consumers [#17105](https://github.com/apache/pulsar/pull/17105)
+- Fix offload read handle NPE [#17056](https://github.com/apache/pulsar/pull/17056)
+- Move the state check forward [#17020](https://github.com/apache/pulsar/pull/17020)
+- Improve naming for delete topic error [#16965](https://github.com/apache/pulsar/pull/16965)
+- Increment topic stats outbound message counters and update rate after messages have been written to the TCP/IP connection [#17043](https://github.com/apache/pulsar/pull/17043)
+- Prevent StackOverFlowException in SHARED subscription [#16968](https://github.com/apache/pulsar/pull/16968)
+- Improve the package download process [#16365](https://github.com/apache/pulsar/pull/16365)
+- Skip mis-configured resource usage(>100%) in load balancer [#16937](https://github.com/apache/pulsar/pull/16937)
+- Not allow to terminate system topic [#17006](https://github.com/apache/pulsar/pull/17006)
+- Follow up on #16968 to restore some behavior in PersistentDispatcherMultipleConsumers [#17018](https://github.com/apache/pulsar/pull/17018)
+- Remove exception log when access status.html [#17025](https://github.com/apache/pulsar/pull/17025)
+- Remove unnecessary lock on the stats thread [#16983](https://github.com/apache/pulsar/pull/16983)
+- Fix memory leak if entry exists in cache [#16996](https://github.com/apache/pulsar/pull/16996)
+- Fix ConcurrentModificationException when ModularLoadManagerImpl start [#16953](https://github.com/apache/pulsar/pull/16953)
+- Split TLS transport encryption support from authentication [#16819](https://github.com/apache/pulsar/pull/16819)
+- Support start multiple bookies for BKCluster [#16847](https://github.com/apache/pulsar/pull/16847)
+- Fix MaxQueueSize semaphore release leak in createOpSendMsg [#16915](https://github.com/apache/pulsar/pull/16915)
+- PulsarLedgerManager to pass correct error code to BK client [#16857](https://github.com/apache/pulsar/pull/16857)
+- Improve get the basic authentication config [#16526](https://github.com/apache/pulsar/pull/16526)
+- Change delete pending ack position from foreach to firstKey [#16927](https://github.com/apache/pulsar/pull/16927)
+- Adapt basic authentication configuration with prefix [#16935](https://github.com/apache/pulsar/pull/16935)
+- Fix misleading -c option in pulsar standalone [#16838](https://github.com/apache/pulsar/pull/16838)
+- Fix rack awareness cache expiration data race [#16825](https://github.com/apache/pulsar/pull/16825)
+- Fix Repeated messages of shared dispatcher [#16812](https://github.com/apache/pulsar/pull/16812)
+- Avoid IllegalStateException while client_version is not set [#16788](https://github.com/apache/pulsar/pull/16788)
+- Optimize concurrent collection's shrink logic [#16754](https://github.com/apache/pulsar/pull/16754)
+- Support clear old bookie data for BKCluster [#16744](https://github.com/apache/pulsar/pull/16744)
+- Fix consumer does not abide by the max unacks limitation for Key_Shared subscription [#16718](https://github.com/apache/pulsar/pull/16718)
+- Avoid ConcurrentModificationException for ModularLoadManagerImpl.cleanupDeadBrokersData() [#16690](https://github.com/apache/pulsar/pull/16690)
+- Retry to delete the namespace if new topics created during the namespace deletion [#16676](https://github.com/apache/pulsar/pull/16676)
+- Fix consumer does not abide by the max unacks limitation for Shared subscription [#16670](https://github.com/apache/pulsar/pull/16670)
+- Support for get token from HTTP params [#16650](https://github.com/apache/pulsar/pull/16650)
+- Make defaultOffloader create after offloaderStats overrides [#16638](https://github.com/apache/pulsar/pull/16638)
+- BadVersionException when splitting bundles, delay 100ms and try again [#16612](https://github.com/apache/pulsar/pull/16612)
+- PulsarLedgerManager: add missed return statement [#16607](https://github.com/apache/pulsar/pull/16607)
+- The configuration loadBalancerNamespaceMaximumBundles is invalid [#16552](https://github.com/apache/pulsar/pull/16552)
+- Retry when DistributedIdGenerator has BadVersion error [#16491](https://github.com/apache/pulsar/pull/16491)
+- Fixed error when delayed messages trackers state grows to >1.5GB [#16490](https://github.com/apache/pulsar/pull/16490)
+- Fix RawReader hasMessageAvailable returns true when no messages [#16443](https://github.com/apache/pulsar/pull/16443)
+- Fix No such ledger exception [#16420](https://github.com/apache/pulsar/pull/16420)
+- Add config maxUnloadBundleNumPerShedding for UniformLoadShedder [#16409](https://github.com/apache/pulsar/pull/16409)
+- Fix etcd cluster error and add test for etcd cluster [#16309](https://github.com/apache/pulsar/pull/16309)
+- Skip reading more entries for a pending read with no more entries [#16400](https://github.com/apache/pulsar/pull/16400)
+- Recycle OpReadEntry in some corner cases [#16399](https://github.com/apache/pulsar/pull/16399)
+- Add dynamic configuration for UniformLoadShedder [#16391](https://github.com/apache/pulsar/pull/16391)
+- Fix RawReader out of order [#16390](https://github.com/apache/pulsar/pull/16390)
+- Create the cursor ledger lazily to improve the subscribe performance [#16389](https://github.com/apache/pulsar/pull/16389)
+- Release the entry in getEarliestMessagePublishTimeOfPos [#16386](https://github.com/apache/pulsar/pull/16386)
+- Update cpu ResourceUsage before updating SystemResourceUsage usage [#16366](https://github.com/apache/pulsar/pull/16366)
+- Use shared broker client scheduled executor provider [#16338](https://github.com/apache/pulsar/pull/16338)
+- Do not use IO thread for consumerFlow in Shared subscription [#16304](https://github.com/apache/pulsar/pull/16304)
+- Provide new load balance placement strategy implementation based on the least resource usage with weight [#16281](https://github.com/apache/pulsar/pull/16281)
+- Fix TopicTransactionBuffer ledger apend marker throw ManagedLedgerAlreadyClosedException [#16265](https://github.com/apache/pulsar/pull/16265)
+- Avoid go through all the consumers to get the message ack owner [#16245](https://github.com/apache/pulsar/pull/16245)
+- Reduce the consumers list sort by priority level [#16243](https://github.com/apache/pulsar/pull/16243)
+- Reduce the re-schedule message read operation for PersistentDispatcherMultipleConsumers [#16241](https://github.com/apache/pulsar/pull/16241)
+- Fix npe when invoke replaceBookie. [#16239](https://github.com/apache/pulsar/pull/16239)
+- Fix getInternalStats occasional lack of LeaderInfo again [#16238](https://github.com/apache/pulsar/pull/16238)
+- Fix NPE when drop backlog for time limit [#16235](https://github.com/apache/pulsar/pull/16235)
+- Improve error msg when client is unauthorized [#16224](https://github.com/apache/pulsar/pull/16224)
+- Fix compaction subscription acknowledge Marker msg issue [#16205](https://github.com/apache/pulsar/pull/16205)
+- Fix subscribe dispatcher limiter not be initialized [#16175](https://github.com/apache/pulsar/pull/16175)
+- Use LinkedHashSet for config items of type Set to preserve elements order [#16138](https://github.com/apache/pulsar/pull/16138)
+- Fix topic dispatch rate limiter not init on broker-level [#16084](https://github.com/apache/pulsar/pull/16084)
+- Fix NPE when get /admin/v2/namespaces/public/default/maxTopicsPerNamespace [#16076](https://github.com/apache/pulsar/pull/16076)
+- Add config to allow deliverAt time to be strictly honored [#16068](https://github.com/apache/pulsar/pull/16068)
+- Add switch for enable/disable distribute bundles evenly in LoadManager [#16059](https://github.com/apache/pulsar/pull/16059)
+- Fix thread safety issues in accessing ManagedCursorContainer.heap ArrayList [#16049](https://github.com/apache/pulsar/pull/16049)
+- Make invalid namespace and topic name logs more descriptive [#16047](https://github.com/apache/pulsar/pull/16047)
+- Terminate JVM when initialize-cluster-metadata command fails [#16039](https://github.com/apache/pulsar/pull/16039)
+- Avoid storing MessageMetadata instances returned by peekMessageMetadata [#15983](https://github.com/apache/pulsar/pull/15983)
+- Fix topic policies update not check message expiry [#15941](https://github.com/apache/pulsar/pull/15941)
+- Fix reach max tenants error if the tenant already exists [#15932](https://github.com/apache/pulsar/pull/15932)
+- Close transactionBufferClient before closing the internal Pulsar client [#15922](https://github.com/apache/pulsar/pull/15922)
+- Remove topic -> namespace cache of LedgerOffloaderStatsImpl [#15869](https://github.com/apache/pulsar/pull/15869)
+- Fix NPE when ledger id not found in OpReadEntry [#15837](https://github.com/apache/pulsar/pull/15837)
+- Fix topic-level replicator rate limiter not init [#15825](https://github.com/apache/pulsar/pull/15825)
+- Fix NPE in MessageDeduplication [#15820](https://github.com/apache/pulsar/pull/15820)
+- Configure DLog Bookie, Pulsar, and Admin clients via pass through config [#15818](https://github.com/apache/pulsar/pull/15818)
+- Fix the broker close hanged issue [#15755](https://github.com/apache/pulsar/pull/15755)
+- Disable memory limit controller in internal Pulsar clients [#15752](https://github.com/apache/pulsar/pull/15752)
+- Add timeout for unload namespace bundle [#15719](https://github.com/apache/pulsar/pull/15719)
+- Support schemaValidationEnforced on topic level [#15712](https://github.com/apache/pulsar/pull/15712)
+- Fix NPE when put value to RangeCache [#15707](https://github.com/apache/pulsar/pull/15707)
+- Fast return if ack cumulative illegal [#15695](https://github.com/apache/pulsar/pull/15695)
+- Fix creating producer failure when set backlog quota [#15663](https://github.com/apache/pulsar/pull/15663)
+- Fix logging in shutdown when broker shutdown [#15626](https://github.com/apache/pulsar/pull/15626)
+- Fix MetadataStoreException$NotFoundException while doing topic lookup [#15633](https://github.com/apache/pulsar/pull/15633)
+- Use dispatchRateLimiterLock to update dispatchRateLimiter [#15601](https://github.com/apache/pulsar/pull/15601)
+- Add .yaml suffix support for broker filter config file [#15600](https://github.com/apache/pulsar/pull/15600)
+- Added newline to end of standalone.conf [#15591](https://github.com/apache/pulsar/pull/15591)
+- Add decode InputStream for Schema [#16659](https://github.com/apache/pulsar/pull/16659)
+- Create "standalone" cluster when starting standalone server [#15583](https://github.com/apache/pulsar/pull/15583)
+- Close publishLimiter when disable it [#15520](https://github.com/apache/pulsar/pull/15520)
+- Enable SO_REUSEADDR on listen sockets for broker,proxy [#15517](https://github.com/apache/pulsar/pull/15517)
+- Fix to avoid TopicStatsImpl NPE even if producerName is null [#15502](https://github.com/apache/pulsar/pull/15502)
+- Close connection if a ping or pong message cannot be sent [#15382](https://github.com/apache/pulsar/pull/15382)
+- Introduce BitRateUnit for calculate bitrate [#15435](https://github.com/apache/pulsar/pull/15435)
+- Add verification for configured default backlog quota and retention [#15441](https://github.com/apache/pulsar/pull/15441)
+- Change unnecessary atomic to basic type [#15369](https://github.com/apache/pulsar/pull/15369)
+- Support shrink for ConcurrentSortedLongPairSet [#15354](https://github.com/apache/pulsar/pull/15354)
+- Use shrink map for message redelivery [#15342](https://github.com/apache/pulsar/pull/15342)
+- Fix precision error in UsageUnit [#15322](https://github.com/apache/pulsar/pull/15322)
+- Optimized namespace-level dispatcherRateLimiter update [#15315](https://github.com/apache/pulsar/pull/15315)
+- Fix broker LoadBalance uneffective [#15314](https://github.com/apache/pulsar/pull/15314)
+- Fix wrong unit of NIC speed on linux [#15304](https://github.com/apache/pulsar/pull/15304)
+- Fix totalEntries calculation problem in AbstractBaseDispatcher#filterEntriesForConsumere [#15298](https://github.com/apache/pulsar/pull/15298)
+- Fix resource group does not report usage [#15292](https://github.com/apache/pulsar/pull/15292)
+- Tidy up the system topic [#15252](https://github.com/apache/pulsar/pull/15252)
+- Fix race condition between timeout and completion in OpAddEntry [#15233](https://github.com/apache/pulsar/pull/15233)
+- Improve skipping of DNS resolution when creating AuthenticationDataHttp instance [#15228](https://github.com/apache/pulsar/pull/15228)
+- Skip unnecessary DNS resolution when creating AuthenticationDataHttp instance [#15221](https://github.com/apache/pulsar/pull/15221)
+- Fix MessageDeduplication#inactiveProducers may not be persistence correctly [#15206](https://github.com/apache/pulsar/pull/15206)
+- Cancel fencedTopicMonitoringTask when topic closed normally [#15202](https://github.com/apache/pulsar/pull/15202)
+- Fix npe when doCacheEviction [#15184](https://github.com/apache/pulsar/pull/15184)
+- Make health check fail if dead locked threads are detected [#15155](https://github.com/apache/pulsar/pull/15155)
+- Fix parameter saslJaasBrokerSectionName in broker.conf [#15110](https://github.com/apache/pulsar/pull/15110)
+- Fix potential to add duplicated consumer [#15051](https://github.com/apache/pulsar/pull/15051)
+- Fix rewind failed when redeliverUnacknowledgedMessages [#15046](https://github.com/apache/pulsar/pull/15046)
+- Fix race condition in updating lastMarkDeleteEntry field [#15031](https://github.com/apache/pulsar/pull/15031)
+- Avoid heartbeat topic to offload [#15008](https://github.com/apache/pulsar/pull/15008)
+- Evicting cache data by the slowest markDeletedPosition [#14985](https://github.com/apache/pulsar/pull/14985)
+- Return if reset in progress [#14978](https://github.com/apache/pulsar/pull/14978)
+- Dynamic update broker-level subscribe-rate limter [#14890](https://github.com/apache/pulsar/pull/14890)
+- Fix wrong state for non-durable cursor [#14869](https://github.com/apache/pulsar/pull/14869)
+- Support advertised listeners for HTTP and HTTPS services [#14839](https://github.com/apache/pulsar/pull/14839)
+- Support dynamic update between non-zero values of topicPublisherThrottlingTickTimeMillis [#14782](https://github.com/apache/pulsar/pull/14782)
+- Support dynamic update between non-zero values of brokerPublisherThrottlingTickTimeMillis [#14759](https://github.com/apache/pulsar/pull/14759)
+- Fix incorrect entryId in warn log when reading entry from tiered storage [#14685](https://github.com/apache/pulsar/pull/14685)
+- Optimize PositionImpl toString, compareTo and hashCode methods [#14678](https://github.com/apache/pulsar/pull/14678)
+- Improve readability of ManagedCursorImpl source code [#14617](https://github.com/apache/pulsar/pull/14617)
+- Intercept ACK command by BrokerInterceptor [#14616](https://github.com/apache/pulsar/pull/14616)
+- Add filteredMsgCount for pulsar-admin broker-stats topics [#14531](https://github.com/apache/pulsar/pull/14531)
+- Fix NPE when subscription is already removed [#14363](https://github.com/apache/pulsar/pull/14363)
+- Fix backpressure handling in Jetty web server configuration [#14353](https://github.com/apache/pulsar/pull/14353)
+- Optimize find nics process [#14340](https://github.com/apache/pulsar/pull/14340)
+- Support pass http auth status [#14044](https://github.com/apache/pulsar/pull/14044)
+- Support caching to drain backlog consumers [#12258](https://github.com/apache/pulsar/pull/12258)
+- Strict bookie affinity group strategy [#12025](https://github.com/apache/pulsar/pull/12025)
+
+### Clients
+- [PIP 74] Pulsar client memory limits
+  - Support auto scaled consumer receiver queue [#14494](https://github.com/apache/pulsar/pull/14494)
+  - Support dynamic limit of consumer receiver queue [#14400](https://github.com/apache/pulsar/pull/14400)
+  - Support consumer client memory limit [#15216](https://github.com/apache/pulsar/pull/15216)
+- [Java] LastBatchSendNanoTime initialization [#17058](https://github.com/apache/pulsar/pull/17058)
+- [Java] Release semaphore before discarding messages in batchMessageContainer [#17019](https://github.com/apache/pulsar/pull/17019)
+- [Java] Reduce code duplication in admin client [#16377](https://github.com/apache/pulsar/pull/16377)
+- [Java] Remove redundant check for chunked message TotalChunkMsgSize in ConsumerImpl [#16797](https://github.com/apache/pulsar/pull/16797)
+- [Java] Fix client memory limit currentUsage leak and semaphore release duplicated in ProducerImpl [#16837](https://github.com/apache/pulsar/pull/16837)
+- [Java] Forget to update memory usage when invalid message [#16835](https://github.com/apache/pulsar/pull/16835)
+- [Java] Fix subscription topic name error [#16719](https://github.com/apache/pulsar/pull/16719)
+- [Java] Send CloseConsumer on client timeout [#16616](https://github.com/apache/pulsar/pull/16616)
+- [Java] Add message key if exists to deadLetter messages [#16615](https://github.com/apache/pulsar/pull/16615)
+- [Java] Make DeadLetterPolicy deserializable [#16513](https://github.com/apache/pulsar/pull/16513)
+- [Java] Improve performance of multi-topic consumer with more than one IO thread [#16336](https://github.com/apache/pulsar/pull/16336)
+- [Java] Add initialization for the OpSendMsg [#16256](https://github.com/apache/pulsar/pull/16256)
+- [Java] Replace ScheduledExecutor to improve performance of message consumption [#16236](https://github.com/apache/pulsar/pull/16236)
+- [Java] Fix large message sometimes cannot be split into chunks [#16196](https://github.com/apache/pulsar/pull/16196)
+- [Java] Only trigger the batch receive timeout when having pending batch receives requests [#16160](https://github.com/apache/pulsar/pull/16160)
+- [Java] Fix the startMessageId can't be respected as the ChunkMessageID [#16154](https://github.com/apache/pulsar/pull/16154)
+- [Java] Fix auto cluster failover can't resolve host bug [#16152](https://github.com/apache/pulsar/pull/16152)
+- [Java] Switch to rely on Netty for Hostname Verification [#15824](https://github.com/apache/pulsar/pull/15824)
+- [Java] Prevent the trigger running concurrently in the memory limit controller [#15737](https://github.com/apache/pulsar/pull/15737)
+- [Java] Fix messages sent by producers without schema cannot be decoded [#15622](https://github.com/apache/pulsar/pull/15622)
+- [Java] Remove sensitive msg from consumer/producer stats log [#15483](https://github.com/apache/pulsar/pull/15483)
+- [Java] Add pending messages information while print the producer stats [#15440](https://github.com/apache/pulsar/pull/15440)
+- [Java] Fix flaky BatchMessageTest by initializing lastBatchSendNanoTime [#15406](https://github.com/apache/pulsar/pull/15406)
+- [Java] Check consumer schema null in advance [#15327](https://github.com/apache/pulsar/pull/15327)
+- [Java] Fix inconsistent parameter of TopicPolicies.getSubscriptionDispatchRate [#15293](https://github.com/apache/pulsar/pull/15293)
+- [Java] Fix typo in ConsumerBuilder [#15194](https://github.com/apache/pulsar/pull/15194)
+- [Java] Fix performance regression with message listener [#15162](https://github.com/apache/pulsar/pull/15162)
+- [Java] ConsumerBuilderImpl can not set null to deadLetterPolicy [#14980](https://github.com/apache/pulsar/pull/14980)
+- [Java] Fix message publishing stuck when enabling batch [#14870](https://github.com/apache/pulsar/pull/14870)
+- [Java] Returns immutable data set when use TableView [#14833](https://github.com/apache/pulsar/pull/14833)
+- [Java] Avoid timer task run before previous subscribe complete [#14818](https://github.com/apache/pulsar/pull/14818)
+- [Java] Support Reader Interceptor [#14729](https://github.com/apache/pulsar/pull/14729)
+- [Java] Optimize pause when creating sub consumers in multi-topic consumer [#14566](https://github.com/apache/pulsar/pull/14566)
+- [C++] Fix rpm and deb packaging [#17064](https://github.com/apache/pulsar/pull/17064)
+- [C++] Add producerId to the log of closed producer [#17079](https://github.com/apache/pulsar/pull/17079)
+- [C++] Add basic authentication [#15822](https://github.com/apache/pulsar/pull/15822)
+- [C++] Add getLastMessageIdAsync in Consumer [#16182](https://github.com/apache/pulsar/pull/16182)
+- [C++] Rename function name: pulsar_producer_configuration_set_crypto_failure_action [#16031](https://github.com/apache/pulsar/pull/16031)
+- [C++] Generate correct well-known OpenID configuration URL [#15928](https://github.com/apache/pulsar/pull/15928)
+- [C++] Unblock all threads when Pulsar client is closed [#15726](https://github.com/apache/pulsar/pull/15726)
+- [C++] Avoid race condition causing double callback on close [#15508](https://github.com/apache/pulsar/pull/15508)
+- [C++] Wait until event loop terminates when closing the Client [#15316](https://github.com/apache/pulsar/pull/15316)
+- [C++] Remove the flaky and meaningless tests [#15271](https://github.com/apache/pulsar/pull/15271)
+- [C++] Fix UnknownError might be returned for a partitioned producer [#15161](https://github.com/apache/pulsar/pull/15161)
+- [C++] Fix single message metadata not set correctly [#15072](https://github.com/apache/pulsar/pull/15072)
+- [C++] Add subscription properties to consumer for cpp [#15020](https://github.com/apache/pulsar/pull/15020)
+- [C++] Fix connection is not closed when broker closes the connection to proxy[#14070](https://github.com/apache/pulsar/pull/14070)
+- [C++] Fix send callback might not be invoked in key based batching [#14898](https://github.com/apache/pulsar/pull/14898)
+- [C++] Fix C++ client compile error because of keyword optional is redundant in PaddingDemo.proto [#14862](https://github.com/apache/pulsar/pull/14862)
+- [C++] Fix segmentation fault when creating socket failed [#14834](https://github.com/apache/pulsar/pull/14834)
+- [C++] Fix the race condition of connect timeout task [#14823](https://github.com/apache/pulsar/pull/14823)
+- [C++] Fix producer is never destructed until client is closed [#14797](https://github.com/apache/pulsar/pull/14797)
+- [C++] Close messages_ when PartitionedConsumer is closed [#16887](https://github.com/apache/pulsar/pull/16887)
+- [Python] Add getLastMessageIdAsync C binding [#16255](https://github.com/apache/pulsar/pull/16255)
+- [Python] Fixed reserved keys is not removed when JsonSchema being encoded [#15947](https://github.com/apache/pulsar/pull/15947)
+- [Python] Use MacOS 10.15 as the target OS version for Python wheel files [#15788](https://github.com/apache/pulsar/pull/15788)
+- [Python] Removed dependencies only need by Python2 [#15460](https://github.com/apache/pulsar/pull/15460)
+- [Python] Removed scripts to create wheel files in vagrant VMs [#15459](https://github.com/apache/pulsar/pull/15459)
+- [Python] Adjusted script to build wheel for Python 3.7 on Mac [#15407](https://github.com/apache/pulsar/pull/15407)
+- [Python] Change python cp35-cp35m lib build version to manylinux1 [#15180](https://github.com/apache/pulsar/pull/15180)
+- [Python] Generate universal2 wheel files for MacOS [#15054](https://github.com/apache/pulsar/pull/15054)
+- [Python] Added script to generate Wheel files for MacOS [#15024](https://github.com/apache/pulsar/pull/15024)
+- [Python] Added build for wheels on Alpine linux [#15016](https://github.com/apache/pulsar/pull/15016)
+- [Python] Added build for Arm64 on Linux and Python 3.10 [#15004](https://github.com/apache/pulsar/pull/15004)
+
+### Pulsar IO and Pulsar Functions
+- [Functions] Add the ability to customize logging level for Go & Python functions [#16939](https://github.com/apache/pulsar/pull/16939)
+- [Functions] Fixed error when user starts with the pulsar functions local runner [#16565](https://github.com/apache/pulsar/pull/16565)
+- [Functions] Fix netty.DnsResolverUtil compat issue on JDK9+ for the function Runtimes [#16423](https://github.com/apache/pulsar/pull/16423)
+- [Functions] Ensure bytes is a well-formed UTF-8 byte sequence when decode the FunctionState bytes to string [#16199](https://github.com/apache/pulsar/pull/16199)
+- [Functions] Support Record<?> as Function output type [#16041](https://github.com/apache/pulsar/pull/16041)
+- [Functions] Configure DLog Bookie, Pulsar, and Admin clients via pass through config [#15818](https://github.com/apache/pulsar/pull/15818)
+- [Functions] Disable memory limit controller in internal Pulsar clients [#15752](https://github.com/apache/pulsar/pull/15752)
+- [Functions] Provide default error handler for function log appender [#15728](https://github.com/apache/pulsar/pull/15728)
+- [Functions] Support disabling non-TLS service port [#15328](https://github.com/apache/pulsar/pull/15328)
+- [Functions] Check executor null when close the FileSource [#15247](https://github.com/apache/pulsar/pull/15247)
+- [Functions] Fix UserConfigFunction example [#15240](https://github.com/apache/pulsar/pull/15240)
+- [Functions] Add a cache of versioned KeyValueSchemaImpl [#15122](https://github.com/apache/pulsar/pull/15122)
+- [Functions] Add KeyStore support in WebSocket, Function Worker HTTPS Servers [#15084](https://github.com/apache/pulsar/pull/15084)
+- [Functions] Handle NPE when getLeader returns null [#15058](https://github.com/apache/pulsar/pull/15058)
+- [Functions] Remove internal dependency: pulsar-functions-instance [#14925](https://github.com/apache/pulsar/pull/14925)
+- [Functions] Allow a Function<GenericObject,?> to access the original Schema of the Message and use it [#14847](https://github.com/apache/pulsar/pull/14847)
+- [Functions] Fix pulsar-managed runtimes failed start function with package URL from package management service [#14814](https://github.com/apache/pulsar/pull/14814)
+- [Functions] Set function channel to idle to prevent DNS resolution of deleted pod [#14750](https://github.com/apache/pulsar/pull/14750)
+- [Functions] Remove extra call to gi.stats.incrTotalProcessedSuccessfully() [#12316](https://github.com/apache/pulsar/pull/12316)
+- [Functions] Fix python instance not process zip file correctly [#16697](https://github.com/apache/pulsar/pull/16697)
+- [Functions] Missing assertion in KubernetesRuntimeTest::verifyJavaInstance [#16747](https://github.com/apache/pulsar/pull/16747)
+- [IO Connector] IOConfigUtils support required and defaultValue annotations [#16785](https://github.com/apache/pulsar/pull/16785)
+- [IO Connector] Fixed kafka source config for pulsar-io-kafka when consumerConfigProperties="" [#16731](https://github.com/apache/pulsar/pull/16731)
+- [IO Connector] Add reader config to pulsar-io-debezium and pulsar-io-kafka-connect-adaptor [#16675](https://github.com/apache/pulsar/pull/16675)
+- [IO Connector] Support transactions for JDBC connector [#16468](https://github.com/apache/pulsar/pull/16468)
+- [IO Connector] JDBC sinks: support upsert and row deletion [#16448](https://github.com/apache/pulsar/pull/16448)
+- [IO Connector] Add getSourceConfig method on SourceContext [#16305](https://github.com/apache/pulsar/pull/16305)
+- [IO Connector] KCA sinks: fix offset mapping when sanitizeTopicName=true [#15950](https://github.com/apache/pulsar/pull/15950)
+- [IO Connector] Allow pulsar_tool_env.sh PULSAR_MEM to be Overridden [#15868](https://github.com/apache/pulsar/pull/15868)
+- [IO Connector] JDBC sinks: support Avro specific datatypes [#15845](https://github.com/apache/pulsar/pull/15845)
+- [IO Connector] Sink support custom acknowledge type [#15491](https://github.com/apache/pulsar/pull/15491)
+- [IO Connector] Add getSinkConfig method to SinkContext [#15482](https://github.com/apache/pulsar/pull/15482)
+- [IO Connector] Handle Avro collections native types (GenericData.Array and Utf8 map keys) [#15432](https://github.com/apache/pulsar/pull/15432)
+- [IO Connector] Handle Avro collections native types (GenericData.Array and Utf8 map keys) [#15430](https://github.com/apache/pulsar/pull/15430)
+- [IO Connector] Add hashed id support [#15428](https://github.com/apache/pulsar/pull/15428)
+- [IO Connector] ElasticSearch Sink: option to output canonical key fields (JSON and Avro) [#15426](https://github.com/apache/pulsar/pull/15426)
+- [IO Connector] Replaced "Device" with "measurement" [#15416](https://github.com/apache/pulsar/pull/15416)
+- [IO Connector] Enable bulk flushing scheduling by default [#15244](https://github.com/apache/pulsar/pull/15244)
+- [IO Connector] Set sinkType in config file [#15174](https://github.com/apache/pulsar/pull/15174)
+- [IO Connector] Add a cache of versioned KeyValueSchemaImpl [#15122](https://github.com/apache/pulsar/pull/15122)
+- [IO Connector] Support 4paradigm/OpenMLDB jdbc sink connector [#15064](https://github.com/apache/pulsar/pull/15064)
+- [IO Connector] ElasticSearch Sink: option to disable SSL certificate validation [#14997](https://github.com/apache/pulsar/pull/14997)
+- [IO Connector] Add FULL_MESSAGE_IN_JSON_EXPAND_VALUE message format to Kinesis sink [#14929](https://github.com/apache/pulsar/pull/14929)
+
+### Observability
+- [Broker] Add per-subscription EntryFilter metrics [#16932](https://github.com/apache/pulsar/pull/16932)
+- [Broker] Expose topic level storage write and read rate metrics [#16855](https://github.com/apache/pulsar/pull/16855)
+- [Broker] Rename Pulsar lb metrics to specify OpenMetrics [#16611](https://github.com/apache/pulsar/pull/16611)
+- [Broker] Rename Pulsar schema metrics to specify OpenMetrics [#16610](https://github.com/apache/pulsar/pull/16610)
+- [Broker] Rename Pulsar txn metrics to specify OpenMetrics [#16581](https://github.com/apache/pulsar/pull/16581)
+- [Broker] Optimise msgOutCounter and bytesOutCounter [#16214](https://github.com/apache/pulsar/pull/16214)
+- [Broker] Fail to expose managed ledger client stats to prometheus if bookkeeperClientExposeStatsToPrometheus is true [#16219](https://github.com/apache/pulsar/pull/16219)
+- [Broker] Add metrics for pulsar web service thread pool [#14742](https://github.com/apache/pulsar/pull/14742)
+- [Broker] Add support of PrometheusRawMetricsProvider for the Pulsar-Proxy [#14681](https://github.com/apache/pulsar/pull/14681)
+- [Broker] Add filteredMsgCount for pulsar-admin broker-stats topics [#14531](https://github.com/apache/pulsar/pull/14531)
+- [Broker] Improve /metrics endpoint performance [#14453](https://github.com/apache/pulsar/pull/14453)
+- [Broker] Offloader metrics [#13833](https://github.com/apache/pulsar/pull/13833)
+- [Broker] Improve /metrics endpoint performance [#14453](https://github.com/apache/pulsar/pull/14453)
+- [Broker] add metric for InMemoryDelayedDeliveryTracker's memory usage [#15867](https://github.com/apache/pulsar/pull/15867)
+
+### CLI
+- [Pulsar Admin] Unset namespace policy to improve deleting namespace [#17033](https://github.com/apache/pulsar/pull/17033)
+- [Pulsar Admin] Reduce PartitionedStats local REST call [#16916](https://github.com/apache/pulsar/pull/16916)
+- [Pulsar Admin] Make some police methods async in Namespaces [#16881](https://github.com/apache/pulsar/pull/16881)
+- [Pulsar Admin] Expose the last consumed flow timestamp for consumer stats [#16817](https://github.com/apache/pulsar/pull/16817)
+- [Pulsar Admin] Make some methods async in Namespaces [#16814](https://github.com/apache/pulsar/pull/16814)
+- [Pulsar Admin] Dynamic configuration for check unknown request parameters [#16781](https://github.com/apache/pulsar/pull/16781)
+- [Pulsar Admin] Make offload police methods async in Namespaces [#16760](https://github.com/apache/pulsar/pull/16760)
+- [Pulsar Admin] Support the admin API to check unknown request [#16577](https://github.com/apache/pulsar/pull/16577)
+- [Pulsar Admin] Make getBacklogQuotaMap method async in Namespaces [#16504](https://github.com/apache/pulsar/pull/16504)
+- [Pulsar Admin] Make GetMessageIdByTimestamp pure async [#16446](https://github.com/apache/pulsar/pull/16446)
+- [Pulsar Admin] Make splitNamespaceBundle and getTopicHashPositions async [#16411](https://github.com/apache/pulsar/pull/16411)
+- [Pulsar Admin] Make AutoSubscriptionCreation async [#16329](https://github.com/apache/pulsar/pull/16329)
+- [Pulsar Admin] Make SubscriptionExpirationTime method async [#16328](https://github.com/apache/pulsar/pull/16328)
+- [Pulsar Admin] Make some method on permission async [#16324](https://github.com/apache/pulsar/pull/16324)
+- [Pulsar Admin] Make unloadNamespaceBundle async [#16313](https://github.com/apache/pulsar/pull/16313)
+- [Pulsar Admin] Make Namespaces.deleteNamespaceBundle async [#16287](https://github.com/apache/pulsar/pull/16287)
+- [Pulsar Admin] Make deleteTopic method async [#16232](https://github.com/apache/pulsar/pull/16232)
+- [Pulsar Admin] Make compactionStatus method async [#16231](https://github.com/apache/pulsar/pull/16231)
+- [Pulsar Admin] Make terminate method async [#16227](https://github.com/apache/pulsar/pull/16227)
+- [Pulsar Admin] Make getList async [#16221](https://github.com/apache/pulsar/pull/16221)
+- [Pulsar Admin] Make getPartitionedTopicList method async [#16217](https://github.com/apache/pulsar/pull/16217)
+- [Pulsar Admin] Improve documentation for unackedMessages stat [#16213](https://github.com/apache/pulsar/pull/16213)
+- [Pulsar Admin] Make internalPeekNthMessage method async [#16192](https://github.com/apache/pulsar/pull/16192)
+- [Pulsar Admin] Fix get non-persistent topics issue in Namespaces [#16170](https://github.com/apache/pulsar/pull/16170)
+- [Pulsar Admin] Make getInternalStats method async [#16141](https://github.com/apache/pulsar/pull/16141)
+- [Pulsar Admin] Fix get-publish-rete Admin API handle exception behavior [#16001](https://github.com/apache/pulsar/pull/16001)
+- [Pulsar Admin] Release LookupRequestSemaphore before returning data [#15974](https://github.com/apache/pulsar/pull/13549)
+- [Pulsar Admin] Fix producer/consume permission can’t get schema [#15956](https://github.com/apache/pulsar/pull/15956)
+- [Pulsar Admin] Make publish rate and dispatch rate operation async [#15946](https://github.com/apache/pulsar/pull/15946)
+- [Pulsar Admin] Support to get topic properties [#15944](https://github.com/apache/pulsar/pull/15944)
+- [Pulsar Admin] New API to get subscription properties [#16095](https://github.com/apache/pulsar/pull/16095)
+- [Pulsar Admin] Make some operation subscription dispatchRate methods in Namespaces async [#15880](https://github.com/apache/pulsar/pull/15880)
+- [Pulsar Admin] Make some methods in SchemasResourceBase async [#15821](https://github.com/apache/pulsar/pull/15821)
+- [Pulsar Admin] Make some operation replication clusters async [#15760](https://github.com/apache/pulsar/pull/15760)
+- [Pulsar Admin] Make some methods of ClusterBase pure async [#15685](https://github.com/apache/pulsar/pull/15685)
+- [Pulsar Admin] Allow creating builtin functions in pulsar-admin CLI [#15671](https://github.com/apache/pulsar/pull/15671)
+- [Pulsar Admin] Enable users to specify TTL options in units other than seconds [#15657](https://github.com/apache/pulsar/pull/15657)
+- [Pulsar Admin] Make some operation SubscribeRate methods in Namespaces async [#15656](https://github.com/apache/pulsar/pull/15656)
+- [Pulsar Admin] Add transaction admin to get recover time in stats [#15654](https://github.com/apache/pulsar/pull/15654)
+- [Pulsar Admin] Make some operation auto topic creation in Namespaces async [#15621](https://github.com/apache/pulsar/pull/15621)
+- [Pulsar Admin] Add topic name and sub name for NotFound error message [#15606](https://github.com/apache/pulsar/pull/15606)
+- [Pulsar Admin] Make some methods in ResourceQuotasBase async [#15605](https://github.com/apache/pulsar/pull/15605)
+- [Pulsar Admin] Make some methods in TenantsBase async [#15603](https://github.com/apache/pulsar/pull/15603)
+- [Pulsar Admin] Make some operation messageTTL methods in Namespaces async [#15577](https://github.com/apache/pulsar/pull/15577)
+- [Pulsar Admin] Enable users to specify some time options in units other than seconds [#15563](https://github.com/apache/pulsar/pull/15563)
+- [Pulsar Admin] Make some methods of ClusterBase pure async [#15527](https://github.com/apache/pulsar/pull/15527)
+- [Pulsar Admin] Support filtering system topic when get list [#15410](https://github.com/apache/pulsar/pull/15410)
+- [Pulsar Admin] Make some methods of ClusterBase pure async [#15358](https://github.com/apache/pulsar/pull/15358)
+- [Pulsar Admin] Make some methods of ClusterBase pure async [#15318](https://github.com/apache/pulsar/pull/15318)
+- [Pulsar Admin] Add admin api updateTransactionCoordinatorNumber [#15296](https://github.com/apache/pulsar/pull/15296)
+- [Pulsar Admin] Put validateTopicOwnershipAsync before validateTopicOperationAsync [#15265](https://github.com/apache/pulsar/pull/15265)
+- [Pulsar Admin] Remove duplication validateTopicOwnershipAsync [#15120](https://github.com/apache/pulsar/pull/15410)
+- [Pulsar Admin] Fix pulsar-admin not prompting message when there is a 500 error [#14856](https://github.com/apache/pulsar/pull/14856)
+- [Pulsar Admin] Add get active brokers api without cluster name [#14702](https://github.com/apache/pulsar/pull/14702)
+- [Pulsar Admin] Grab contextual stacktrace for sync methods [#14620](https://github.com/apache/pulsar/pull/14620)
+- [Pulsar Admin] Correct status message prompt [#14603](https://github.com/apache/pulsar/pull/14603)
+- [Pulsar CLI] Add a separate TLS transport encryption configuration [#16930](https://github.com/apache/pulsar/pull/16930)
+- [Pulsar CLI] Fix incorrect description for producing messages [#16876](https://github.com/apache/pulsar/pull/16876)
+- [Pulsar CLI] Use NoSplitter for subscription properties [#16862](https://github.com/apache/pulsar/pull/16862)
+- [Pulsar CLI] Add TLS provider support [#16700](https://github.com/apache/pulsar/pull/16700)
+- [Pulsar CLI] Support getEarliestTimeInBacklog at getPartitionedStats method [#16388](https://github.com/apache/pulsar/pull/16388)
+- [Pulsar CLI] Add query options to the get topics in Namespace [#16167](https://github.com/apache/pulsar/pull/16167)
+- [Pulsar CLI] Add cli cmd for subscription level dispatch-rate-limiter [#15862](https://github.com/apache/pulsar/pull/15862)
+- [Pulsar CLI] Disable Pulsar client memory limit by default [#15748](https://github.com/apache/pulsar/pull/15748)
+- [Pulsar CLI] Fix check on create function class name [#15700](https://github.com/apache/pulsar/pull/15862)
+- [Pulsar CLI] Support filtering system topic when get list [#15410](https://github.com/apache/pulsar/pull/15410)
+- [Pulsar CLI] Change the default for max-connections from 100 to 1 [#15387](https://github.com/apache/pulsar/pull/15387)
+- [Pulsar CLI] Add short name for full name in admin cli [#14301](https://github.com/apache/pulsar/pull/14301)
+- [Client Tool] Add tlsTrustCertFilePath as CLI argument for pulsar-client-tool [#16961](https://github.com/apache/pulsar/pull/16961)
+- [Perf Tool] Able to set maxLookupRequest for pulsar-perf [#16967](https://github.com/apache/pulsar/pull/16967)
+
+### Others
+- [Proxy] Add TLS transport encryption for broker client [#16833](https://github.com/apache/pulsar/pull/16833)
+- [Proxy] Fix client service url [#16834](https://github.com/apache/pulsar/pull/16834)
+- [Proxy] Consolidate Netty channel flushes to mitigate syscall overhead [#16372](https://github.com/apache/pulsar/pull/16372)
+- [Proxy] Do not preserve host when forwarding admin requests [#16342](https://github.com/apache/pulsar/pull/16342)
+- [Proxy] Switch to rely on Netty for Hostname Verification [#15824](https://github.com/apache/pulsar/pull/15824)
+- [Proxy] Support zero-copy of NIC to NIC on Proxy [#15678](https://github.com/apache/pulsar/pull/15678)
+- [Proxy] Add support of PrometheusRawMetricsProvider for the Pulsar-Proxy [#14681](https://github.com/apache/pulsar/pull/14681)
+- [Proxy] Fail proxy startup if brokerServiceURL is missing scheme [#14682](https://github.com/apache/pulsar/pull/14682)
+- [Proxy] Suggestion put brokerProxyAllowedTargetPorts in proxy.conf [#15069](https://github.com/apache/pulsar/pull/15069)
+- [Proxy] Exit if proxy service fails to start [#15076](https://github.com/apache/pulsar/pull/15076)
+- [Proxy] Fix DNS server denial-of-service issue when DNS entry expires [#15403](https://github.com/apache/pulsar/pull/15403)
+- [Proxy] Remove unnecessary blocking DNS lookup in LookupProxyHandler [#15415](https://github.com/apache/pulsar/pull/15415)
+- [WebSocket] Fix MultiTopicReader#getConsumer ClassCastException [#15534](https://github.com/apache/pulsar/pull/15534)
+- [WebSocket] Add KeyStore support in WebSocket, Function Worker HTTPS Servers [#15084](https://github.com/apache/pulsar/pull/15084)
+- [WebSocket] Fix ClassCastException when user create MultiTopicReader [#14316](https://github.com/apache/pulsar/pull/14316)
+- [WebSocket] Support encryption in websocket proxy [#16234](https://github.com/apache/pulsar/pull/16234)
+- [Package Management] Fix the new path /data introduced regression [#15367](https://github.com/apache/pulsar/pull/15367)
+- [Schema] Add decode InputStream for Schema [#16659](https://github.com/apache/pulsar/pull/16659)
+- [Schema] Expose timestamp field for SchemaData&SchemaInfo [#16380](https://github.com/apache/pulsar/pull/16380)
+- [Schema] Add classLoader field for SchemaDefinition [#15915](https://github.com/apache/pulsar/pull/15915)
+- [Schema] Fix conversion of TimestampMillisConversion has no effect when Jsr310Conversion enabled [#15863](https://github.com/apache/pulsar/pull/15863)
+- [Schema] Ensure the deletion consistency of topic and schema [#14608](https://github.com/apache/pulsar/pull/14608)
+- [Tiered Storage] Shared subscription: improvement with offloaded ledgers [#16417](https://github.com/apache/pulsar/pull/16417)
+- [Tiered Storage] Fix the wrong secret key name get from env [#15814](https://github.com/apache/pulsar/pull/15814)
+- [Tiered Storage] Add pure S3 provider for the offloader [#15710](https://github.com/apache/pulsar/pull/15710)
+- [Tiered Storage] Reduce cpu usage when offloading the ledger [#15063](https://github.com/apache/pulsar/pull/15063)
+- [Tiered Storage] Fix potential NPE in MockManagedLedger [#15006](https://github.com/apache/pulsar/pull/15006)
+- [Tiered Storage] Add API to scan objects on Tiered Storage [#14930](https://github.com/apache/pulsar/pull/14930)
+- [Tiered Storage] Fix incorrect entryId in warn log when reading entry from tiered storage [#14685](https://github.com/apache/pulsar/pull/14685)
+- Remove cmd-line level test retries [#16524](https://github.com/apache/pulsar/pull/16524)
+- Fix potential incompatible java opts caused by IS_JAVA_8 [#15444](https://github.com/apache/pulsar/pull/15444)
+- Remove obsolete jdk11 and errorprone-jdk11 maven profiles [#15505](https://github.com/apache/pulsar/pull/15505)
+- Remove internal dependency: pulsar-functions-instance [#14925](https://github.com/apache/pulsar/pull/14925)
+- Enable retries for apt-get when building Pulsar docker image [#14513](https://github.com/apache/pulsar/pull/15505)
+- Migrate Docker images and CI to Java 17 [#14355](https://github.com/apache/pulsar/pull/14355)
+
+### Library updates
+- Upgrade to Jetty to 9.4.48.v20220622 [#16520](https://github.com/apache/pulsar/pull/16520)
+- Bump jackson version from 2.13.2 to 2.13.3 [#16508](https://github.com/apache/pulsar/pull/16508)
+- Bump maven-dependency-plugin to 3.3.0 [#16318](https://github.com/apache/pulsar/pull/16318)
+- Bump os-maven-plugin version from 1.4.1.Final to 1.7.0 [#16308](https://github.com/apache/pulsar/pull/16308)
+- Bump presto.version to run PrestoServer on JDK11+ [#16163](https://github.com/apache/pulsar/pull/16163)
+- Update fastjson version to 1.2.83 [#16148](https://github.com/apache/pulsar/pull/16148)
+- Bump pyyaml from 5.3.1 to 5.4.1 to solve CVE-2020-14343 [#15989](https://github.com/apache/pulsar/pull/15989)
+- Bump spring version to 5.3.20 to solve CVE-2022-22970 [#15699](https://github.com/apache/pulsar/pull/15699)
+- Bump snappy zstd version to fix CompressorCodecBackwardCompatTest on Apple M1 [#15698](https://github.com/apache/pulsar/pull/15698)
+- Athenz: do not use uber-jar and bump to 1.10.50 to remove jackson-databind shaded dependency [#14884](https://github.com/apache/pulsar/pull/14884)
+- Remove --illegal-access errors resulting from Google Guice - Pulsar IO, Offloaders and Pulsar SQL - Bump Guice to 5.1.0 [#14300](https://github.com/apache/pulsar/pull/14300)
+- Bump prometheus client version from 0.5.0 to 0.15.0 [#13785](https://github.com/apache/pulsar/pull/13785)
+- Upgrade log4j2 version to 2.18.0 [#16884](https://github.com/apache/pulsar/pull/16884
+
+### Documentation
+- Simplify documentation release and maintenance strategy [#16637](https://github.com/apache/pulsar/issues/16637)
+- Enable the anchoring for REST API doc links [#127](https://github.com/apache/pulsar-site/pull/127)
+- Publish REST API docs for [lookup](https://pulsar.apache.org/lookup-rest-api/?version=master) related operations [#16621](https://github.com/apache/pulsar/pull/16621)
+- Add instructions about [how to run CI from fork](https://pulsar.apache.org/contributing/#ci-testing-in-your-fork) to the Contribution Guide [#15535](https://github.com/apache/pulsar/pull/15535)
+- Information architecture redesigns and improvements for [Pulsar Functions](https://pulsar.apache.org/docs/next/functions-overview) and add a new topic about [how to get started](https://pulsar.apache.org/docs/next/functions-quickstart) [#15975](https://github.com/apache/pulsar/pull/15975)
+- Add a comprehensive reference table about [YAML configurations](https://pulsar.apache.org/docs/next/functions-cli) of Pulsar Functions [#15389](https://github.com/apache/pulsar/pull/15389)
+- Add docs about how to use [basic authentication](https://pulsar.apache.org/docs/next/security-basic-auth) [#15734](https://github.com/apache/pulsar/pull/15734)
+- Add docs about [system topic](https://pulsar.apache.org/docs/next/concepts-messaging#system-topic) [#14795](https://github.com/apache/pulsar/pull/14795)
+- Add docs about [isolation deployments](https://pulsar.apache.org/docs/next/administration-isolation) [#15802](https://github.com/apache/pulsar/pull/15802)
+- Add more concepts and tasks about [bookie isolation](https://pulsar.apache.org/docs/next/administration-isolation-bookie) [#16843](https://github.com/apache/pulsar/pull/16843)
+- Add docs about [anti-affinity namespace distribution across failure domains](https://pulsar.apache.org/docs/next/administration-load-balance#distribute-anti-affinity-namespaces-across-failure-domains) [#16069](https://github.com/apache/pulsar/pull/16069)
+- Add an introductory table about [BookKeeper recovery metrics](https://pulsar.apache.org/docs/next/reference-metrics#replication-metrics) [#16554](https://github.com/apache/pulsar/pull/16554)
+

Review Comment:
   @Technoboy- can we add website updates as below? 
   (These improvements are related to both doc and website, but more related to the website, workflow, and overall content experience, so I categorize them as "website")
   
   
   ```
   ### Website
   
   - [feat][website] language support is added for pulsar-admin function flags [#16853](https://github.com/apache/pulsar/pull/16853)
   - [feat][website] line number is shown in code blocks [#75](https://github.com/apache/pulsar-site/pull/75)
   - [feat][website] announcement bar is shown on Pulsar main page [#76](https://github.com/apache/pulsar-site/pull/76)
   - [feat][website] badges are shown in README [#16233](https://github.com/apache/pulsar/pull/16233)
   - [feat][website] tabs can be synced [#15812](https://github.com/apache/pulsar/pull/15812)
   - [improve][website] tabs are highlighted [#134](https://github.com/apache/pulsar-site/pull/134)
   - [fix][website] language highlights can work consistently [#15919](https://github.com/apache/pulsar/pull/15919)
   - [fix][website] toc are highlighted correctly when scrolling [#137](https://github.com/apache/pulsar-site/pull/137)
   ```
   
   @SignorMercurio do I miss anything?
   I do not add "automate configuration doc task" since it's WIP
   
   / cc @urfreespace 



##########
site2/website-next/release-notes/versioned/pulsar-2.11.0.md:
##########
@@ -0,0 +1,484 @@
+---
+id: pulsar-2.11.0
+title: Apache Pulsar 2.11.0 
+sidebar_label: Apache Pulsar 2.11.0 
+---
+
+#### 2022-08-16
+
+### Important notice
+- Rename Pulsar txn metrics to specify OpenMetrics [#16581](https://github.com/apache/pulsar/pull/16581)
+- Rename Pulsar schema metrics to specify OpenMetrics [#16610](https://github.com/apache/pulsar/pull/16610)
+- Rename Pulsar lb metrics to specify OpenMetrics [#16611](https://github.com/apache/pulsar/pull/16611)
+- Remove jul-to-slf4j #16320 [#16320](https://github.com/apache/pulsar/pull/16320)
+- Fix get non-persistent topics issue in Namespaces [#16170](https://github.com/apache/pulsar/pull/16170)
+- Fix producer/consume permission can’t get schema [#15956](https://github.com/apache/pulsar/pull/15956)
+- Add verification for configured default backlog quota and retention [#15441](https://github.com/apache/pulsar/pull/15441)
+- Fix broker LoadBalance uneffective [#15314](https://github.com/apache/pulsar/pull/15314)
+- Ensure the deletion consistency of topic and schema [#14608](https://github.com/apache/pulsar/pull/14608)
+- Transaction cumulative ack redeliver change [#14371](https://github.com/apache/pulsar/pull/14371)
+- Bump prometheus client version from 0.5.0 to 0.15.0 [#13785](https://github.com/apache/pulsar/pull/13785)
+- [PIP-158] Split client TLS transport encryption from authentication [#15634](https://github.com/apache/pulsar/pull/15634)
+- [PIP-155] Removed Python 2 support [#15376](https://github.com/apache/pulsar/pull/15376)
+- [PIP-156] Build Pulsar Server on Java 17 [#15264](https://github.com/apache/pulsar/pull/15264)
+- [PIP-162] Enable system topic by default [#15619](https://github.com/apache/pulsar/pull/15619)
+- [PIP-174] New managed ledger entry cache implementation [#15955](https://github.com/apache/pulsar/pull/15955)
+
+### PIPs
+- [PIP 37] Support chunking with Shared subscription [#16202](https://github.com/apache/pulsar/pull/16202)
+- [PIP-74] Pulsar client memory limits [#14400](https://github.com/apache/pulsar/pull/14400)
+- [PIP-81] Split createNewMetadataLedger into multiple methods for reuse [#15425](https://github.com/apache/pulsar/pull/15425)
+- [PIP 97] Update Authentication Interfaces to Include Async Authentication Methods [#12104](https://github.com/apache/pulsar/pull/12104)
+- [PIP-100] Support pluggable topic factory [#12235](https://github.com/apache/pulsar/pull/12235)
+- [PIP-105] Store Subscription properties [#15757](https://github.com/apache/pulsar/pull/15757)
+- [PIP-117] Change Pulsar standalone defaults [#15478](https://github.com/apache/pulsar/pull/15478)
+- [PIP-132] Include message header size when check maxMessageSize for non-batch message on the client side. [#14007](https://github.com/apache/pulsar/pull/14007)
+- [PIP-136] Sync Pulsar metadata across multiple clouds [#16425](https://github.com/apache/pulsar/pull/16425)
+- [PIP-143] Support split bundle by specified boundaries [#13796](https://github.com/apache/pulsar/pull/13796)
+- [PIP-145] Improve performance of regex subscriptions [#14505](https://github.com/apache/pulsar/pull/14505)
+- [PIP-146] ManagedCursorInfo compression [#14542](https://github.com/apache/pulsar/pull/14542)
+- [PIP 149] Making the REST Admin API fully async [#14365](https://github.com/apache/pulsar/issues/14365)
+- [PIP-152] Support subscription level dispatch rate limiter setting [#15295](https://github.com/apache/pulsar/issues/15295)
+- [PIP-153] Optimize metadataPositions in MLPendingAckStore [#15137](https://github.com/apache/pulsar/pull/15137)
+- [PIP-160] Make transactions work more efficiently by aggregation operation for transaction log and pending ack store [#15370](https://github.com/apache/pulsar/issues/15370)
+- [PIP-161] Exclusive Producer: ability to fence out an existing Producer [#15488](https://github.com/apache/pulsar/pull/15488)
+- [PIP-163] Add lowWaterMark check before appending entry to TB [#15424](https://github.com/apache/pulsar/pull/15424)
+- [PIP-166] Function add MANUAL delivery semantics [#16279](https://github.com/apache/pulsar/pull/16279)
+- [PIP-179] Support the admin API to check unknown request parameters [#16135](https://github.com/apache/pulsar/issues/16135)
+- [PIP-181] Pulsar Shell [#16250](https://github.com/apache/pulsar/issues/16250)
+- [PIP-184] Topic specific consumer priorityLevel [#16715](https://github.com/apache/pulsar/issues/16715)
+- [PIP-187] Add API to analyze a subscription backlog and provide a accurate value [#16545](https://github.com/apache/pulsar/issues/16545)
+
+### Broker
+- [PIP 81] Split the individual acknowledgments into multiple entries
+  - Add range set wrapper to support record dirty ledgers [#15607](https://github.com/apache/pulsar/pull/15607)
+  - Notifications for faster topic discovery [#16062](https://github.com/apache/pulsar/pull/16062)
+  - Split createNewMetadataLedger into multiple methods for reuse [#15425](https://github.com/apache/pulsar/pull/15425)
+- [PIP 105] Store Subscription properties
+  - Store Subscription properties [#15757](https://github.com/apache/pulsar/pull/15757)
+  - Pulsar Admin: create subscription with Properties [#15503](https://github.com/apache/pulsar/pull/15503)
+  - Fix error on recycled SubscriptionPropertiesList [#15335](https://github.com/apache/pulsar/pull/15335)
+- [PIP 160] Make transactions work more efficiently by aggregation operation for transaction log and pending ack store
+  - Pending ack log store enables the batch feature [#16707](https://github.com/apache/pulsar/pull/16707)
+  - Metrics stats of Transaction buffered writer [#16758](https://github.com/apache/pulsar/pull/16758)
+  - Transaction buffered writer supports Timer [#16727](https://github.com/apache/pulsar/pull/16727)
+  - Transaction log store enables the batch feature [#16685](https://github.com/apache/pulsar/pull/16685)
+  - Protocol changes and configuration changes for transaction batch log [#16617](https://github.com/apache/pulsar/pull/16617)
+  - Txn buffered writer for transaction log batch [#16428](https://github.com/apache/pulsar/pull/16428)
+- [PIP 145] Improve performance of regex subscriptions
+  - Enable evaluating subscription pattern on broker side [#14804](https://github.com/apache/pulsar/pull/14804)
+  - Notifications for faster topic discovery [#16062](https://github.com/apache/pulsar/pull/16062)
+- [PIP-156] Build Pulsar Server on Java 17
+  - Build changes by dropping some required checks [#15496](https://github.com/apache/pulsar/pull/15496)
+  - Build Pulsar Server on Java 17 [#15264](https://github.com/apache/pulsar/pull/15264)
+- Optimize getting ledger and entry id from entry [#17108](https://github.com/apache/pulsar/pull/17108)
+- Fix calculate avg message per entry [#17046](https://github.com/apache/pulsar/pull/17046)
+- Bundle-data metadata leak because of bundlestats was not clean [#17095](https://github.com/apache/pulsar/pull/17095)
+- Duplicate ByteBuffer when Caching Backlogged Consumers [#17105](https://github.com/apache/pulsar/pull/17105)
+- Fix offload read handle NPE [#17056](https://github.com/apache/pulsar/pull/17056)
+- Move the state check forward [#17020](https://github.com/apache/pulsar/pull/17020)
+- Improve naming for delete topic error [#16965](https://github.com/apache/pulsar/pull/16965)
+- Increment topic stats outbound message counters and update rate after messages have been written to the TCP/IP connection [#17043](https://github.com/apache/pulsar/pull/17043)
+- Prevent StackOverFlowException in SHARED subscription [#16968](https://github.com/apache/pulsar/pull/16968)
+- Improve the package download process [#16365](https://github.com/apache/pulsar/pull/16365)
+- Skip mis-configured resource usage(>100%) in load balancer [#16937](https://github.com/apache/pulsar/pull/16937)
+- Not allow to terminate system topic [#17006](https://github.com/apache/pulsar/pull/17006)
+- Follow up on #16968 to restore some behavior in PersistentDispatcherMultipleConsumers [#17018](https://github.com/apache/pulsar/pull/17018)
+- Remove exception log when access status.html [#17025](https://github.com/apache/pulsar/pull/17025)
+- Remove unnecessary lock on the stats thread [#16983](https://github.com/apache/pulsar/pull/16983)
+- Fix memory leak if entry exists in cache [#16996](https://github.com/apache/pulsar/pull/16996)
+- Fix ConcurrentModificationException when ModularLoadManagerImpl start [#16953](https://github.com/apache/pulsar/pull/16953)
+- Split TLS transport encryption support from authentication [#16819](https://github.com/apache/pulsar/pull/16819)
+- Support start multiple bookies for BKCluster [#16847](https://github.com/apache/pulsar/pull/16847)
+- Fix MaxQueueSize semaphore release leak in createOpSendMsg [#16915](https://github.com/apache/pulsar/pull/16915)
+- PulsarLedgerManager to pass correct error code to BK client [#16857](https://github.com/apache/pulsar/pull/16857)
+- Improve get the basic authentication config [#16526](https://github.com/apache/pulsar/pull/16526)
+- Change delete pending ack position from foreach to firstKey [#16927](https://github.com/apache/pulsar/pull/16927)
+- Adapt basic authentication configuration with prefix [#16935](https://github.com/apache/pulsar/pull/16935)
+- Fix misleading -c option in pulsar standalone [#16838](https://github.com/apache/pulsar/pull/16838)
+- Fix rack awareness cache expiration data race [#16825](https://github.com/apache/pulsar/pull/16825)
+- Fix Repeated messages of shared dispatcher [#16812](https://github.com/apache/pulsar/pull/16812)
+- Avoid IllegalStateException while client_version is not set [#16788](https://github.com/apache/pulsar/pull/16788)
+- Optimize concurrent collection's shrink logic [#16754](https://github.com/apache/pulsar/pull/16754)
+- Support clear old bookie data for BKCluster [#16744](https://github.com/apache/pulsar/pull/16744)
+- Fix consumer does not abide by the max unacks limitation for Key_Shared subscription [#16718](https://github.com/apache/pulsar/pull/16718)
+- Avoid ConcurrentModificationException for ModularLoadManagerImpl.cleanupDeadBrokersData() [#16690](https://github.com/apache/pulsar/pull/16690)
+- Retry to delete the namespace if new topics created during the namespace deletion [#16676](https://github.com/apache/pulsar/pull/16676)
+- Fix consumer does not abide by the max unacks limitation for Shared subscription [#16670](https://github.com/apache/pulsar/pull/16670)
+- Support for get token from HTTP params [#16650](https://github.com/apache/pulsar/pull/16650)
+- Make defaultOffloader create after offloaderStats overrides [#16638](https://github.com/apache/pulsar/pull/16638)
+- BadVersionException when splitting bundles, delay 100ms and try again [#16612](https://github.com/apache/pulsar/pull/16612)
+- PulsarLedgerManager: add missed return statement [#16607](https://github.com/apache/pulsar/pull/16607)
+- The configuration loadBalancerNamespaceMaximumBundles is invalid [#16552](https://github.com/apache/pulsar/pull/16552)
+- Retry when DistributedIdGenerator has BadVersion error [#16491](https://github.com/apache/pulsar/pull/16491)
+- Fixed error when delayed messages trackers state grows to >1.5GB [#16490](https://github.com/apache/pulsar/pull/16490)
+- Fix RawReader hasMessageAvailable returns true when no messages [#16443](https://github.com/apache/pulsar/pull/16443)
+- Fix No such ledger exception [#16420](https://github.com/apache/pulsar/pull/16420)
+- Add config maxUnloadBundleNumPerShedding for UniformLoadShedder [#16409](https://github.com/apache/pulsar/pull/16409)
+- Fix etcd cluster error and add test for etcd cluster [#16309](https://github.com/apache/pulsar/pull/16309)
+- Skip reading more entries for a pending read with no more entries [#16400](https://github.com/apache/pulsar/pull/16400)
+- Recycle OpReadEntry in some corner cases [#16399](https://github.com/apache/pulsar/pull/16399)
+- Add dynamic configuration for UniformLoadShedder [#16391](https://github.com/apache/pulsar/pull/16391)
+- Fix RawReader out of order [#16390](https://github.com/apache/pulsar/pull/16390)
+- Create the cursor ledger lazily to improve the subscribe performance [#16389](https://github.com/apache/pulsar/pull/16389)
+- Release the entry in getEarliestMessagePublishTimeOfPos [#16386](https://github.com/apache/pulsar/pull/16386)
+- Update cpu ResourceUsage before updating SystemResourceUsage usage [#16366](https://github.com/apache/pulsar/pull/16366)
+- Use shared broker client scheduled executor provider [#16338](https://github.com/apache/pulsar/pull/16338)
+- Do not use IO thread for consumerFlow in Shared subscription [#16304](https://github.com/apache/pulsar/pull/16304)
+- Provide new load balance placement strategy implementation based on the least resource usage with weight [#16281](https://github.com/apache/pulsar/pull/16281)
+- Fix TopicTransactionBuffer ledger apend marker throw ManagedLedgerAlreadyClosedException [#16265](https://github.com/apache/pulsar/pull/16265)
+- Avoid go through all the consumers to get the message ack owner [#16245](https://github.com/apache/pulsar/pull/16245)
+- Reduce the consumers list sort by priority level [#16243](https://github.com/apache/pulsar/pull/16243)
+- Reduce the re-schedule message read operation for PersistentDispatcherMultipleConsumers [#16241](https://github.com/apache/pulsar/pull/16241)
+- Fix npe when invoke replaceBookie. [#16239](https://github.com/apache/pulsar/pull/16239)
+- Fix getInternalStats occasional lack of LeaderInfo again [#16238](https://github.com/apache/pulsar/pull/16238)
+- Fix NPE when drop backlog for time limit [#16235](https://github.com/apache/pulsar/pull/16235)
+- Improve error msg when client is unauthorized [#16224](https://github.com/apache/pulsar/pull/16224)
+- Fix compaction subscription acknowledge Marker msg issue [#16205](https://github.com/apache/pulsar/pull/16205)
+- Fix subscribe dispatcher limiter not be initialized [#16175](https://github.com/apache/pulsar/pull/16175)
+- Use LinkedHashSet for config items of type Set to preserve elements order [#16138](https://github.com/apache/pulsar/pull/16138)
+- Fix topic dispatch rate limiter not init on broker-level [#16084](https://github.com/apache/pulsar/pull/16084)
+- Fix NPE when get /admin/v2/namespaces/public/default/maxTopicsPerNamespace [#16076](https://github.com/apache/pulsar/pull/16076)
+- Add config to allow deliverAt time to be strictly honored [#16068](https://github.com/apache/pulsar/pull/16068)
+- Add switch for enable/disable distribute bundles evenly in LoadManager [#16059](https://github.com/apache/pulsar/pull/16059)
+- Fix thread safety issues in accessing ManagedCursorContainer.heap ArrayList [#16049](https://github.com/apache/pulsar/pull/16049)
+- Make invalid namespace and topic name logs more descriptive [#16047](https://github.com/apache/pulsar/pull/16047)
+- Terminate JVM when initialize-cluster-metadata command fails [#16039](https://github.com/apache/pulsar/pull/16039)
+- Avoid storing MessageMetadata instances returned by peekMessageMetadata [#15983](https://github.com/apache/pulsar/pull/15983)
+- Fix topic policies update not check message expiry [#15941](https://github.com/apache/pulsar/pull/15941)
+- Fix reach max tenants error if the tenant already exists [#15932](https://github.com/apache/pulsar/pull/15932)
+- Close transactionBufferClient before closing the internal Pulsar client [#15922](https://github.com/apache/pulsar/pull/15922)
+- Remove topic -> namespace cache of LedgerOffloaderStatsImpl [#15869](https://github.com/apache/pulsar/pull/15869)
+- Fix NPE when ledger id not found in OpReadEntry [#15837](https://github.com/apache/pulsar/pull/15837)
+- Fix topic-level replicator rate limiter not init [#15825](https://github.com/apache/pulsar/pull/15825)
+- Fix NPE in MessageDeduplication [#15820](https://github.com/apache/pulsar/pull/15820)
+- Configure DLog Bookie, Pulsar, and Admin clients via pass through config [#15818](https://github.com/apache/pulsar/pull/15818)
+- Fix the broker close hanged issue [#15755](https://github.com/apache/pulsar/pull/15755)
+- Disable memory limit controller in internal Pulsar clients [#15752](https://github.com/apache/pulsar/pull/15752)
+- Add timeout for unload namespace bundle [#15719](https://github.com/apache/pulsar/pull/15719)
+- Support schemaValidationEnforced on topic level [#15712](https://github.com/apache/pulsar/pull/15712)
+- Fix NPE when put value to RangeCache [#15707](https://github.com/apache/pulsar/pull/15707)
+- Fast return if ack cumulative illegal [#15695](https://github.com/apache/pulsar/pull/15695)
+- Fix creating producer failure when set backlog quota [#15663](https://github.com/apache/pulsar/pull/15663)
+- Fix logging in shutdown when broker shutdown [#15626](https://github.com/apache/pulsar/pull/15626)
+- Fix MetadataStoreException$NotFoundException while doing topic lookup [#15633](https://github.com/apache/pulsar/pull/15633)
+- Use dispatchRateLimiterLock to update dispatchRateLimiter [#15601](https://github.com/apache/pulsar/pull/15601)
+- Add .yaml suffix support for broker filter config file [#15600](https://github.com/apache/pulsar/pull/15600)
+- Added newline to end of standalone.conf [#15591](https://github.com/apache/pulsar/pull/15591)
+- Add decode InputStream for Schema [#16659](https://github.com/apache/pulsar/pull/16659)
+- Create "standalone" cluster when starting standalone server [#15583](https://github.com/apache/pulsar/pull/15583)
+- Close publishLimiter when disable it [#15520](https://github.com/apache/pulsar/pull/15520)
+- Enable SO_REUSEADDR on listen sockets for broker,proxy [#15517](https://github.com/apache/pulsar/pull/15517)
+- Fix to avoid TopicStatsImpl NPE even if producerName is null [#15502](https://github.com/apache/pulsar/pull/15502)
+- Close connection if a ping or pong message cannot be sent [#15382](https://github.com/apache/pulsar/pull/15382)
+- Introduce BitRateUnit for calculate bitrate [#15435](https://github.com/apache/pulsar/pull/15435)
+- Add verification for configured default backlog quota and retention [#15441](https://github.com/apache/pulsar/pull/15441)
+- Change unnecessary atomic to basic type [#15369](https://github.com/apache/pulsar/pull/15369)
+- Support shrink for ConcurrentSortedLongPairSet [#15354](https://github.com/apache/pulsar/pull/15354)
+- Use shrink map for message redelivery [#15342](https://github.com/apache/pulsar/pull/15342)
+- Fix precision error in UsageUnit [#15322](https://github.com/apache/pulsar/pull/15322)
+- Optimized namespace-level dispatcherRateLimiter update [#15315](https://github.com/apache/pulsar/pull/15315)
+- Fix broker LoadBalance uneffective [#15314](https://github.com/apache/pulsar/pull/15314)
+- Fix wrong unit of NIC speed on linux [#15304](https://github.com/apache/pulsar/pull/15304)
+- Fix totalEntries calculation problem in AbstractBaseDispatcher#filterEntriesForConsumere [#15298](https://github.com/apache/pulsar/pull/15298)
+- Fix resource group does not report usage [#15292](https://github.com/apache/pulsar/pull/15292)
+- Tidy up the system topic [#15252](https://github.com/apache/pulsar/pull/15252)
+- Fix race condition between timeout and completion in OpAddEntry [#15233](https://github.com/apache/pulsar/pull/15233)
+- Improve skipping of DNS resolution when creating AuthenticationDataHttp instance [#15228](https://github.com/apache/pulsar/pull/15228)
+- Skip unnecessary DNS resolution when creating AuthenticationDataHttp instance [#15221](https://github.com/apache/pulsar/pull/15221)
+- Fix MessageDeduplication#inactiveProducers may not be persistence correctly [#15206](https://github.com/apache/pulsar/pull/15206)
+- Cancel fencedTopicMonitoringTask when topic closed normally [#15202](https://github.com/apache/pulsar/pull/15202)
+- Fix npe when doCacheEviction [#15184](https://github.com/apache/pulsar/pull/15184)
+- Make health check fail if dead locked threads are detected [#15155](https://github.com/apache/pulsar/pull/15155)
+- Fix parameter saslJaasBrokerSectionName in broker.conf [#15110](https://github.com/apache/pulsar/pull/15110)
+- Fix potential to add duplicated consumer [#15051](https://github.com/apache/pulsar/pull/15051)
+- Fix rewind failed when redeliverUnacknowledgedMessages [#15046](https://github.com/apache/pulsar/pull/15046)
+- Fix race condition in updating lastMarkDeleteEntry field [#15031](https://github.com/apache/pulsar/pull/15031)
+- Avoid heartbeat topic to offload [#15008](https://github.com/apache/pulsar/pull/15008)
+- Evicting cache data by the slowest markDeletedPosition [#14985](https://github.com/apache/pulsar/pull/14985)
+- Return if reset in progress [#14978](https://github.com/apache/pulsar/pull/14978)
+- Dynamic update broker-level subscribe-rate limter [#14890](https://github.com/apache/pulsar/pull/14890)
+- Fix wrong state for non-durable cursor [#14869](https://github.com/apache/pulsar/pull/14869)
+- Support advertised listeners for HTTP and HTTPS services [#14839](https://github.com/apache/pulsar/pull/14839)
+- Support dynamic update between non-zero values of topicPublisherThrottlingTickTimeMillis [#14782](https://github.com/apache/pulsar/pull/14782)
+- Support dynamic update between non-zero values of brokerPublisherThrottlingTickTimeMillis [#14759](https://github.com/apache/pulsar/pull/14759)
+- Fix incorrect entryId in warn log when reading entry from tiered storage [#14685](https://github.com/apache/pulsar/pull/14685)
+- Optimize PositionImpl toString, compareTo and hashCode methods [#14678](https://github.com/apache/pulsar/pull/14678)
+- Improve readability of ManagedCursorImpl source code [#14617](https://github.com/apache/pulsar/pull/14617)
+- Intercept ACK command by BrokerInterceptor [#14616](https://github.com/apache/pulsar/pull/14616)
+- Add filteredMsgCount for pulsar-admin broker-stats topics [#14531](https://github.com/apache/pulsar/pull/14531)
+- Fix NPE when subscription is already removed [#14363](https://github.com/apache/pulsar/pull/14363)
+- Fix backpressure handling in Jetty web server configuration [#14353](https://github.com/apache/pulsar/pull/14353)
+- Optimize find nics process [#14340](https://github.com/apache/pulsar/pull/14340)
+- Support pass http auth status [#14044](https://github.com/apache/pulsar/pull/14044)
+- Support caching to drain backlog consumers [#12258](https://github.com/apache/pulsar/pull/12258)
+- Strict bookie affinity group strategy [#12025](https://github.com/apache/pulsar/pull/12025)
+
+### Clients
+- [PIP 74] Pulsar client memory limits
+  - Support auto scaled consumer receiver queue [#14494](https://github.com/apache/pulsar/pull/14494)
+  - Support dynamic limit of consumer receiver queue [#14400](https://github.com/apache/pulsar/pull/14400)
+  - Support consumer client memory limit [#15216](https://github.com/apache/pulsar/pull/15216)
+- [Java] LastBatchSendNanoTime initialization [#17058](https://github.com/apache/pulsar/pull/17058)
+- [Java] Release semaphore before discarding messages in batchMessageContainer [#17019](https://github.com/apache/pulsar/pull/17019)
+- [Java] Reduce code duplication in admin client [#16377](https://github.com/apache/pulsar/pull/16377)
+- [Java] Remove redundant check for chunked message TotalChunkMsgSize in ConsumerImpl [#16797](https://github.com/apache/pulsar/pull/16797)
+- [Java] Fix client memory limit currentUsage leak and semaphore release duplicated in ProducerImpl [#16837](https://github.com/apache/pulsar/pull/16837)
+- [Java] Forget to update memory usage when invalid message [#16835](https://github.com/apache/pulsar/pull/16835)
+- [Java] Fix subscription topic name error [#16719](https://github.com/apache/pulsar/pull/16719)
+- [Java] Send CloseConsumer on client timeout [#16616](https://github.com/apache/pulsar/pull/16616)
+- [Java] Add message key if exists to deadLetter messages [#16615](https://github.com/apache/pulsar/pull/16615)
+- [Java] Make DeadLetterPolicy deserializable [#16513](https://github.com/apache/pulsar/pull/16513)
+- [Java] Improve performance of multi-topic consumer with more than one IO thread [#16336](https://github.com/apache/pulsar/pull/16336)
+- [Java] Add initialization for the OpSendMsg [#16256](https://github.com/apache/pulsar/pull/16256)
+- [Java] Replace ScheduledExecutor to improve performance of message consumption [#16236](https://github.com/apache/pulsar/pull/16236)
+- [Java] Fix large message sometimes cannot be split into chunks [#16196](https://github.com/apache/pulsar/pull/16196)
+- [Java] Only trigger the batch receive timeout when having pending batch receives requests [#16160](https://github.com/apache/pulsar/pull/16160)
+- [Java] Fix the startMessageId can't be respected as the ChunkMessageID [#16154](https://github.com/apache/pulsar/pull/16154)
+- [Java] Fix auto cluster failover can't resolve host bug [#16152](https://github.com/apache/pulsar/pull/16152)
+- [Java] Switch to rely on Netty for Hostname Verification [#15824](https://github.com/apache/pulsar/pull/15824)
+- [Java] Prevent the trigger running concurrently in the memory limit controller [#15737](https://github.com/apache/pulsar/pull/15737)
+- [Java] Fix messages sent by producers without schema cannot be decoded [#15622](https://github.com/apache/pulsar/pull/15622)
+- [Java] Remove sensitive msg from consumer/producer stats log [#15483](https://github.com/apache/pulsar/pull/15483)
+- [Java] Add pending messages information while print the producer stats [#15440](https://github.com/apache/pulsar/pull/15440)
+- [Java] Fix flaky BatchMessageTest by initializing lastBatchSendNanoTime [#15406](https://github.com/apache/pulsar/pull/15406)
+- [Java] Check consumer schema null in advance [#15327](https://github.com/apache/pulsar/pull/15327)
+- [Java] Fix inconsistent parameter of TopicPolicies.getSubscriptionDispatchRate [#15293](https://github.com/apache/pulsar/pull/15293)
+- [Java] Fix typo in ConsumerBuilder [#15194](https://github.com/apache/pulsar/pull/15194)
+- [Java] Fix performance regression with message listener [#15162](https://github.com/apache/pulsar/pull/15162)
+- [Java] ConsumerBuilderImpl can not set null to deadLetterPolicy [#14980](https://github.com/apache/pulsar/pull/14980)
+- [Java] Fix message publishing stuck when enabling batch [#14870](https://github.com/apache/pulsar/pull/14870)
+- [Java] Returns immutable data set when use TableView [#14833](https://github.com/apache/pulsar/pull/14833)
+- [Java] Avoid timer task run before previous subscribe complete [#14818](https://github.com/apache/pulsar/pull/14818)
+- [Java] Support Reader Interceptor [#14729](https://github.com/apache/pulsar/pull/14729)
+- [Java] Optimize pause when creating sub consumers in multi-topic consumer [#14566](https://github.com/apache/pulsar/pull/14566)
+- [C++] Fix rpm and deb packaging [#17064](https://github.com/apache/pulsar/pull/17064)
+- [C++] Add producerId to the log of closed producer [#17079](https://github.com/apache/pulsar/pull/17079)
+- [C++] Add basic authentication [#15822](https://github.com/apache/pulsar/pull/15822)
+- [C++] Add getLastMessageIdAsync in Consumer [#16182](https://github.com/apache/pulsar/pull/16182)
+- [C++] Rename function name: pulsar_producer_configuration_set_crypto_failure_action [#16031](https://github.com/apache/pulsar/pull/16031)
+- [C++] Generate correct well-known OpenID configuration URL [#15928](https://github.com/apache/pulsar/pull/15928)
+- [C++] Unblock all threads when Pulsar client is closed [#15726](https://github.com/apache/pulsar/pull/15726)
+- [C++] Avoid race condition causing double callback on close [#15508](https://github.com/apache/pulsar/pull/15508)
+- [C++] Wait until event loop terminates when closing the Client [#15316](https://github.com/apache/pulsar/pull/15316)
+- [C++] Remove the flaky and meaningless tests [#15271](https://github.com/apache/pulsar/pull/15271)
+- [C++] Fix UnknownError might be returned for a partitioned producer [#15161](https://github.com/apache/pulsar/pull/15161)
+- [C++] Fix single message metadata not set correctly [#15072](https://github.com/apache/pulsar/pull/15072)
+- [C++] Add subscription properties to consumer for cpp [#15020](https://github.com/apache/pulsar/pull/15020)
+- [C++] Fix connection is not closed when broker closes the connection to proxy[#14070](https://github.com/apache/pulsar/pull/14070)
+- [C++] Fix send callback might not be invoked in key based batching [#14898](https://github.com/apache/pulsar/pull/14898)
+- [C++] Fix C++ client compile error because of keyword optional is redundant in PaddingDemo.proto [#14862](https://github.com/apache/pulsar/pull/14862)
+- [C++] Fix segmentation fault when creating socket failed [#14834](https://github.com/apache/pulsar/pull/14834)
+- [C++] Fix the race condition of connect timeout task [#14823](https://github.com/apache/pulsar/pull/14823)
+- [C++] Fix producer is never destructed until client is closed [#14797](https://github.com/apache/pulsar/pull/14797)
+- [C++] Close messages_ when PartitionedConsumer is closed [#16887](https://github.com/apache/pulsar/pull/16887)
+- [Python] Add getLastMessageIdAsync C binding [#16255](https://github.com/apache/pulsar/pull/16255)
+- [Python] Fixed reserved keys is not removed when JsonSchema being encoded [#15947](https://github.com/apache/pulsar/pull/15947)
+- [Python] Use MacOS 10.15 as the target OS version for Python wheel files [#15788](https://github.com/apache/pulsar/pull/15788)
+- [Python] Removed dependencies only need by Python2 [#15460](https://github.com/apache/pulsar/pull/15460)
+- [Python] Removed scripts to create wheel files in vagrant VMs [#15459](https://github.com/apache/pulsar/pull/15459)
+- [Python] Adjusted script to build wheel for Python 3.7 on Mac [#15407](https://github.com/apache/pulsar/pull/15407)
+- [Python] Change python cp35-cp35m lib build version to manylinux1 [#15180](https://github.com/apache/pulsar/pull/15180)
+- [Python] Generate universal2 wheel files for MacOS [#15054](https://github.com/apache/pulsar/pull/15054)
+- [Python] Added script to generate Wheel files for MacOS [#15024](https://github.com/apache/pulsar/pull/15024)
+- [Python] Added build for wheels on Alpine linux [#15016](https://github.com/apache/pulsar/pull/15016)
+- [Python] Added build for Arm64 on Linux and Python 3.10 [#15004](https://github.com/apache/pulsar/pull/15004)
+
+### Pulsar IO and Pulsar Functions
+- [Functions] Add the ability to customize logging level for Go & Python functions [#16939](https://github.com/apache/pulsar/pull/16939)
+- [Functions] Fixed error when user starts with the pulsar functions local runner [#16565](https://github.com/apache/pulsar/pull/16565)
+- [Functions] Fix netty.DnsResolverUtil compat issue on JDK9+ for the function Runtimes [#16423](https://github.com/apache/pulsar/pull/16423)
+- [Functions] Ensure bytes is a well-formed UTF-8 byte sequence when decode the FunctionState bytes to string [#16199](https://github.com/apache/pulsar/pull/16199)
+- [Functions] Support Record<?> as Function output type [#16041](https://github.com/apache/pulsar/pull/16041)
+- [Functions] Configure DLog Bookie, Pulsar, and Admin clients via pass through config [#15818](https://github.com/apache/pulsar/pull/15818)
+- [Functions] Disable memory limit controller in internal Pulsar clients [#15752](https://github.com/apache/pulsar/pull/15752)
+- [Functions] Provide default error handler for function log appender [#15728](https://github.com/apache/pulsar/pull/15728)
+- [Functions] Support disabling non-TLS service port [#15328](https://github.com/apache/pulsar/pull/15328)
+- [Functions] Check executor null when close the FileSource [#15247](https://github.com/apache/pulsar/pull/15247)
+- [Functions] Fix UserConfigFunction example [#15240](https://github.com/apache/pulsar/pull/15240)
+- [Functions] Add a cache of versioned KeyValueSchemaImpl [#15122](https://github.com/apache/pulsar/pull/15122)
+- [Functions] Add KeyStore support in WebSocket, Function Worker HTTPS Servers [#15084](https://github.com/apache/pulsar/pull/15084)
+- [Functions] Handle NPE when getLeader returns null [#15058](https://github.com/apache/pulsar/pull/15058)
+- [Functions] Remove internal dependency: pulsar-functions-instance [#14925](https://github.com/apache/pulsar/pull/14925)
+- [Functions] Allow a Function<GenericObject,?> to access the original Schema of the Message and use it [#14847](https://github.com/apache/pulsar/pull/14847)
+- [Functions] Fix pulsar-managed runtimes failed start function with package URL from package management service [#14814](https://github.com/apache/pulsar/pull/14814)
+- [Functions] Set function channel to idle to prevent DNS resolution of deleted pod [#14750](https://github.com/apache/pulsar/pull/14750)
+- [Functions] Remove extra call to gi.stats.incrTotalProcessedSuccessfully() [#12316](https://github.com/apache/pulsar/pull/12316)
+- [Functions] Fix python instance not process zip file correctly [#16697](https://github.com/apache/pulsar/pull/16697)
+- [Functions] Missing assertion in KubernetesRuntimeTest::verifyJavaInstance [#16747](https://github.com/apache/pulsar/pull/16747)
+- [IO Connector] IOConfigUtils support required and defaultValue annotations [#16785](https://github.com/apache/pulsar/pull/16785)
+- [IO Connector] Fixed kafka source config for pulsar-io-kafka when consumerConfigProperties="" [#16731](https://github.com/apache/pulsar/pull/16731)
+- [IO Connector] Add reader config to pulsar-io-debezium and pulsar-io-kafka-connect-adaptor [#16675](https://github.com/apache/pulsar/pull/16675)
+- [IO Connector] Support transactions for JDBC connector [#16468](https://github.com/apache/pulsar/pull/16468)
+- [IO Connector] JDBC sinks: support upsert and row deletion [#16448](https://github.com/apache/pulsar/pull/16448)
+- [IO Connector] Add getSourceConfig method on SourceContext [#16305](https://github.com/apache/pulsar/pull/16305)
+- [IO Connector] KCA sinks: fix offset mapping when sanitizeTopicName=true [#15950](https://github.com/apache/pulsar/pull/15950)
+- [IO Connector] Allow pulsar_tool_env.sh PULSAR_MEM to be Overridden [#15868](https://github.com/apache/pulsar/pull/15868)
+- [IO Connector] JDBC sinks: support Avro specific datatypes [#15845](https://github.com/apache/pulsar/pull/15845)
+- [IO Connector] Sink support custom acknowledge type [#15491](https://github.com/apache/pulsar/pull/15491)
+- [IO Connector] Add getSinkConfig method to SinkContext [#15482](https://github.com/apache/pulsar/pull/15482)
+- [IO Connector] Handle Avro collections native types (GenericData.Array and Utf8 map keys) [#15432](https://github.com/apache/pulsar/pull/15432)
+- [IO Connector] Handle Avro collections native types (GenericData.Array and Utf8 map keys) [#15430](https://github.com/apache/pulsar/pull/15430)
+- [IO Connector] Add hashed id support [#15428](https://github.com/apache/pulsar/pull/15428)
+- [IO Connector] ElasticSearch Sink: option to output canonical key fields (JSON and Avro) [#15426](https://github.com/apache/pulsar/pull/15426)
+- [IO Connector] Replaced "Device" with "measurement" [#15416](https://github.com/apache/pulsar/pull/15416)
+- [IO Connector] Enable bulk flushing scheduling by default [#15244](https://github.com/apache/pulsar/pull/15244)
+- [IO Connector] Set sinkType in config file [#15174](https://github.com/apache/pulsar/pull/15174)
+- [IO Connector] Add a cache of versioned KeyValueSchemaImpl [#15122](https://github.com/apache/pulsar/pull/15122)
+- [IO Connector] Support 4paradigm/OpenMLDB jdbc sink connector [#15064](https://github.com/apache/pulsar/pull/15064)
+- [IO Connector] ElasticSearch Sink: option to disable SSL certificate validation [#14997](https://github.com/apache/pulsar/pull/14997)
+- [IO Connector] Add FULL_MESSAGE_IN_JSON_EXPAND_VALUE message format to Kinesis sink [#14929](https://github.com/apache/pulsar/pull/14929)
+
+### Observability
+- [Broker] Add per-subscription EntryFilter metrics [#16932](https://github.com/apache/pulsar/pull/16932)
+- [Broker] Expose topic level storage write and read rate metrics [#16855](https://github.com/apache/pulsar/pull/16855)
+- [Broker] Rename Pulsar lb metrics to specify OpenMetrics [#16611](https://github.com/apache/pulsar/pull/16611)
+- [Broker] Rename Pulsar schema metrics to specify OpenMetrics [#16610](https://github.com/apache/pulsar/pull/16610)
+- [Broker] Rename Pulsar txn metrics to specify OpenMetrics [#16581](https://github.com/apache/pulsar/pull/16581)
+- [Broker] Optimise msgOutCounter and bytesOutCounter [#16214](https://github.com/apache/pulsar/pull/16214)
+- [Broker] Fail to expose managed ledger client stats to prometheus if bookkeeperClientExposeStatsToPrometheus is true [#16219](https://github.com/apache/pulsar/pull/16219)
+- [Broker] Add metrics for pulsar web service thread pool [#14742](https://github.com/apache/pulsar/pull/14742)
+- [Broker] Add support of PrometheusRawMetricsProvider for the Pulsar-Proxy [#14681](https://github.com/apache/pulsar/pull/14681)
+- [Broker] Add filteredMsgCount for pulsar-admin broker-stats topics [#14531](https://github.com/apache/pulsar/pull/14531)
+- [Broker] Improve /metrics endpoint performance [#14453](https://github.com/apache/pulsar/pull/14453)
+- [Broker] Offloader metrics [#13833](https://github.com/apache/pulsar/pull/13833)
+- [Broker] Improve /metrics endpoint performance [#14453](https://github.com/apache/pulsar/pull/14453)
+- [Broker] add metric for InMemoryDelayedDeliveryTracker's memory usage [#15867](https://github.com/apache/pulsar/pull/15867)
+
+### CLI
+- [Pulsar Admin] Unset namespace policy to improve deleting namespace [#17033](https://github.com/apache/pulsar/pull/17033)
+- [Pulsar Admin] Reduce PartitionedStats local REST call [#16916](https://github.com/apache/pulsar/pull/16916)
+- [Pulsar Admin] Make some police methods async in Namespaces [#16881](https://github.com/apache/pulsar/pull/16881)
+- [Pulsar Admin] Expose the last consumed flow timestamp for consumer stats [#16817](https://github.com/apache/pulsar/pull/16817)
+- [Pulsar Admin] Make some methods async in Namespaces [#16814](https://github.com/apache/pulsar/pull/16814)
+- [Pulsar Admin] Dynamic configuration for check unknown request parameters [#16781](https://github.com/apache/pulsar/pull/16781)
+- [Pulsar Admin] Make offload police methods async in Namespaces [#16760](https://github.com/apache/pulsar/pull/16760)
+- [Pulsar Admin] Support the admin API to check unknown request [#16577](https://github.com/apache/pulsar/pull/16577)
+- [Pulsar Admin] Make getBacklogQuotaMap method async in Namespaces [#16504](https://github.com/apache/pulsar/pull/16504)
+- [Pulsar Admin] Make GetMessageIdByTimestamp pure async [#16446](https://github.com/apache/pulsar/pull/16446)
+- [Pulsar Admin] Make splitNamespaceBundle and getTopicHashPositions async [#16411](https://github.com/apache/pulsar/pull/16411)
+- [Pulsar Admin] Make AutoSubscriptionCreation async [#16329](https://github.com/apache/pulsar/pull/16329)
+- [Pulsar Admin] Make SubscriptionExpirationTime method async [#16328](https://github.com/apache/pulsar/pull/16328)
+- [Pulsar Admin] Make some method on permission async [#16324](https://github.com/apache/pulsar/pull/16324)
+- [Pulsar Admin] Make unloadNamespaceBundle async [#16313](https://github.com/apache/pulsar/pull/16313)
+- [Pulsar Admin] Make Namespaces.deleteNamespaceBundle async [#16287](https://github.com/apache/pulsar/pull/16287)
+- [Pulsar Admin] Make deleteTopic method async [#16232](https://github.com/apache/pulsar/pull/16232)
+- [Pulsar Admin] Make compactionStatus method async [#16231](https://github.com/apache/pulsar/pull/16231)
+- [Pulsar Admin] Make terminate method async [#16227](https://github.com/apache/pulsar/pull/16227)
+- [Pulsar Admin] Make getList async [#16221](https://github.com/apache/pulsar/pull/16221)
+- [Pulsar Admin] Make getPartitionedTopicList method async [#16217](https://github.com/apache/pulsar/pull/16217)
+- [Pulsar Admin] Improve documentation for unackedMessages stat [#16213](https://github.com/apache/pulsar/pull/16213)
+- [Pulsar Admin] Make internalPeekNthMessage method async [#16192](https://github.com/apache/pulsar/pull/16192)
+- [Pulsar Admin] Fix get non-persistent topics issue in Namespaces [#16170](https://github.com/apache/pulsar/pull/16170)
+- [Pulsar Admin] Make getInternalStats method async [#16141](https://github.com/apache/pulsar/pull/16141)
+- [Pulsar Admin] Fix get-publish-rete Admin API handle exception behavior [#16001](https://github.com/apache/pulsar/pull/16001)
+- [Pulsar Admin] Release LookupRequestSemaphore before returning data [#15974](https://github.com/apache/pulsar/pull/13549)
+- [Pulsar Admin] Fix producer/consume permission can’t get schema [#15956](https://github.com/apache/pulsar/pull/15956)
+- [Pulsar Admin] Make publish rate and dispatch rate operation async [#15946](https://github.com/apache/pulsar/pull/15946)
+- [Pulsar Admin] Support to get topic properties [#15944](https://github.com/apache/pulsar/pull/15944)
+- [Pulsar Admin] New API to get subscription properties [#16095](https://github.com/apache/pulsar/pull/16095)
+- [Pulsar Admin] Make some operation subscription dispatchRate methods in Namespaces async [#15880](https://github.com/apache/pulsar/pull/15880)
+- [Pulsar Admin] Make some methods in SchemasResourceBase async [#15821](https://github.com/apache/pulsar/pull/15821)
+- [Pulsar Admin] Make some operation replication clusters async [#15760](https://github.com/apache/pulsar/pull/15760)
+- [Pulsar Admin] Make some methods of ClusterBase pure async [#15685](https://github.com/apache/pulsar/pull/15685)
+- [Pulsar Admin] Allow creating builtin functions in pulsar-admin CLI [#15671](https://github.com/apache/pulsar/pull/15671)
+- [Pulsar Admin] Enable users to specify TTL options in units other than seconds [#15657](https://github.com/apache/pulsar/pull/15657)
+- [Pulsar Admin] Make some operation SubscribeRate methods in Namespaces async [#15656](https://github.com/apache/pulsar/pull/15656)
+- [Pulsar Admin] Add transaction admin to get recover time in stats [#15654](https://github.com/apache/pulsar/pull/15654)
+- [Pulsar Admin] Make some operation auto topic creation in Namespaces async [#15621](https://github.com/apache/pulsar/pull/15621)
+- [Pulsar Admin] Add topic name and sub name for NotFound error message [#15606](https://github.com/apache/pulsar/pull/15606)
+- [Pulsar Admin] Make some methods in ResourceQuotasBase async [#15605](https://github.com/apache/pulsar/pull/15605)
+- [Pulsar Admin] Make some methods in TenantsBase async [#15603](https://github.com/apache/pulsar/pull/15603)
+- [Pulsar Admin] Make some operation messageTTL methods in Namespaces async [#15577](https://github.com/apache/pulsar/pull/15577)
+- [Pulsar Admin] Enable users to specify some time options in units other than seconds [#15563](https://github.com/apache/pulsar/pull/15563)
+- [Pulsar Admin] Make some methods of ClusterBase pure async [#15527](https://github.com/apache/pulsar/pull/15527)
+- [Pulsar Admin] Support filtering system topic when get list [#15410](https://github.com/apache/pulsar/pull/15410)
+- [Pulsar Admin] Make some methods of ClusterBase pure async [#15358](https://github.com/apache/pulsar/pull/15358)
+- [Pulsar Admin] Make some methods of ClusterBase pure async [#15318](https://github.com/apache/pulsar/pull/15318)
+- [Pulsar Admin] Add admin api updateTransactionCoordinatorNumber [#15296](https://github.com/apache/pulsar/pull/15296)
+- [Pulsar Admin] Put validateTopicOwnershipAsync before validateTopicOperationAsync [#15265](https://github.com/apache/pulsar/pull/15265)
+- [Pulsar Admin] Remove duplication validateTopicOwnershipAsync [#15120](https://github.com/apache/pulsar/pull/15410)
+- [Pulsar Admin] Fix pulsar-admin not prompting message when there is a 500 error [#14856](https://github.com/apache/pulsar/pull/14856)
+- [Pulsar Admin] Add get active brokers api without cluster name [#14702](https://github.com/apache/pulsar/pull/14702)
+- [Pulsar Admin] Grab contextual stacktrace for sync methods [#14620](https://github.com/apache/pulsar/pull/14620)
+- [Pulsar Admin] Correct status message prompt [#14603](https://github.com/apache/pulsar/pull/14603)
+- [Pulsar CLI] Add a separate TLS transport encryption configuration [#16930](https://github.com/apache/pulsar/pull/16930)
+- [Pulsar CLI] Fix incorrect description for producing messages [#16876](https://github.com/apache/pulsar/pull/16876)
+- [Pulsar CLI] Use NoSplitter for subscription properties [#16862](https://github.com/apache/pulsar/pull/16862)
+- [Pulsar CLI] Add TLS provider support [#16700](https://github.com/apache/pulsar/pull/16700)
+- [Pulsar CLI] Support getEarliestTimeInBacklog at getPartitionedStats method [#16388](https://github.com/apache/pulsar/pull/16388)
+- [Pulsar CLI] Add query options to the get topics in Namespace [#16167](https://github.com/apache/pulsar/pull/16167)
+- [Pulsar CLI] Add cli cmd for subscription level dispatch-rate-limiter [#15862](https://github.com/apache/pulsar/pull/15862)
+- [Pulsar CLI] Disable Pulsar client memory limit by default [#15748](https://github.com/apache/pulsar/pull/15748)
+- [Pulsar CLI] Fix check on create function class name [#15700](https://github.com/apache/pulsar/pull/15862)
+- [Pulsar CLI] Support filtering system topic when get list [#15410](https://github.com/apache/pulsar/pull/15410)
+- [Pulsar CLI] Change the default for max-connections from 100 to 1 [#15387](https://github.com/apache/pulsar/pull/15387)
+- [Pulsar CLI] Add short name for full name in admin cli [#14301](https://github.com/apache/pulsar/pull/14301)
+- [Client Tool] Add tlsTrustCertFilePath as CLI argument for pulsar-client-tool [#16961](https://github.com/apache/pulsar/pull/16961)
+- [Perf Tool] Able to set maxLookupRequest for pulsar-perf [#16967](https://github.com/apache/pulsar/pull/16967)
+
+### Others
+- [Proxy] Add TLS transport encryption for broker client [#16833](https://github.com/apache/pulsar/pull/16833)
+- [Proxy] Fix client service url [#16834](https://github.com/apache/pulsar/pull/16834)
+- [Proxy] Consolidate Netty channel flushes to mitigate syscall overhead [#16372](https://github.com/apache/pulsar/pull/16372)
+- [Proxy] Do not preserve host when forwarding admin requests [#16342](https://github.com/apache/pulsar/pull/16342)
+- [Proxy] Switch to rely on Netty for Hostname Verification [#15824](https://github.com/apache/pulsar/pull/15824)
+- [Proxy] Support zero-copy of NIC to NIC on Proxy [#15678](https://github.com/apache/pulsar/pull/15678)
+- [Proxy] Add support of PrometheusRawMetricsProvider for the Pulsar-Proxy [#14681](https://github.com/apache/pulsar/pull/14681)
+- [Proxy] Fail proxy startup if brokerServiceURL is missing scheme [#14682](https://github.com/apache/pulsar/pull/14682)
+- [Proxy] Suggestion put brokerProxyAllowedTargetPorts in proxy.conf [#15069](https://github.com/apache/pulsar/pull/15069)
+- [Proxy] Exit if proxy service fails to start [#15076](https://github.com/apache/pulsar/pull/15076)
+- [Proxy] Fix DNS server denial-of-service issue when DNS entry expires [#15403](https://github.com/apache/pulsar/pull/15403)
+- [Proxy] Remove unnecessary blocking DNS lookup in LookupProxyHandler [#15415](https://github.com/apache/pulsar/pull/15415)
+- [WebSocket] Fix MultiTopicReader#getConsumer ClassCastException [#15534](https://github.com/apache/pulsar/pull/15534)
+- [WebSocket] Add KeyStore support in WebSocket, Function Worker HTTPS Servers [#15084](https://github.com/apache/pulsar/pull/15084)
+- [WebSocket] Fix ClassCastException when user create MultiTopicReader [#14316](https://github.com/apache/pulsar/pull/14316)
+- [WebSocket] Support encryption in websocket proxy [#16234](https://github.com/apache/pulsar/pull/16234)
+- [Package Management] Fix the new path /data introduced regression [#15367](https://github.com/apache/pulsar/pull/15367)
+- [Schema] Add decode InputStream for Schema [#16659](https://github.com/apache/pulsar/pull/16659)
+- [Schema] Expose timestamp field for SchemaData&SchemaInfo [#16380](https://github.com/apache/pulsar/pull/16380)
+- [Schema] Add classLoader field for SchemaDefinition [#15915](https://github.com/apache/pulsar/pull/15915)
+- [Schema] Fix conversion of TimestampMillisConversion has no effect when Jsr310Conversion enabled [#15863](https://github.com/apache/pulsar/pull/15863)
+- [Schema] Ensure the deletion consistency of topic and schema [#14608](https://github.com/apache/pulsar/pull/14608)
+- [Tiered Storage] Shared subscription: improvement with offloaded ledgers [#16417](https://github.com/apache/pulsar/pull/16417)
+- [Tiered Storage] Fix the wrong secret key name get from env [#15814](https://github.com/apache/pulsar/pull/15814)
+- [Tiered Storage] Add pure S3 provider for the offloader [#15710](https://github.com/apache/pulsar/pull/15710)
+- [Tiered Storage] Reduce cpu usage when offloading the ledger [#15063](https://github.com/apache/pulsar/pull/15063)
+- [Tiered Storage] Fix potential NPE in MockManagedLedger [#15006](https://github.com/apache/pulsar/pull/15006)
+- [Tiered Storage] Add API to scan objects on Tiered Storage [#14930](https://github.com/apache/pulsar/pull/14930)
+- [Tiered Storage] Fix incorrect entryId in warn log when reading entry from tiered storage [#14685](https://github.com/apache/pulsar/pull/14685)
+- Remove cmd-line level test retries [#16524](https://github.com/apache/pulsar/pull/16524)
+- Fix potential incompatible java opts caused by IS_JAVA_8 [#15444](https://github.com/apache/pulsar/pull/15444)
+- Remove obsolete jdk11 and errorprone-jdk11 maven profiles [#15505](https://github.com/apache/pulsar/pull/15505)
+- Remove internal dependency: pulsar-functions-instance [#14925](https://github.com/apache/pulsar/pull/14925)
+- Enable retries for apt-get when building Pulsar docker image [#14513](https://github.com/apache/pulsar/pull/15505)
+- Migrate Docker images and CI to Java 17 [#14355](https://github.com/apache/pulsar/pull/14355)
+
+### Library updates
+- Upgrade to Jetty to 9.4.48.v20220622 [#16520](https://github.com/apache/pulsar/pull/16520)
+- Bump jackson version from 2.13.2 to 2.13.3 [#16508](https://github.com/apache/pulsar/pull/16508)
+- Bump maven-dependency-plugin to 3.3.0 [#16318](https://github.com/apache/pulsar/pull/16318)
+- Bump os-maven-plugin version from 1.4.1.Final to 1.7.0 [#16308](https://github.com/apache/pulsar/pull/16308)
+- Bump presto.version to run PrestoServer on JDK11+ [#16163](https://github.com/apache/pulsar/pull/16163)
+- Update fastjson version to 1.2.83 [#16148](https://github.com/apache/pulsar/pull/16148)
+- Bump pyyaml from 5.3.1 to 5.4.1 to solve CVE-2020-14343 [#15989](https://github.com/apache/pulsar/pull/15989)
+- Bump spring version to 5.3.20 to solve CVE-2022-22970 [#15699](https://github.com/apache/pulsar/pull/15699)
+- Bump snappy zstd version to fix CompressorCodecBackwardCompatTest on Apple M1 [#15698](https://github.com/apache/pulsar/pull/15698)
+- Athenz: do not use uber-jar and bump to 1.10.50 to remove jackson-databind shaded dependency [#14884](https://github.com/apache/pulsar/pull/14884)
+- Remove --illegal-access errors resulting from Google Guice - Pulsar IO, Offloaders and Pulsar SQL - Bump Guice to 5.1.0 [#14300](https://github.com/apache/pulsar/pull/14300)
+- Bump prometheus client version from 0.5.0 to 0.15.0 [#13785](https://github.com/apache/pulsar/pull/13785)
+- Upgrade log4j2 version to 2.18.0 [#16884](https://github.com/apache/pulsar/pull/16884
+
+### Documentation

Review Comment:
   Items in some chapters use this format: `[xxx][xxx] xxxx` 
   While items in the `Documentation` chapter do not use this format. 
   Should we keep consistent? 



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: dev-unsubscribe@pulsar.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org