| --- |
| 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)) |