This is an automated email from the ASF dual-hosted git repository. lhotari pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/pulsar-site.git
commit fed478d789ee2df555febb8c45de1315d70d6391 Author: Lari Hotari <[email protected]> AuthorDate: Wed Apr 1 00:50:33 2026 +0300 Add release notes --- data/release-java.js | 7 + data/release-pulsar.js | 9 + release-notes/versioned/client-java-4.2.0.md | 54 ++++ release-notes/versioned/pulsar-4.2.0.md | 439 +++++++++++++++++++++++++++ releases.json | 1 + 5 files changed, 510 insertions(+) diff --git a/data/release-java.js b/data/release-java.js index ffe1d4d325e..cf3fb98d6ea 100644 --- a/data/release-java.js +++ b/data/release-java.js @@ -1,4 +1,11 @@ module.exports = [ + { + "tagName": "v4.2.0", + "vtag": "4.2.x", + "releaseNotes": "/release-notes/versioned/client-java-4.2.0/", + "doc": "/docs/4.2.x/client-libraries-java", + "version": "v4.2.x" + }, { "tagName": "v4.1.3", "vtag": "4.1.x", diff --git a/data/release-pulsar.js b/data/release-pulsar.js index 0bb4da779c2..6c265c143e5 100644 --- a/data/release-pulsar.js +++ b/data/release-pulsar.js @@ -1,4 +1,13 @@ module.exports = [ + { + "author": "lhotari", + "tagName": "v4.2.0", + "publishedAt": "2026-03-24T19:03:05+02:00", + "vtag": "4.2.x", + "releaseNotes": "/release-notes/versioned/pulsar-4.2.0/", + "doc": "/docs/4.2.x", + "version": "v4.2.x" + }, { "author": "lhotari", "tagName": "v4.1.3", diff --git a/release-notes/versioned/client-java-4.2.0.md b/release-notes/versioned/client-java-4.2.0.md new file mode 100644 index 00000000000..117b9a5ff97 --- /dev/null +++ b/release-notes/versioned/client-java-4.2.0.md @@ -0,0 +1,54 @@ +--- +id: client-java-4.2.0 +title: Client Java 4.2.0 +sidebar_label: Client Java 4.2.0 +--- + +- [fix][client] Add description method to ClientBuilder ([#24728](https://github.com/apache/pulsar/pull/24728)) +- [fix][client] Avoid recycling the same ConcurrentBitSetRecyclable among different threads ([#24725](https://github.com/apache/pulsar/pull/24725)) +- [fix][client] ControlledClusterFailover avoid unnecessary reconnection. ([#25178](https://github.com/apache/pulsar/pull/25178)) +- [fix][client] Exclude io.prometheus:simpleclient_caffeine from client-side dependencies ([#24761](https://github.com/apache/pulsar/pull/24761)) +- [fix][client] Fail messages immediately in ProducerImpl when in terminal state ([#25317](https://github.com/apache/pulsar/pull/25317)) +- [fix][client] Fix async APIs to return failed futures on validation errors ([#25287](https://github.com/apache/pulsar/pull/25287)) +- [fix][client] Fix AutoProduceBytesSchema.clone() method ([#25015](https://github.com/apache/pulsar/pull/25015)) +- [fix][client] Fix deduplication for getPartitionedTopicMetadata to include method parameters ([#24965](https://github.com/apache/pulsar/pull/24965)) +- [fix][client] Fix double recycling of the message in isValidConsumerEpoch method ([#25008](https://github.com/apache/pulsar/pull/25008)) +- [fix][client] Fix getPendingQueueSize for PartitionedTopicProducerStatsRecorderImpl: avoid NPE and implement aggregation ([#24830](https://github.com/apache/pulsar/pull/24830)) +- [fix][client] Fix invalid parameter type passed to Map.get in TopicsImpl.getListAsync method ([#25069](https://github.com/apache/pulsar/pull/25069)) +- [fix][client] Fix lookup request semaphore not release problem ([#25038](https://github.com/apache/pulsar/pull/25038)) +- [fix][client] Fix potential NPE in TypedMessageBuilderImpl ([#24691](https://github.com/apache/pulsar/pull/24691)) +- [fix][client] Fix producer synchronous retry handling in failPendingMessages method ([#25207](https://github.com/apache/pulsar/pull/25207)) +- [fix][client] Fix PulsarAdmin description check and add test ([#24734](https://github.com/apache/pulsar/pull/24734)) +- [fix][client] Fix race condition between isDuplicate() and flushAsync() method in PersistentAcknowledgmentsGroupingTracker due to incorrect use Netty Recycler ([#25208](https://github.com/apache/pulsar/pull/25208)) +- [fix][client] Fix receiver queue auto-scale without memory limit ([#24743](https://github.com/apache/pulsar/pull/24743)) +- [fix][client] Fix stale Healthy state in SameAuthParamsLookupAutoClusterFailover causing flaky test ([#25388](https://github.com/apache/pulsar/pull/25388)) +- [fix][client] Fix thread leak in reloadLookUp method which is used by ServiceUrlProvider ([#24794](https://github.com/apache/pulsar/pull/24794)) +- [fix][client] Fix thread-safety of AutoProduceBytesSchema ([#25014](https://github.com/apache/pulsar/pull/25014)) +- [fix][client] Make auto partitions update work for old brokers without PIP-344 ([#24822](https://github.com/apache/pulsar/pull/24822)) +- [fix][client] PIP-84: Skip processing a message in the message listener if the consumer epoch is no longer valid ([#25007](https://github.com/apache/pulsar/pull/25007)) +- [fix][client] Reduce logging in OAuth auth to fix parsing of Pulsar cli command output ([#25254](https://github.com/apache/pulsar/pull/25254)) +- [fix][client] rollback TopicListWatcher retry behavior ([#24752](https://github.com/apache/pulsar/pull/24752)) +- [fix][client] Send all chunkMessageIds to broker for redelivery ([#25229](https://github.com/apache/pulsar/pull/25229)) +- [fix][client] Skip processing messages in the listener when the consumer has been closed ([#25006](https://github.com/apache/pulsar/pull/25006)) +- [fix][client]Producer stuck or geo-replication stuck due to wrong value of message.numMessagesInBatch ([#25106](https://github.com/apache/pulsar/pull/25106)) +- [fix][client]TopicListWatcher not closed when calling PatternMultiTopicsConsumerImpl.closeAsync() method ([#24698](https://github.com/apache/pulsar/pull/24698)) +- [improve][client] PIP-407 Add newMessage with schema and transactions ([#23942](https://github.com/apache/pulsar/pull/23942)) +- [improve][client] Add null checks for MessageAcknowledger methods to prevent NullPointerException ([#25036](https://github.com/apache/pulsar/pull/25036)) +- [improve][client] Allow adding custom description to User-Agent header ([#24729](https://github.com/apache/pulsar/pull/24729)) +- [improve][client] allow override of default global jsr310 conversion ([#24311](https://github.com/apache/pulsar/pull/24311)) +- [improve][client] Deduplicate getTopicsUnderNamespace in BinaryProtoLookupService ([#24962](https://github.com/apache/pulsar/pull/24962)) +- [improve][client] Deduplicate in-progress lookup requests also for HttpLookupService ([#25017](https://github.com/apache/pulsar/pull/25017)) +- [improve][client] Enable configurable preemptive OAuth2 token refresh ([#25363](https://github.com/apache/pulsar/pull/25363)) +- [improve][client] Make authorization server metadata path configurable in AuthenticationOAuth2 ([#25052](https://github.com/apache/pulsar/pull/25052)) +- [improve][client] PIP-420: Update the schema ID format ([#24798](https://github.com/apache/pulsar/pull/24798)) +- [improve][client] Support protobuf v4 schema compatibility ([#25261](https://github.com/apache/pulsar/pull/25261)) +- [improve][client] Test no exception could be thrown for invalid epoch in message ([#25013](https://github.com/apache/pulsar/pull/25013)) +- [improve][client]Add null check for Pulsar client clock configuration ([#24848](https://github.com/apache/pulsar/pull/24848)) +- [improve][client]PIP-436:Add decryptFailListener to Consumer ([#24702](https://github.com/apache/pulsar/pull/24702)) +- [improve][client]Reduce unnecessary getPartitionedTopicMetadata requests when using retry and DLQ topics. ([#25172](https://github.com/apache/pulsar/pull/25172)) +- [cleanup][client] Remove unnecessary pause/resume logic from MultiTopicsConsumerImpl and cleanup putIfAbsent logic ([#25009](https://github.com/apache/pulsar/pull/25009)) +- [feat][client] Implement PIP-234 for sharing thread pools and DNS resolver/cache across multiple Pulsar Client instances ([#24790](https://github.com/apache/pulsar/pull/24790)) +- [feat][client] oauth2 trustcerts file and timeouts ([#24944](https://github.com/apache/pulsar/pull/24944)) +- [feat][client] PIP-234: Support shared resources in PulsarAdmin to reduce thread usage ([#24893](https://github.com/apache/pulsar/pull/24893)) +- [feat][client] PIP-446: Support Native OpenTelemetry Tracing in Pulsar Java Client ([#24873](https://github.com/apache/pulsar/pull/24873)) +- [fix] Handle TLS close_notify to avoid SslClosedEngineException: SSLEngine closed already ([#24986](https://github.com/apache/pulsar/pull/24986)) \ No newline at end of file diff --git a/release-notes/versioned/pulsar-4.2.0.md b/release-notes/versioned/pulsar-4.2.0.md new file mode 100644 index 00000000000..ab53bf36330 --- /dev/null +++ b/release-notes/versioned/pulsar-4.2.0.md @@ -0,0 +1,439 @@ +--- +id: pulsar-4.2.0 +title: Apache Pulsar 4.2.0 +sidebar_label: Apache Pulsar 4.2.0 +--- + +#### 2026-04-01 + +### Approved PIPs + +- [PIP-434: Expose Netty channel configuration WRITE_BUFFER_WATER_MARK to pulsar conf and pause receive requests when channel is unwritable](https://github.com/apache/pulsar/tree/master/pip/pip-434.md) +- [PIP-437: Granular and Fixed-Delay Policies for Message Delivery](https://github.com/apache/pulsar/tree/master/pip/pip-437.md) +- [PIP-439: Adding Transaction Support to Pulsar Functions Through Managed Transaction Wrapping](https://github.com/apache/pulsar/tree/master/pip/pip-439.md) +- [PIP-442: Add memory limits for CommandGetTopicsOfNamespace and CommandWatchTopicList on Broker and Proxy](https://github.com/apache/pulsar/tree/master/pip/pip-442.md) +- [PIP-443: Stop using Netty Recycler in new code](https://github.com/apache/pulsar/tree/master/pip/pip-443.md) +- [PIP-444: Rate limit for deleting ledger to alleviate the zk pressure.](https://github.com/apache/pulsar/tree/master/pip/pip-444.md) +- [PIP-446: Support Native OpenTelemetry Tracing in Pulsar Java Client](https://github.com/apache/pulsar/tree/master/pip/pip-446.md) +- [PIP-447: Customizable Prometheus Labels for Topic Metrics](https://github.com/apache/pulsar/tree/master/pip/pip-447.md) +- [PIP-452: Customizable topic listing of namespace with properties](https://github.com/apache/pulsar/tree/master/pip/pip-452.md) +- [PIP-453: Improve the metadata store threading model](https://github.com/apache/pulsar/tree/master/pip/pip-453.md) +- [PIP-454: Metadata Store Migration Framework](https://github.com/apache/pulsar/tree/master/pip/pip-454.md) +- [PIP-464: Deprecate legacy Jackson JsonSchema format for SchemaType.JSON](https://github.com/apache/pulsar/tree/master/pip/pip-464.md) + +### Library updates + +- [improve][broker] Upgrade bookkeeper to 4.17.3 ([#25166](https://github.com/apache/pulsar/pull/25166)) +- [improve][ml] Upgrade Oxia client to 0.7.0 ([#24824](https://github.com/apache/pulsar/pull/24824)) +- [fix][sec] Added Exclusions for tomcat-embed-core and derby and override mina-core to remediate CVEs ([#24949](https://github.com/apache/pulsar/pull/24949)) +- [fix][sec] Bump at.yawk.lz4:lz4-java from 1.9.0 to 1.10.1 in /pulsar-common ([#25045](https://github.com/apache/pulsar/pull/25045)) +- [fix][sec] Bump github.com/dvsekhvalnov/jose2go from 1.6.0 to 1.7.0 in /pulsar-function-go ([#24987](https://github.com/apache/pulsar/pull/24987)) +- [fix][sec] Bump google.golang.org/grpc from 1.60.0 to 1.79.3 in /pulsar-function-go ([#25353](https://github.com/apache/pulsar/pull/25353)) +- [fix][sec] Bump io.vertx:vertx-web from 4.5.10 to 4.5.22 ([#24889](https://github.com/apache/pulsar/pull/24889)) +- [fix][sec] Bump org.apache.solr:solr-core from 9.8.0 to 9.10.1 in /pulsar-io/solr ([#25175](https://github.com/apache/pulsar/pull/25175)) +- [fix][sec] Bump org.apache.zookeeper:zookeeper from 3.9.4 to 3.9.5 ([#25303](https://github.com/apache/pulsar/pull/25303)) +- [fix][sec] Eliminate commons-collections dependency ([#25024](https://github.com/apache/pulsar/pull/25024)) +- [fix][sec] Exclude org.lz4:lz4-java and standardize on at.yawk.lz4-java to remediate CVE-2025-12183 and CVE-2025-66566 ([#25198](https://github.com/apache/pulsar/pull/25198)) +- [fix][sec] Override commons-beanutils and commons-configuration2 to remediate CVEs ([#24936](https://github.com/apache/pulsar/pull/24936)) +- [fix][sec] Override kafka-clients in kinesis-kpl-shaded to remediate CVE-2024-31141 and CVE-2025-27817 ([#24935](https://github.com/apache/pulsar/pull/24935)) +- [fix][sec] Override msgpack-core to 0.9.11 to address CVE-2026-21452 ([#25233](https://github.com/apache/pulsar/pull/25233)) +- [fix][sec] Override nimbus-jose-jwt to remediate CVE-2023-52428 and CVE-2025-53864 ([#24937](https://github.com/apache/pulsar/pull/24937)) +- [fix][sec] Update Hbase version to 2.6.3-hadoop3 and exclude Avro from hbase-client to remediate CVEs ([#24953](https://github.com/apache/pulsar/pull/24953)) +- [fix][sec] Upgrade aircompressor to 2.0.3 to resolve CVE-2025-67721 ([#25256](https://github.com/apache/pulsar/pull/25256)) +- [fix][sec] Upgrade BouncyCastle FIPS to 2.0.10 to remediate CVE-2025-8916 ([#24923](https://github.com/apache/pulsar/pull/24923)) +- [fix][sec] Upgrade hadoop3 version from 3.4.0 to 3.4.1 ([#24950](https://github.com/apache/pulsar/pull/24950)) +- [fix][sec] Upgrade Jackson version to 2.18.6 ([#25264](https://github.com/apache/pulsar/pull/25264)) +- [fix][sec] Upgrade Jetty to 9.4.58.v20250814 to address CVE-2025-5115 ([#24897](https://github.com/apache/pulsar/pull/24897)) +- [fix][sec] Upgrade jose4j to 0.9.6 to address CVE-2024-29371 ([#25095](https://github.com/apache/pulsar/pull/25095)) +- [fix][sec] Upgrade log4j to 2.25.3 to address CVE-2025-68161 ([#25102](https://github.com/apache/pulsar/pull/25102)) +- [fix][sec] Upgrade Netty to 4.1.127.Final to address CVEs ([#24717](https://github.com/apache/pulsar/pull/24717)) +- [fix][sec] Upgrade Netty to 4.1.130.Final ([#25078](https://github.com/apache/pulsar/pull/25078)) +- [fix][sec] Upgrade OpenSearch to 2.19.4 to remediate CVE-2025-9624 ([#25206](https://github.com/apache/pulsar/pull/25206)) +- [fix][sec] Upgrade Python protobuf version to 6.33.5 to address CVE-2026-0994 ([#25250](https://github.com/apache/pulsar/pull/25250)) +- [fix][sec] Upgrade Spring to 6.2.12 to remediate CVE-2025-22233 and CVE-2025-41249 ([#24903](https://github.com/apache/pulsar/pull/24903)) +- [fix][sec] Upgrade vertx to address CVE-2026-1002 ([#25152](https://github.com/apache/pulsar/pull/25152)) +- [fix][build] Fix Eclipse/VSCode support after Jetty 12 upgrade ([#25169](https://github.com/apache/pulsar/pull/25169)) +- [fix][build] Fix IntelliJ build after Jetty 12 upgrade ([#25155](https://github.com/apache/pulsar/pull/25155)) +- [fix][ci] Fix CI for Java 25 including upgrade of Gradle Develocity Maven extension ([#24767](https://github.com/apache/pulsar/pull/24767)) +- [improve][fn] Upgrade Kubernetes client-java version to 23.0.0 and add k8s e2e integration tests ([#25000](https://github.com/apache/pulsar/pull/25000)) +- [improve][fn] Upgrade Pulsar Python client version to 3.10.0 ([#25251](https://github.com/apache/pulsar/pull/25251)) +- [fix][test] Upgrade docker-java to 3.7.0 ([#25209](https://github.com/apache/pulsar/pull/25209)) +- [improve][io] Replace Qpid in tests with RabbitMQ in Testcontainers and upgrade RabbitMQ client version ([#25085](https://github.com/apache/pulsar/pull/25085)) +- [improve][io] Upgrade Debezium to 3.4.2 and Kafka Client/Connect to 4.1.1 ([#25335](https://github.com/apache/pulsar/pull/25335)) +- [improve][io] Upgrade Debezium version to 3.2.4.Final ([#24896](https://github.com/apache/pulsar/pull/24896)) +- [improve][io] Upgrade Debezium version to 3.2.5.Final ([#25029](https://github.com/apache/pulsar/pull/25029)) +- [improve][io] Upgrade to Debezium 3.2.2 ([#24712](https://github.com/apache/pulsar/pull/24712)) +- [improve][monitor] Upgrade OpenTelemetry to 1.56.0, Otel instrumentation to 2.21.0 and Otel semconv to 1.37.0 ([#24994](https://github.com/apache/pulsar/pull/24994)) +- [improve][build] Upgrade Apache Parent POM to version 35 ([#24742](https://github.com/apache/pulsar/pull/24742)) +- [improve][build] Upgrade errorprone to 2.45.0 version ([#25054](https://github.com/apache/pulsar/pull/25054)) +- [improve][build] Upgrade LightProto to 0.6.1 ([#25332](https://github.com/apache/pulsar/pull/25332)) +- [improve][build] Upgrade Lombok to 1.18.42 to fully support JDK25 ([#24763](https://github.com/apache/pulsar/pull/24763)) +- [improve][build] Upgrade Mockito, AssertJ and ByteBuddy to fully support JDK25 ([#24764](https://github.com/apache/pulsar/pull/24764)) +- [improve][build] Upgrade SpotBugs to a version that supports JDK25 ([#24768](https://github.com/apache/pulsar/pull/24768)) +- [improve][build] Upgrade Testcontainers to 1.21.3 ([#24982](https://github.com/apache/pulsar/pull/24982)) +- [improve][ci] Upgrade GitHub Actions workflows to use ubuntu-24.04 ([#24841](https://github.com/apache/pulsar/pull/24841)) +- [improve][misc] Upgrade jjwt library version to 0.13.0 ([#25043](https://github.com/apache/pulsar/pull/25043)) +- [improve][misc] Upgrade Netty to 4.1.128.Final ([#24911](https://github.com/apache/pulsar/pull/24911)) +- [improve][misc] Upgrade snappy version to 1.1.10.8 ([#25182](https://github.com/apache/pulsar/pull/25182)) +- [improve][misc] Upgrade to Alpine 3.23 ([#25180](https://github.com/apache/pulsar/pull/25180)) +- [improve][misc] Upgrade to Jetty 12.1.x ([#25100](https://github.com/apache/pulsar/pull/25100)) +- [feat][meta] upgrade oxia version to 0.7.2 ([#24976](https://github.com/apache/pulsar/pull/24976)) +- [feat][misc] upgrade oxia version to 0.6.2 ([#24689](https://github.com/apache/pulsar/pull/24689)) +- [fix] Upgrade gson to 2.13.2 ([#25022](https://github.com/apache/pulsar/pull/25022)) +- [improve] Upgrade Alpine base image to 3.22 version ([#24840](https://github.com/apache/pulsar/pull/24840)) +- [improve] Upgrade Apache Commons library versions ([#24983](https://github.com/apache/pulsar/pull/24983)) +- [improve] Upgrade Caffeine to 3.2.3 ([#24984](https://github.com/apache/pulsar/pull/24984)) +- [improve] Upgrade Log4j2 to 2.25.2 and slf4j to 2.0.17 ([#24985](https://github.com/apache/pulsar/pull/24985)) +- [improve] Upgrade Netty to 4.1.131.Final ([#25232](https://github.com/apache/pulsar/pull/25232)) +- [improve] Upgrade RoaringBitmap to 1.6.9 version ([#25253](https://github.com/apache/pulsar/pull/25253)) +- [fix] Update gRPC to 1.75.0 ([#24813](https://github.com/apache/pulsar/pull/24813)) +- [fix] Exclude commons-lang dep from bookkeeper ([#24749](https://github.com/apache/pulsar/pull/24749)) +- [improve] replace jcip annotations to jsr305 annotations ([#25252](https://github.com/apache/pulsar/pull/25252)) + +### Broker + +- [fix][broker] Add schema version in rest produce api ([#25004](https://github.com/apache/pulsar/pull/25004)) +- [fix][broker] Allow intermittent error from topic policies service when loading topics ([#24829](https://github.com/apache/pulsar/pull/24829)) +- [fix][broker] AvgShedder comparison error ([#24954](https://github.com/apache/pulsar/pull/24954)) +- [fix][broker] Avoid recursive update in ConcurrentHashMap during policy cache cleanup ([#24939](https://github.com/apache/pulsar/pull/24939)) +- [fix][broker] Avoid split non-existent bundle ([#25031](https://github.com/apache/pulsar/pull/25031)) +- [fix][broker] BacklogMessageAge is not reset when cursor mdPosition is on an open ledger ([#24915](https://github.com/apache/pulsar/pull/24915)) +- [fix][broker] Ensure KeyShared sticky mode consumer respects assigned ranges ([#24730](https://github.com/apache/pulsar/pull/24730)) +- [fix][broker] Ensure LoadSheddingTask is scheduled after metadata service is available again ([#24838](https://github.com/apache/pulsar/pull/24838)) +- [fix][broker] ExtensibleLoadManager: handle SessionReestablished and Reconnected events to re-register broker metadata ([#24932](https://github.com/apache/pulsar/pull/24932)) +- [fix][broker] Fence reset cursor by timestamp to avoid concurrent timestamp-based position lookups ([#25151](https://github.com/apache/pulsar/pull/25151)) +- [fix][broker] First entry will be skipped if opening NonDurableCursor while trimmed ledger is adding first entry. ([#24738](https://github.com/apache/pulsar/pull/24738)) +- [fix][broker] Fix bug in PersistentMessageExpiryMonitor which blocked further expirations ([#24941](https://github.com/apache/pulsar/pull/24941)) +- [fix][broker] Fix cannot shutdown broker gracefully by admin api ([#24731](https://github.com/apache/pulsar/pull/24731)) +- [fix][broker] Fix chunked message loss when no consumers are available ([#25077](https://github.com/apache/pulsar/pull/25077)) +- [fix][broker] Fix compaction horizon might be reset to an old position when phase two is interrupted ([#25119](https://github.com/apache/pulsar/pull/25119)) +- [fix][broker] Fix concurrency bug in BucketDelayedDeliveryTracker ([#25346](https://github.com/apache/pulsar/pull/25346)) +- [fix][broker] Fix creation of replicated subscriptions for partitioned topics ([#24997](https://github.com/apache/pulsar/pull/24997)) +- [fix][broker] Fix cursor position persistence in ledger trimming ([#25087](https://github.com/apache/pulsar/pull/25087)) +- [fix][broker] Fix ExtensibleLoadManagerImpl stuck Assigning bundle state after broker restart ([#25379](https://github.com/apache/pulsar/pull/25379)) +- [fix][broker] fix flaky test in SystemTopicBasedTopicPoliciesServiceTest ([#25098](https://github.com/apache/pulsar/pull/25098)) +- [fix][broker] fix getMaxReadPosition in TransactionBufferDisable should return latest ([#24898](https://github.com/apache/pulsar/pull/24898)) +- [fix][broker] Fix httpProxyTimeout config ([#25223](https://github.com/apache/pulsar/pull/25223)) +- [fix][broker] Fix IllegalArgumentException in BucketDelayedDeliveryTracker.addMessage ([#25371](https://github.com/apache/pulsar/pull/25371)) +- [fix][broker] Fix incomplete futures in topic property update/delete methods ([#25228](https://github.com/apache/pulsar/pull/25228)) +- [fix][broker] Fix incorrect topic loading latency metric and timeout might not be respected ([#24785](https://github.com/apache/pulsar/pull/24785)) +- [fix][broker] Fix issue with schemaValidationEnforced in geo-replication ([#25012](https://github.com/apache/pulsar/pull/25012)) +- [fix][broker] Fix ManagedCursorImpl.asyncDelete() method may lose previous async mark delete properties in race condition ([#25165](https://github.com/apache/pulsar/pull/25165)) +- [fix][broker] Fix markDeletedPosition race condition in ManagedLedgerImpl.maybeUpdateCursorBeforeTrimmingConsumedLedger() method ([#25110](https://github.com/apache/pulsar/pull/25110)) +- [fix][broker] Fix memory leak when metrics are updated in a thread other than FastThreadLocalThread ([#24719](https://github.com/apache/pulsar/pull/24719)) +- [fix][broker] Fix MultiRolesTokenAuthorizationProvider error when subscription prefix doesn't match. ([#25121](https://github.com/apache/pulsar/pull/25121)) +- [fix][broker] Fix NPE and annotate nullable return values for ManagedCursorContainer ([#24706](https://github.com/apache/pulsar/pull/24706)) +- [fix][broker] Fix potential NPE in InMemTransactionBuffer.appendBufferToTxn by returning a valid Position ([#25039](https://github.com/apache/pulsar/pull/25039)) +- [fix][broker] fix prepareInitPoliciesCacheAsync in SystemTopicBasedTopicPoliciesService ([#24980](https://github.com/apache/pulsar/pull/24980)) +- [fix][broker] Fix race condition in ServerCnx producer/consumer async callbacks ([#25352](https://github.com/apache/pulsar/pull/25352)) +- [fix][broker] Fix regex matching of namespace name which might contain a regex char ([#25136](https://github.com/apache/pulsar/pull/25136)) +- [fix][broker] Fix stack overflow caused by race condition when closing a connection ([#24934](https://github.com/apache/pulsar/pull/24934)) +- [fix][broker] Fix testServiceConfigurationRetentionPolicy unit test ([#24756](https://github.com/apache/pulsar/pull/24756)) +- [fix][broker] Fix totalAvailablePermits not reduced when removing consumer from non-persistent dispatcher ([#24885](https://github.com/apache/pulsar/pull/24885)) +- [fix][broker] Fix transactionMetadataFuture completeExceptionally with null value ([#25231](https://github.com/apache/pulsar/pull/25231)) +- [fix][broker] Fix typos in PulsarClusterMetadataSetup ([#24750](https://github.com/apache/pulsar/pull/24750)) +- [fix][broker] Fix various error-prone detected errors mainly in logging and String.format parameters ([#25059](https://github.com/apache/pulsar/pull/25059)) +- [fix][broker] Fix wrong behaviour when using namespace.allowed_clusters, such as namespace deletion and namespace policies updating ([#24860](https://github.com/apache/pulsar/pull/24860)) +- [fix][broker] Flaky-test: ExtensibleLoadManagerImplTest.testDisableBroker ([#24770](https://github.com/apache/pulsar/pull/24770)) +- [fix][broker] Flaky-test: TopicTransactionBufferTest.testMessagePublishInOrder ([#24826](https://github.com/apache/pulsar/pull/24826)) +- [fix][broker] Force EnsemblePolicies to resolve network location after rackInfoMap is updated due to changes in /ledgers/available znode ([#25067](https://github.com/apache/pulsar/pull/25067)) +- [fix][broker] Guard AsyncTokenBucket against long overflow ([#25262](https://github.com/apache/pulsar/pull/25262)) +- [fix][broker] Handle missing replicator during snapshot request processing ([#25266](https://github.com/apache/pulsar/pull/25266)) +- [fix][broker] Key_Shared subscription doesn't always deliver messages from the replay queue after a consumer disconnects and leaves a backlog ([#24736](https://github.com/apache/pulsar/pull/24736)) +- [fix][broker] Pass metadataStoreSessionTimeoutMillis to bookkeeper client configuration to properly configure ZK timeout ([#24624](https://github.com/apache/pulsar/pull/24624)) +- [fix][broker] PIP-442: Fix race condition in async semaphore permit updates that causes memory limits to become ineffective ([#25066](https://github.com/apache/pulsar/pull/25066)) +- [fix][broker] Prevent missed topic changes in topic watchers and schedule periodic refresh with patternAutoDiscoveryPeriod interval ([#25188](https://github.com/apache/pulsar/pull/25188)) +- [fix][broker] Prevent unexpected recycle failure in dispatcher's read callback ([#24741](https://github.com/apache/pulsar/pull/24741)) +- [fix][broker] Return failed future instead of throwing exception in async methods ([#25289](https://github.com/apache/pulsar/pull/25289)) +- [fix][broker] Run ResourceGroup tasks only when tenants/namespaces registered ([#24859](https://github.com/apache/pulsar/pull/24859)) +- [fix][broker] Stop to retry to read entries if the replicator has terminated ([#24880](https://github.com/apache/pulsar/pull/24880)) +- [fix][broker] Support namespace unsubscribe when bundles are unloaded ([#25276](https://github.com/apache/pulsar/pull/25276)) +- [fix][broker] Trigger topic creation event only once for non-existent topic ([#24802](https://github.com/apache/pulsar/pull/24802)) +- [fix][broker] Use `poll` instead `remove` to avoid `NoSuchElementException` ([#24933](https://github.com/apache/pulsar/pull/24933)) +- [fix][broker] Use compatible Avro name validator in JsonSchemaCompatibilityCheck ([#25255](https://github.com/apache/pulsar/pull/25255)) +- [fix][broker] Use compatible Avro name validator to allow '$' in schema record names ([#25193](https://github.com/apache/pulsar/pull/25193)) +- [fix][broker]Dispatcher did unnecessary sort for recentlyJoinedConsumers and printed noisy error logs ([#24634](https://github.com/apache/pulsar/pull/24634)) +- [fix][broker]Fix dirty reading of namespace level offload thresholds ([#24696](https://github.com/apache/pulsar/pull/24696)) +- [fix][broker]Fix incorrect backlog if use multiple acknowledge types on the same subscription ([#25047](https://github.com/apache/pulsar/pull/25047)) +- [fix][broker]Fix ledgerHandle failed to read by using new BK API ([#25199](https://github.com/apache/pulsar/pull/25199)) +- [fix][broker]Fix memory leak when using a customized ManagedLedger implementation ([#25016](https://github.com/apache/pulsar/pull/25016)) +- [fix][broker]Fix never recovered metadata store bad version issue if received a large response from ZK ([#24580](https://github.com/apache/pulsar/pull/24580)) +- [fix][broker]Fix the wrong logic of the test PartitionCreationTest.testCreateMissedPartitions ([#24683](https://github.com/apache/pulsar/pull/24683)) +- [fix][broker]Incorrect backlog that is larger than expected ([#25037](https://github.com/apache/pulsar/pull/25037)) +- [fix][broker]Infinitely failed to delete topic if the first time failed and enabled transaction ([#25073](https://github.com/apache/pulsar/pull/25073)) +- [fix][broker]Leaving orphan schemas and topic-level policies after partitioned topic is deleted by GC ([#24971](https://github.com/apache/pulsar/pull/24971)) +- [fix][broker]pulsar_ml_reads_inflight_bytes and pulsar_ml_reads_available_inflight_bytes are 0 at the same time ([#25105](https://github.com/apache/pulsar/pull/25105)) +- [fix][broker]system topic was created with different partitions acrossing clusters after enabled namespace-level replication ([#25312](https://github.com/apache/pulsar/pull/25312)) +- [fix][broker]Topic deleting failed after removed local cluster from namespace policies ([#25114](https://github.com/apache/pulsar/pull/25114)) +- [fix][broker]Transactional messages can never be sent successfully if concurrently taking transaction buffer snapshot ([#24945](https://github.com/apache/pulsar/pull/24945)) +- [fix][broker]Wrong backlog: expected 0 but got 1 ([#24938](https://github.com/apache/pulsar/pull/24938)) +- [fix][admin] Fix asyncGetRequest to handle 204 ([#25124](https://github.com/apache/pulsar/pull/25124)) +- [fix][admin] Fix offload policy incompatible issue. ([#25149](https://github.com/apache/pulsar/pull/25149)) +- [fix][admin] Refactor bookie affinity group sync operations to async in rest api ([#25050](https://github.com/apache/pulsar/pull/25050)) +- [fix][admin] Refactor namespace anti affinity group sync operations to async in rest api ([#25086](https://github.com/apache/pulsar/pull/25086)) +- [fix][admin] Set local policies overwrites "number of bundles" passed during namespace creation ([#24762](https://github.com/apache/pulsar/pull/24762)) +- [fix][ml] Fix `getNumberOfEntries` may point to deleted ledger ([#24852](https://github.com/apache/pulsar/pull/24852)) +- [fix][ml] Fix cursor backlog size to account for individual acks ([#25089](https://github.com/apache/pulsar/pull/25089)) +- [fix][ml] Fix ledger trimming race causing cursor to point to deleted ledgers ([#24855](https://github.com/apache/pulsar/pull/24855)) +- [fix][ml] Fix NoSuchElementException in EntryCountEstimator caused by a race condition ([#25177](https://github.com/apache/pulsar/pull/25177)) +- [fix][ml] Negative backlog & acked positions does not exist & message lost when concurrently occupying topic owner ([#24722](https://github.com/apache/pulsar/pull/24722)) +- [fix][ml] PIP-430: Fix concurrency issue in MessageMetadata caching and improve caching ([#24836](https://github.com/apache/pulsar/pull/24836)) +- [fix][ml] Retry offload reads when OffloadReadHandleClosedException is encountered ([#25148](https://github.com/apache/pulsar/pull/25148)) +- [fix][ml]Fix EOFException after enabled topics offloading ([#24753](https://github.com/apache/pulsar/pull/24753)) +- [fix][offload] Close all resources in BlobStoreBackedReadHandleImplV2.closeAsync ([#25296](https://github.com/apache/pulsar/pull/25296)) +- [fix][meta] Metadata cache refresh might not take effect ([#25246](https://github.com/apache/pulsar/pull/25246)) +- [improve][broker] Add idle timeout support for http ([#25224](https://github.com/apache/pulsar/pull/25224)) +- [improve][broker] Add overrideBrokerNics for adaptation of heterogeneous network environments ([#24883](https://github.com/apache/pulsar/pull/24883)) +- [improve][broker] Add strictAuthMethod to require explicit authentication method ([#25185](https://github.com/apache/pulsar/pull/25185)) +- [improve][broker] Add tests for using absolute FQDN for advertisedAddress and remove extra dot from brokerId ([#24787](https://github.com/apache/pulsar/pull/24787)) +- [improve][broker] Allow deletion of empty persistent topics regardless of retention policy ([#24733](https://github.com/apache/pulsar/pull/24733)) +- [improve][broker] Cache last publish timestamp for idle topics to reduce storage reads ([#24825](https://github.com/apache/pulsar/pull/24825)) +- [improve][broker] Change log level from warn to debug when cursor mark-deleted position ledger doesn't exist ([#25200](https://github.com/apache/pulsar/pull/25200)) +- [improve][broker] Change the log level from error to info when throwing NotAllowedException ([#25130](https://github.com/apache/pulsar/pull/25130)) +- [improve][broker] Don't log an error when updatePartitionedTopic is called on a non-partitioned topic ([#24943](https://github.com/apache/pulsar/pull/24943)) +- [improve][broker] Enhance advertised address resolution with fallback to localhost ([#25238](https://github.com/apache/pulsar/pull/25238)) +- [improve][broker] Enhance logging for adding schema failures in ServerCnx ([#25048](https://github.com/apache/pulsar/pull/25048)) +- [improve][broker] Ensure metadata session state visibility and improve Unstable observability for ServiceUnitStateChannelImpl ([#25132](https://github.com/apache/pulsar/pull/25132)) +- [improve][broker] Fix replicated subscriptions race condition with mark delete update and snapshot completion ([#16651](https://github.com/apache/pulsar/pull/16651)) +- [improve][broker] Fix thread safety issue in ManagedCursorImpl.removeProperty ([#25104](https://github.com/apache/pulsar/pull/25104)) +- [improve][broker] Give the detail error msg when authenticate failed with AuthenticationException ([#25221](https://github.com/apache/pulsar/pull/25221)) +- [improve][broker] If there is a deadlock in the service, the probe should return a failure because the service may be unavailable ([#23634](https://github.com/apache/pulsar/pull/23634)) +- [improve][broker] Improve replicated subscription snapshot cache so that subscriptions can be replicated when mark delete position update is not frequent ([#25044](https://github.com/apache/pulsar/pull/25044)) +- [improve][broker] Migrate remaining broker proto files from protobuf to LightProto ([#25337](https://github.com/apache/pulsar/pull/25337)) +- [improve][broker] Optimize AsyncTokenBucket overflow solution further to reduce fallback to BigInteger ([#25269](https://github.com/apache/pulsar/pull/25269)) +- [improve][broker] Optimize lookup result warn log ([#24942](https://github.com/apache/pulsar/pull/24942)) +- [improve][broker] Optimize Reader creation in TopicPoliciesService ([#24658](https://github.com/apache/pulsar/pull/24658)) +- [improve][broker] Part-1 of PIP-434: Expose Netty channel configuration WRITE_BUFFER_WATER_MARK to pulsar conf and pause receive requests when channel is unwritable ([#24423](https://github.com/apache/pulsar/pull/24423)) +- [improve][broker] Part-2 of PIP-434: Use ServerCnxThrottleTracker, instead of modifying channel.readable directly ([#24799](https://github.com/apache/pulsar/pull/24799)) +- [improve][broker] PIP-402: Optionally prevent role/originalPrincipal logging ([#23386](https://github.com/apache/pulsar/pull/23386)) +- [improve][broker] PIP-433: Ensure topic creation before starting GEO ([#24652](https://github.com/apache/pulsar/pull/24652)) +- [improve][broker] PIP-434: add configurations to broker.conf ([#24800](https://github.com/apache/pulsar/pull/24800)) +- [improve][broker] PIP-442: Add memory limits for topic list watcher (part 2) ([#25070](https://github.com/apache/pulsar/pull/25070)) +- [improve][broker] PIP-444: Rate limit for deleting ledger to alleviate the zk pressure. ([#24760](https://github.com/apache/pulsar/pull/24760)) +- [improve][broker] PIP-464: Strict Avro schema validation for SchemaType.JSON ([#25362](https://github.com/apache/pulsar/pull/25362)) +- [improve][broker] Reduce the broker close time to avoid useless wait for event loop shutdown ([#24895](https://github.com/apache/pulsar/pull/24895)) +- [improve][broker] Reduce unnecessary MessageMetadata parsing by caching the parsed instance in the broker cache ([#24682](https://github.com/apache/pulsar/pull/24682)) +- [improve][broker] Replace isServiceUnitActiveAsync with checkTopicNsOwnership ([#24780](https://github.com/apache/pulsar/pull/24780)) +- [improve][broker] Update netty allocator default chunk size from 4MB to 8MB, and move internal JVM opts from PULSAR_EXTRA_OPTS to OPTS ([#25274](https://github.com/apache/pulsar/pull/25274)) +- [improve][broker] Use atomic counter for ongoing transaction count ([#25053](https://github.com/apache/pulsar/pull/25053)) +- [improve][broker]Add test for getting partitioned topic metadata with PulsarAdmin client ([#25026](https://github.com/apache/pulsar/pull/25026)) +- [improve][broker]Call scheduleAtFixedRateNonConcurrently for scheduled tasks, instead of scheduleAtFixedRate ([#24596](https://github.com/apache/pulsar/pull/24596)) +- [improve][broker]Improve error response of failed to delete topic if it has replicators connected ([#24975](https://github.com/apache/pulsar/pull/24975)) +- [improve][broker]Improve NamespaceService log that is printed when cluster was removed ([#24801](https://github.com/apache/pulsar/pull/24801)) +- [improve][broker]Part-2 of PIP-433 add validation when enabling namespace-level Geo-Replication ([#25170](https://github.com/apache/pulsar/pull/25170)) +- [improve][broker]Remove the warn log that frequently prints ([#25018](https://github.com/apache/pulsar/pull/25018)) +- [improve][broker]Skip to mark delete if the target position of expira… ([#24881](https://github.com/apache/pulsar/pull/24881)) +- [fix][monitor] Fix the incorrect metrics name ([#21981](https://github.com/apache/pulsar/pull/21981)) +- [improve][admin] Add client side looping to analyze-backlog in Topics to avoid potential HTTP call timeout ([#25127](https://github.com/apache/pulsar/pull/25127)) +- [improve][admin] Add counter for marker messages in PersistentTopics.analyzeSubscriptionBacklog() rest api ([#25091](https://github.com/apache/pulsar/pull/25091)) +- [fix][txn] fix concurrent error cause txn stuck in TransactionBufferHandlerImpl#endTxn ([#23551](https://github.com/apache/pulsar/pull/23551)) +- [improve][ml] Clean up managed-ledger code: deduplicate logic and use shared utilities ([#25298](https://github.com/apache/pulsar/pull/25298)) +- [improve][ml] Improve cache insert performance by removing exists check since it's already covered by putIfAbsent ([#24699](https://github.com/apache/pulsar/pull/24699)) +- [improve][ml] Migrate managed-ledger from protobuf to LightProto ([#25336](https://github.com/apache/pulsar/pull/25336)) +- [improve][offload] Bump hadoop to 3.4.3 and hbase to 2.6.4 ([#25396](https://github.com/apache/pulsar/pull/25396)) +- [improve][meta] Add byte size limit to AbstractMetadataStore's childrenCache ([#24868](https://github.com/apache/pulsar/pull/24868)) +- [improve][meta] PIP-453: Improve the metadata store threading model ([#25187](https://github.com/apache/pulsar/pull/25187)) +- [cleanup][broker] Remove unused configuration maxMessageSizeCheckIntervalInSeconds ([#24958](https://github.com/apache/pulsar/pull/24958)) +- [feat][broker] add topic-level subscription expiration time policy ([#25258](https://github.com/apache/pulsar/pull/25258)) +- [feat][broker] PIP-452: Customizable topic listing of namespace with properties ([#25160](https://github.com/apache/pulsar/pull/25160)) +- [feat][monitor] PIP-447 for Customizable Prometheus Labels for Topic Metrics ([#24991](https://github.com/apache/pulsar/pull/24991)) +- [feat][monitor] Add ML write latency histogram and entry size histogram as OTel metrics ([#24815](https://github.com/apache/pulsar/pull/24815)) +- [feat][monitor] Add publish latency histogram as OTel metrics ([#24810](https://github.com/apache/pulsar/pull/24810)) +- [fix][misc] Allow JWT tokens in OpenID auth without nbf claim ([#25197](https://github.com/apache/pulsar/pull/25197)) +- [feat] PIP-442: Add memory limits for CommandGetTopicsOfNamespace ([#24833](https://github.com/apache/pulsar/pull/24833)) +- [fix] Fix mixed lookup/partition metadata requests causing reliability issues and incorrect responses ([#24832](https://github.com/apache/pulsar/pull/24832)) +- [fix] Handle TLS close_notify to avoid SslClosedEngineException: SSLEngine closed already ([#24986](https://github.com/apache/pulsar/pull/24986)) +- [improve][client/broker] Add DnsResolverGroup to share DNS cache across multiple PulsarClient instances ([#24784](https://github.com/apache/pulsar/pull/24784)) +- [improve] Eliminate unnecessary duplicate schema lookups for partitioned topics in client and geo-replication ([#25011](https://github.com/apache/pulsar/pull/25011)) + +### Client + +- [fix][client] Add description method to ClientBuilder ([#24728](https://github.com/apache/pulsar/pull/24728)) +- [fix][client] Avoid recycling the same ConcurrentBitSetRecyclable among different threads ([#24725](https://github.com/apache/pulsar/pull/24725)) +- [fix][client] ControlledClusterFailover avoid unnecessary reconnection. ([#25178](https://github.com/apache/pulsar/pull/25178)) +- [fix][client] Exclude io.prometheus:simpleclient_caffeine from client-side dependencies ([#24761](https://github.com/apache/pulsar/pull/24761)) +- [fix][client] Fail messages immediately in ProducerImpl when in terminal state ([#25317](https://github.com/apache/pulsar/pull/25317)) +- [fix][client] Fix async APIs to return failed futures on validation errors ([#25287](https://github.com/apache/pulsar/pull/25287)) +- [fix][client] Fix AutoProduceBytesSchema.clone() method ([#25015](https://github.com/apache/pulsar/pull/25015)) +- [fix][client] Fix deduplication for getPartitionedTopicMetadata to include method parameters ([#24965](https://github.com/apache/pulsar/pull/24965)) +- [fix][client] Fix double recycling of the message in isValidConsumerEpoch method ([#25008](https://github.com/apache/pulsar/pull/25008)) +- [fix][client] Fix getPendingQueueSize for PartitionedTopicProducerStatsRecorderImpl: avoid NPE and implement aggregation ([#24830](https://github.com/apache/pulsar/pull/24830)) +- [fix][client] Fix invalid parameter type passed to Map.get in TopicsImpl.getListAsync method ([#25069](https://github.com/apache/pulsar/pull/25069)) +- [fix][client] Fix lookup request semaphore not release problem ([#25038](https://github.com/apache/pulsar/pull/25038)) +- [fix][client] Fix potential NPE in TypedMessageBuilderImpl ([#24691](https://github.com/apache/pulsar/pull/24691)) +- [fix][client] Fix producer synchronous retry handling in failPendingMessages method ([#25207](https://github.com/apache/pulsar/pull/25207)) +- [fix][client] Fix PulsarAdmin description check and add test ([#24734](https://github.com/apache/pulsar/pull/24734)) +- [fix][client] Fix race condition between isDuplicate() and flushAsync() method in PersistentAcknowledgmentsGroupingTracker due to incorrect use Netty Recycler ([#25208](https://github.com/apache/pulsar/pull/25208)) +- [fix][client] Fix receiver queue auto-scale without memory limit ([#24743](https://github.com/apache/pulsar/pull/24743)) +- [fix][client] Fix stale Healthy state in SameAuthParamsLookupAutoClusterFailover causing flaky test ([#25388](https://github.com/apache/pulsar/pull/25388)) +- [fix][client] Fix thread leak in reloadLookUp method which is used by ServiceUrlProvider ([#24794](https://github.com/apache/pulsar/pull/24794)) +- [fix][client] Fix thread-safety of AutoProduceBytesSchema ([#25014](https://github.com/apache/pulsar/pull/25014)) +- [fix][client] Make auto partitions update work for old brokers without PIP-344 ([#24822](https://github.com/apache/pulsar/pull/24822)) +- [fix][client] PIP-84: Skip processing a message in the message listener if the consumer epoch is no longer valid ([#25007](https://github.com/apache/pulsar/pull/25007)) +- [fix][client] Reduce logging in OAuth auth to fix parsing of Pulsar cli command output ([#25254](https://github.com/apache/pulsar/pull/25254)) +- [fix][client] rollback TopicListWatcher retry behavior ([#24752](https://github.com/apache/pulsar/pull/24752)) +- [fix][client] Send all chunkMessageIds to broker for redelivery ([#25229](https://github.com/apache/pulsar/pull/25229)) +- [fix][client] Skip processing messages in the listener when the consumer has been closed ([#25006](https://github.com/apache/pulsar/pull/25006)) +- [fix][client]Producer stuck or geo-replication stuck due to wrong value of message.numMessagesInBatch ([#25106](https://github.com/apache/pulsar/pull/25106)) +- [fix][client]TopicListWatcher not closed when calling PatternMultiTopicsConsumerImpl.closeAsync() method ([#24698](https://github.com/apache/pulsar/pull/24698)) +- [improve][client] PIP-407 Add newMessage with schema and transactions ([#23942](https://github.com/apache/pulsar/pull/23942)) +- [improve][client] Add null checks for MessageAcknowledger methods to prevent NullPointerException ([#25036](https://github.com/apache/pulsar/pull/25036)) +- [improve][client] Allow adding custom description to User-Agent header ([#24729](https://github.com/apache/pulsar/pull/24729)) +- [improve][client] allow override of default global jsr310 conversion ([#24311](https://github.com/apache/pulsar/pull/24311)) +- [improve][client] Deduplicate getTopicsUnderNamespace in BinaryProtoLookupService ([#24962](https://github.com/apache/pulsar/pull/24962)) +- [improve][client] Deduplicate in-progress lookup requests also for HttpLookupService ([#25017](https://github.com/apache/pulsar/pull/25017)) +- [improve][client] Enable configurable preemptive OAuth2 token refresh ([#25363](https://github.com/apache/pulsar/pull/25363)) +- [improve][client] Make authorization server metadata path configurable in AuthenticationOAuth2 ([#25052](https://github.com/apache/pulsar/pull/25052)) +- [improve][client] PIP-420: Update the schema ID format ([#24798](https://github.com/apache/pulsar/pull/24798)) +- [improve][client] Support protobuf v4 schema compatibility ([#25261](https://github.com/apache/pulsar/pull/25261)) +- [improve][client] Test no exception could be thrown for invalid epoch in message ([#25013](https://github.com/apache/pulsar/pull/25013)) +- [improve][client]Add null check for Pulsar client clock configuration ([#24848](https://github.com/apache/pulsar/pull/24848)) +- [improve][client]PIP-436:Add decryptFailListener to Consumer ([#24702](https://github.com/apache/pulsar/pull/24702)) +- [improve][client]Reduce unnecessary getPartitionedTopicMetadata requests when using retry and DLQ topics. ([#25172](https://github.com/apache/pulsar/pull/25172)) +- [cleanup][client] Remove unnecessary pause/resume logic from MultiTopicsConsumerImpl and cleanup putIfAbsent logic ([#25009](https://github.com/apache/pulsar/pull/25009)) +- [feat][client] Implement PIP-234 for sharing thread pools and DNS resolver/cache across multiple Pulsar Client instances ([#24790](https://github.com/apache/pulsar/pull/24790)) +- [feat][client] oauth2 trustcerts file and timeouts ([#24944](https://github.com/apache/pulsar/pull/24944)) +- [feat][client] PIP-234: Support shared resources in PulsarAdmin to reduce thread usage ([#24893](https://github.com/apache/pulsar/pull/24893)) +- [feat][client] PIP-446: Support Native OpenTelemetry Tracing in Pulsar Java Client ([#24873](https://github.com/apache/pulsar/pull/24873)) +- [fix] Handle TLS close_notify to avoid SslClosedEngineException: SSLEngine closed already ([#24986](https://github.com/apache/pulsar/pull/24986)) + +### Pulsar IO and Pulsar Functions + +- [fix][fn] complete flushAsync before closeAsync in ProducerCache and wait for completion in closing the cache ([#25140](https://github.com/apache/pulsar/pull/25140)) +- [fix][fn] Fix graceful Pulsar Function shutdown so that consumers and producers are closed ([#25157](https://github.com/apache/pulsar/pull/25157)) +- [fix][io] Improve Kafka Connect source offset flushing logic ([#24654](https://github.com/apache/pulsar/pull/24654)) +- [fix][io][kca] kafka headers silently dropped ([#25325](https://github.com/apache/pulsar/pull/25325)) +- [improve][fn] Use PulsarByteBufAllocator.DEFAULT instead of ByteBufAllocator.DEFAULT ([#24952](https://github.com/apache/pulsar/pull/24952)) +- [improve][io] Add PUT method support to HttpSink ([#25133](https://github.com/apache/pulsar/pull/25133)) +- [improve][io] Set default connector class for debezium connectors ([#25215](https://github.com/apache/pulsar/pull/25215)) +- [improve][io] Use try-with-resources for some locations ([#24900](https://github.com/apache/pulsar/pull/24900)) +- [cleanup][io] Remove Pulsar IO Flume connector ([#25079](https://github.com/apache/pulsar/pull/25079)) +- [cleanup][io] Remove Pulsar IO Twitter connector ([#25080](https://github.com/apache/pulsar/pull/25080)) +- [feat][fn] Fallback to using `STATE_STORAGE_SERVICE_URL` in `PulsarMetadataStateStoreProviderImpl.init` ([#24721](https://github.com/apache/pulsar/pull/24721)) +- [feat][io] Add ScyllaDB tests ([#24931](https://github.com/apache/pulsar/pull/24931)) +- [feat][io] implement pip-297 for jdbc sinks ([#25195](https://github.com/apache/pulsar/pull/25195)) + +### Others + +- [improve][misc] Add log4j-layout-template-json to server distribution to enable e.g. ECS template support in log4j configurations for Pulsar server components. ([#25027](https://github.com/apache/pulsar/pull/25027)) +- [improve][misc]introduce log4j Console appender ConsoleJson ([#25034](https://github.com/apache/pulsar/pull/25034)) +- [fix][proxy] Close client connection immediately when credentials expire and forwardAuthorizationCredentials is disabled ([#25179](https://github.com/apache/pulsar/pull/25179)) +- [fix][proxy] Fix memory leaks in ParserProxyHandler ([#25142](https://github.com/apache/pulsar/pull/25142)) +- [improve][proxy] Add regression tests for package upload with 'Expect: 100-continue' ([#25211](https://github.com/apache/pulsar/pull/25211)) +- [fix][ws] Fix issue where metadataStoreAllowReadOnlyOperations setting is ignored by WebSocket server ([#25281](https://github.com/apache/pulsar/pull/25281)) +- [fix][cli] Fix output of --print-metadata in cli consume ([#25056](https://github.com/apache/pulsar/pull/25056)) +- [fix][cli] Fix some pulsar-admin topicPolicies commands exiting before async operations complete ([#25051](https://github.com/apache/pulsar/pull/25051)) +- [fix][misc] Fix compareTo contract violation for NamespaceBundleStats, TimeAverageMessageData and ResourceUnitRanking ([#24772](https://github.com/apache/pulsar/pull/24772)) +- [improve][doc] Clarify geo-replication cluster removal behavior for shared vs separate configuration stores ([#24687](https://github.com/apache/pulsar/pull/24687)) +- [improve][doc] Suggest to raise documentation issues to the site repo ([#25162](https://github.com/apache/pulsar/pull/25162)) +- [improve][doc] Update Java version recommendations in README ([#24913](https://github.com/apache/pulsar/pull/24913)) +- [cleanup][doc]Remove TRACING.md as it has been moved to pulsar-site ([#25213](https://github.com/apache/pulsar/pull/25213)) +- [cleanup] PIP-457: Remove NamespaceName.isGlobal() and TopicName.isGlobal() ([#25319](https://github.com/apache/pulsar/pull/25319)) +- [cleanup] PIP-457: Remove support for V1 topic names and V1 Admin API ([#25275](https://github.com/apache/pulsar/pull/25275)) +- [cleanup] PIP-462: Remove Etcd metadata store backend ([#25329](https://github.com/apache/pulsar/pull/25329)) +- [cleanup] Refactored Backoff to be more consistent and intuitive to use ([#25278](https://github.com/apache/pulsar/pull/25278)) +- [feat] PIP-454: Metadata Store Migration Framework (implementation) ([#25219](https://github.com/apache/pulsar/pull/25219)) +- [feat][bookkeeper] add certs refresh ([#25370](https://github.com/apache/pulsar/pull/25370)) +- [fix] Fix typos in class Message and Producer ([#25265](https://github.com/apache/pulsar/pull/25265)) +- [fix] PIP-457: Remove support for V1 topic names and V1 Admin API (implementation) ([#25304](https://github.com/apache/pulsar/pull/25304)) +- [fix]Fixed getChildren('/') on Oxia based provider ([#24863](https://github.com/apache/pulsar/pull/24863)) +- [improve] Add secondary index support to MetadataStore ([#25328](https://github.com/apache/pulsar/pull/25328)) + +### Tests & CI + +- [improve][misc] Protect branch-4.1 ([#24715](https://github.com/apache/pulsar/pull/24715)) +- [fix][build] Activate jdk21 and jdk24 profiles on Java 25 ([#25084](https://github.com/apache/pulsar/pull/25084)) +- [fix][build] Fix compilation issues for PR [#25219](https://github.com/apache/pulsar/pull/25219) changes after merging conflicting PR [#25278](https://github.com/apache/pulsar/pull/25278) ([#25300](https://github.com/apache/pulsar/pull/25300)) +- [fix][build] Fix maven deploy with maven-source-plugin 3.3.1 ([#24811](https://github.com/apache/pulsar/pull/24811)) +- [fix][build] Remove Confluent and Restlet maven repositories from top level pom.xml ([#24981](https://github.com/apache/pulsar/pull/24981)) +- [fix][build] Remove invalid profile in settings.xml that caused gpg signing to fail ([#24812](https://github.com/apache/pulsar/pull/24812)) +- [fix][build] Set project version to 4.2.0-SNAPSHOT ([#24690](https://github.com/apache/pulsar/pull/24690)) +- [fix][ci] Disable trivy-action ([#25373](https://github.com/apache/pulsar/pull/25373)) +- [fix][ci] Fix .github/actions/ssh-access which is used for debugging Pulsar CI in forks ([#25075](https://github.com/apache/pulsar/pull/25075)) +- [fix][ci] Move flaky asyncMarkDeleteBlocking tests to flaky group ([#25096](https://github.com/apache/pulsar/pull/25096)) +- [fix][test] Add Delta Tolerance in Double-Precision Assertions to Fix Rounding Flakiness ([#24972](https://github.com/apache/pulsar/pull/24972)) +- [fix][test] BacklogQuotaManagerTest.backlogsAgeMetricsNoPreciseWithoutBacklogQuota handle empty /metrics scrape ([#24887](https://github.com/apache/pulsar/pull/24887)) +- [fix][test] Bump org.assertj:assertj-core from 3.27.5 to 3.27.7 ([#25186](https://github.com/apache/pulsar/pull/25186)) +- [fix][test] Fix flaky ConnectionTimeoutTest by correcting latch count ([#25320](https://github.com/apache/pulsar/pull/25320)) +- [fix][test] Fix flaky ConsumedLedgersTrimTest.testAdminTrimLedgers ([#25342](https://github.com/apache/pulsar/pull/25342)) +- [fix][test] Fix flaky ConsumedLedgersTrimTest.testAdminTrimLedgers ([#25360](https://github.com/apache/pulsar/pull/25360)) +- [fix][test] Fix flaky ExtensibleLoadManagerImplTest.testLoadBalancerServiceUnitTableViewSyncer ([#25378](https://github.com/apache/pulsar/pull/25378)) +- [fix][test] Fix flaky KeySharedSubscriptionBrokerCacheTest.testReplayQueueReadsGettingCached ([#24955](https://github.com/apache/pulsar/pull/24955)) +- [fix][test] Fix flaky LookupPropertiesTest.testConcurrentLookupProperties ([#24854](https://github.com/apache/pulsar/pull/24854)) +- [fix][test] Fix flaky ManagedCursorTest.testSkipEntries ([#25339](https://github.com/apache/pulsar/pull/25339)) +- [fix][test] Fix flaky MessagePublishBufferThrottleTest.testBlockByPublishRateLimiting ([#25365](https://github.com/apache/pulsar/pull/25365)) +- [fix][test] Fix flaky MetadataStoreTest.testThreadSwitchOfZkMetadataStore ([#25347](https://github.com/apache/pulsar/pull/25347)) +- [fix][test] Fix flaky ModularLoadManagerImplTest.testRemoveNonExistBundleData ([#25143](https://github.com/apache/pulsar/pull/25143)) +- [fix][test] Fix flaky NonPersistentTopicTest.testProducerRateLimit ([#24951](https://github.com/apache/pulsar/pull/24951)) +- [fix][test] Fix flaky OneWayReplicatorUsingGlobalZKTest cleanup ([#25313](https://github.com/apache/pulsar/pull/25313)) +- [fix][test] Fix flaky OneWayReplicatorUsingGlobalZKTest.cleanup ([#25389](https://github.com/apache/pulsar/pull/25389)) +- [fix][test] Fix flaky PersistentStickyKeyDispatcherMultipleConsumersClassicTest.testSkipRedeliverTemporally ([#25385](https://github.com/apache/pulsar/pull/25385)) +- [fix][test] Fix flaky PersistentTopicTerminateTest.testRecoverAfterTerminate ([#25345](https://github.com/apache/pulsar/pull/25345)) +- [fix][test] Fix flaky PersistentTopicTest.testBacklogCursor ([#25348](https://github.com/apache/pulsar/pull/25348)) +- [fix][test] Fix flaky PulsarDebeziumOracleSourceTest ([#25314](https://github.com/apache/pulsar/pull/25314)) +- [fix][test] Fix flaky PulsarFunctionsK8STest ([#25108](https://github.com/apache/pulsar/pull/25108)) +- [fix][test] Fix flaky PulsarFunctionTlsTest.testFunctionsCreation ([#25341](https://github.com/apache/pulsar/pull/25341)) +- [fix][test] Fix flaky ReplicatorRateLimiterTest.testReplicatorRateLimiterMessageReceivedAllMessages ([#25340](https://github.com/apache/pulsar/pull/25340)) +- [fix][test] Fix flaky ReplicatorTest.testResumptionAfterBacklogRelaxed ([#24904](https://github.com/apache/pulsar/pull/24904)) +- [fix][test] Fix flaky ReplicatorTest.testResumptionAfterBacklogRelaxed ([#25358](https://github.com/apache/pulsar/pull/25358)) +- [fix][test] Fix flaky ResendRequestTest.testFailoverSingleAckedNormalTopic ([#25343](https://github.com/apache/pulsar/pull/25343)) +- [fix][test] Fix flaky ResendRequestTest.testFailoverSingleAckedNormalTopic ([#25364](https://github.com/apache/pulsar/pull/25364)) +- [fix][test] Fix flaky ShadowTopicTest.testConsumeShadowMessageWithoutCache ([#25354](https://github.com/apache/pulsar/pull/25354)) +- [fix][test] Fix flaky SingleThreadNonConcurrentFixedRateSchedulerTest.testPeriodicTaskCancellation ([#24823](https://github.com/apache/pulsar/pull/24823)) +- [fix][test] Fix flaky SubscriptionSeekTest.testSeekWillNotEncounteredFencedError by counting subscription is fenced only after seek ([#24865](https://github.com/apache/pulsar/pull/24865)) +- [fix][test] Fix flaky TopicListSizeResultCacheTest concurrent requests test ([#25357](https://github.com/apache/pulsar/pull/25357)) +- [fix][test] Fix flaky TopicTerminationTest.testCreatingProducerTasksCleanupWhenOnTerminatedTopic ([#25355](https://github.com/apache/pulsar/pull/25355)) +- [fix][test] Fix invalid test NonPersistentTopicTest.testProducerRateLimit ([#24957](https://github.com/apache/pulsar/pull/24957)) +- [fix][test] Fix ManagedCursorTest and NonDurableCursorTest flaky tests ([#25101](https://github.com/apache/pulsar/pull/25101)) +- [fix][test] Fix Mockito stubbing race in TopicListServiceTest ([#25227](https://github.com/apache/pulsar/pull/25227)) +- [fix][test] Fix ResourceQuotaCalculatorImplTest#testNeedToReportLocalUsage ([#25247](https://github.com/apache/pulsar/pull/25247)) +- [fix][test] fix testBatchMetadataStoreMetrics. ([#25241](https://github.com/apache/pulsar/pull/25241)) +- [fix][test] Fix the flaky test ProduceWithMessageIdTest. sendWithCallBack ([#25150](https://github.com/apache/pulsar/pull/25150)) +- [fix][test] Fix thread leaks in ClientDeduplicationFailureTest and RackAwareTest ([#25374](https://github.com/apache/pulsar/pull/25374)) +- [fix][test] Fix thread leaks in ManagedLedgerTest and PulsarMockBookKeeper ([#25377](https://github.com/apache/pulsar/pull/25377)) +- [fix][test] Fix thread leaks in multiple tests and KinesisSink ([#25376](https://github.com/apache/pulsar/pull/25376)) +- [fix][test] Fixed Non-Guaranteed Order in PoliciesDataTest.propertyAdmin ([#24871](https://github.com/apache/pulsar/pull/24871)) +- [fix][test] Fixed Nondeterministic Assertions in KafkaAbstractSinkTest ([#24877](https://github.com/apache/pulsar/pull/24877)) +- [fix][test] Fixed nondeterministic JSON ordering in multiple tests ([#24821](https://github.com/apache/pulsar/pull/24821)) +- [fix][test] Fixed Nondeterministic Ordering in Generated Docs Topics ([#24973](https://github.com/apache/pulsar/pull/24973)) +- [fix][test] Fixed nondeterministic ordering in MongoSourceTest.testWriteBadMessage ([#24835](https://github.com/apache/pulsar/pull/24835)) +- [fix][test] Fixed Nondeterministic Ordering in SchemaInfoTest ([#24969](https://github.com/apache/pulsar/pull/24969)) +- [fix][test] Fixed ResponseBody Check in Test Helper ([#24872](https://github.com/apache/pulsar/pull/24872)) +- [fix][test] Flaky-test: BrokerServiceTest.testShutDownWithMaxConcurrentUnload ([#24769](https://github.com/apache/pulsar/pull/24769)) +- [fix][test] Made ProtobufNativeSchemaTest.testSchema order-independent ([#24805](https://github.com/apache/pulsar/pull/24805)) +- [fix][test] Made ProtobufSchemaTest.testParsingInfoProperty order-independent ([#24807](https://github.com/apache/pulsar/pull/24807)) +- [fix][test] Make ClusterMigrationTest.testClusterMigrationWithReplicationBacklog more robust ([#25330](https://github.com/apache/pulsar/pull/25330)) +- [fix][test] Replace LZ4FastDecompressor with LZ4SafeDecompressor in test ([#25032](https://github.com/apache/pulsar/pull/25032)) +- [fix][test] Stabilize FunctionAssignmentTailerTest.testErrorNotifier by synchronizing mock stubbing with CountDownLatch ([#24875](https://github.com/apache/pulsar/pull/24875)) +- [fix][test] Stabilize PublishRateLimiterOverconsumingTest by aligning measurement and using adjacent 2-sec averages ([#24864](https://github.com/apache/pulsar/pull/24864)) +- [fix][test] Stabilize SequenceIdWithErrorTest by fencing after first publish to avoid empty-ledger deletion and send timeout ([#24861](https://github.com/apache/pulsar/pull/24861)) +- [fix][test] Stabilize testMsgDropStat by reliably triggering non-persistent publisher drop ([#24929](https://github.com/apache/pulsar/pull/24929)) +- [fix][test] Use AtomicBoolean.compareAndSet() to guarantee atomicity in testDoIndividualBatchAckNeverAffectIsDuplicate() method ([#25217](https://github.com/apache/pulsar/pull/25217)) +- [fix][test] Wait for txn.abort() to complete to avoid AdminApiTransactionTest.testAnalyzeSubscriptionBacklogWithTransactionMarker() flaky test ([#25125](https://github.com/apache/pulsar/pull/25125)) +- [fix][test] Whitelist SharedPulsarCluster threads in thread leak detector ([#25375](https://github.com/apache/pulsar/pull/25375)) +- [fix][test]Fix flaky ExtensibleLoadManagerImplTest_testGetMetrics ([#25216](https://github.com/apache/pulsar/pull/25216)) +- [fix][test]fix flaky MessagePayloadProcessorTest.testDefaultProcessor ([#24710](https://github.com/apache/pulsar/pull/24710)) +- [fix][test]fix flaky SimpleProducerConsumerTest.testReceiveAsyncCompletedWhenClosing ([#24858](https://github.com/apache/pulsar/pull/24858)) +- [fix] Fix flaky OneWayReplicatorTest.testTopicPoliciesReplicationRule ([#25316](https://github.com/apache/pulsar/pull/25316)) +- [fix] Fix flaky testEstimatedTimeBasedBacklogQuotaCheckWhenNoBacklog ([#25307](https://github.com/apache/pulsar/pull/25307)) +- [improve][build] Add Async Profiler integration for integration tests ([#24688](https://github.com/apache/pulsar/pull/24688)) +- [improve][build] Disable javadoc build failure ([#24594](https://github.com/apache/pulsar/pull/24594)) +- [improve][build] docker: use up to date wolfi-base location ([#24708](https://github.com/apache/pulsar/pull/24708)) +- [improve][build] Support building docker images that use Wolfi base image which is glibc based ([#24692](https://github.com/apache/pulsar/pull/24692)) +- [improve][ci] Move replication tests to new group Broker Group 5 in Pulsar CI ([#24917](https://github.com/apache/pulsar/pull/24917)) +- [improve][ci] Replace PULSARBOT_TOKEN with GITHUB_TOKEN configured with permissions ([#24916](https://github.com/apache/pulsar/pull/24916)) +- [improve][ci] update pulsarbot to use github-script based implementation ([#24940](https://github.com/apache/pulsar/pull/24940)) +- [improve][CI] Add Copilot instructions based on Pulsar Java coding conventions ([#25305](https://github.com/apache/pulsar/pull/25305)) +- [improve][test] Disable flaky PatternConsumerBackPressureTest until the problem is fixed ([#24948](https://github.com/apache/pulsar/pull/24948)) +- [improve][test] Improve integration test profiling test example ([#24701](https://github.com/apache/pulsar/pull/24701)) +- [improve][test] Introduce shared Pulsar cluster for faster integration tests ([#25311](https://github.com/apache/pulsar/pull/25311)) +- [improve][test] Set k8s test retry count to 0 ([#25230](https://github.com/apache/pulsar/pull/25230)) +- [improve][test] Use Oxia project docker container for integration tests ([#24995](https://github.com/apache/pulsar/pull/24995)) +- [cleanup] Convert 10 test classes to SharedPulsarBaseTest ([#25327](https://github.com/apache/pulsar/pull/25327)) +- [cleanup] Convert 10 test classes to SharedPulsarBaseTest ([#25338](https://github.com/apache/pulsar/pull/25338)) +- [cleanup] Convert 12 test classes to SharedPulsarBaseTest ([#25392](https://github.com/apache/pulsar/pull/25392)) +- [cleanup] Convert 13 test classes to SharedPulsarBaseTest ([#25331](https://github.com/apache/pulsar/pull/25331)) +- [cleanup] Convert 15 test classes to SharedPulsarBaseTest ([#25318](https://github.com/apache/pulsar/pull/25318)) +- [cleanup] Convert 30 test classes to SharedPulsarBaseTest ([#25381](https://github.com/apache/pulsar/pull/25381)) + +For the complete list, check the [full changelog](https://github.com/apache/pulsar/compare/45d71f8...v4.2.0). diff --git a/releases.json b/releases.json index 4a8cb34c49c..8a4660e4ab3 100644 --- a/releases.json +++ b/releases.json @@ -1,4 +1,5 @@ [ + "4.2.0", "4.1.3", "4.1.2", "4.1.1",
