Skip to content

feat(java): add async API parity with blocking client (#2716)#2718

Open
atharvalade wants to merge 3 commits intoapache:masterfrom
atharvalade:issue-2716-java-async-api-parity
Open

feat(java): add async API parity with blocking client (#2716)#2718
atharvalade wants to merge 3 commits intoapache:masterfrom
atharvalade:issue-2716-java-async-api-parity

Conversation

@atharvalade
Copy link
Contributor

Which issue does this PR close?

Closes #2716

Rationale

The async TCP client was missing 17 methods that existed in the blocking client, limiting its usability for async workflows.

What changed?

The async TCP client only exposed 5 of 9 sub-client interfaces (Messages, ConsumerGroups, Streams, Topics, Users), and ConsumerGroupsClient had only 2 of 6 methods. This left 17 methods unavailable for async operations.

Added 4 new async client interfaces (SystemClient, PersonalAccessTokensClient, PartitionsClient, ConsumerOffsetsClient) with full TCP implementations, and extended ConsumerGroupsClient with 4 missing methods (get, getAll, create, delete). All async methods follow the existing pattern using CompletableFuture and match the blocking client API exactly.

Local Execution

  • Passed
  • Yes

AI Usage

  1. Which tools? Claude Sonnet 4.5
  2. Scope of usage? Code scaffolding and implementation assistance, AI helped generate the async client interfaces and TCP implementations following existing codebase patterns
  3. How verified? Compiled successfully with Gradle build, reviewed all generated code against blocking client implementations to ensure correct serialization/deserialization logic, command codes, and error handling
  4. Can explain every line? Yes, all code follows established patterns from existing async clients (UsersTcpClient, ConsumerGroupsTcpClient). Each implementation uses BytesSerializer for request payloads, CommandCode enums for operations, and BytesDeserializer for responses with proper resource cleanup in finally blocks.

…he#2654)

Remove all DependsOn attributes from 11 test files. Each test now
creates its own resources with unique names via Guid.NewGuid(),
ensuring full isolation and eliminating ordering dependencies.

Delete 16 unused fixture, helper, and model files that were only
needed by the old DependsOn-based test structure.
Adds 17 missing async methods across System, PersonalAccessTokens, Partitions, ConsumerOffsets, and ConsumerGroups clients. Fixes apache#2716
@atharvalade atharvalade changed the title feat(java-sdk): add async API parity with blocking client (#2716) feat(java): add async API parity with blocking client (#2716) Feb 11, 2026
@codecov
Copy link

codecov bot commented Feb 11, 2026

Codecov Report

❌ Patch coverage is 0% with 188 lines in your changes missing coverage. Please review.
✅ Project coverage is 43.94%. Comparing base (2e74a3e) to head (94bc301).
⚠️ Report is 7 commits behind head on master.

Files with missing lines Patch % Lines
...iggy/client/async/tcp/ConsumerGroupsTcpClient.java 0.00% 43 Missing ⚠️
...lient/async/tcp/PersonalAccessTokensTcpClient.java 0.00% 38 Missing ⚠️
.../apache/iggy/client/async/tcp/SystemTcpClient.java 0.00% 37 Missing ⚠️
...ggy/client/async/tcp/ConsumerOffsetsTcpClient.java 0.00% 27 Missing ⚠️
...che/iggy/client/async/tcp/PartitionsTcpClient.java 0.00% 18 Missing ⚠️
...ache/iggy/client/async/tcp/AsyncIggyTcpClient.java 0.00% 16 Missing ⚠️
...apache/iggy/client/async/ConsumerGroupsClient.java 0.00% 4 Missing ⚠️
...pache/iggy/client/async/ConsumerOffsetsClient.java 0.00% 3 Missing ⚠️
...org/apache/iggy/client/async/PartitionsClient.java 0.00% 2 Missing ⚠️

❗ There is a different number of reports uploaded between BASE (2e74a3e) and HEAD (94bc301). Click for more details.

HEAD has 1 upload less than BASE
Flag BASE (2e74a3e) HEAD (94bc301)
rust 1 0
Additional details and impacted files
@@              Coverage Diff              @@
##             master    #2718       +/-   ##
=============================================
- Coverage     69.04%   43.94%   -25.10%     
- Complexity        0      585      +585     
=============================================
  Files           571      170      -401     
  Lines         55525     4037    -51488     
  Branches      55525      265    -55260     
=============================================
- Hits          38336     1774    -36562     
+ Misses        15315     2199    -13116     
+ Partials       1874       64     -1810     
Flag Coverage Δ
java 43.94% <0.00%> (?)
rust ?

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing lines Coverage Δ
...org/apache/iggy/client/async/PartitionsClient.java 0.00% <0.00%> (ø)
...pache/iggy/client/async/ConsumerOffsetsClient.java 0.00% <0.00%> (ø)
...apache/iggy/client/async/ConsumerGroupsClient.java 0.00% <0.00%> (ø)
...ache/iggy/client/async/tcp/AsyncIggyTcpClient.java 1.61% <0.00%> (ø)
...che/iggy/client/async/tcp/PartitionsTcpClient.java 0.00% <0.00%> (ø)
...ggy/client/async/tcp/ConsumerOffsetsTcpClient.java 0.00% <0.00%> (ø)
.../apache/iggy/client/async/tcp/SystemTcpClient.java 0.00% <0.00%> (ø)
...lient/async/tcp/PersonalAccessTokensTcpClient.java 0.00% <0.00%> (ø)
...iggy/client/async/tcp/ConsumerGroupsTcpClient.java 0.00% <0.00%> (ø)

... and 732 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Java SDK] Async client missing API parity with blocking client

2 participants