Commit Graph

16412 Commits

Author SHA1 Message Date
Lucas Brutschy 351203873d
KAFKA-19661 [5/N]: Use below-quota as a condition for standby task assignment (#20458)
In the original algorithm, standby tasks are assigned to a  process that
previously owned the task only if it is  “load-balanced”, meaning the
process has fewer tasks that  members, or it is the least loaded
process. This is strong  requirement, and will cause standby tasks to
often not get  assigned to process that previously owned it.
Furthermore,  the condition “is the least loaded process” is hard to
evaluate efficiently in this context.

We propose to instead use the same “below-quota” condition  as in active
task assignment.

We compute a quota for active and standby tasks, by definiing numOfTasks
= numberOfActiveTasks+numberOfStandbyTasks and  defining the quota as
numOfTasks/numberOfMembers rounded up.  Whenever a member becomes “full”
(its assigned number of tasks  is equal to numOfTasks) we deduct its
tasks from numOfTasks and  decrement numberOfMembers and recompute the
quota, which means  that the quota may be reduced by one during the
assignment  process, to avoid uneven assignments.

A standby task can be assigned to a process that previously  owned it,
whenever the process has fewer than  numOfMembersOfProcess*quota.

This condition will, again, prioritize standby stickyness,  and can be
evaluated in constant time.

In our worst-performing benchmark, this improves the runtime  by 2.5x on
top of the previous optimizations, but 5x on the  more important
incremental assignment case.

Reviewers: Bill Bejeck <bbejeck@apache.org>
2025-09-10 17:55:51 +02:00
Shashank 709c5fab22
KAFKA-19666: Remove old restoration codepath from EosIntegrationTest [5/N] (#20499)
clean up `EosIntegrationTest.java`

Reviewers: Lucas Brutschy <lucasbru@apache.org>
2025-09-10 17:10:46 +02:00
Maros Orsak a244565ed2
KAFKA-18708: Move ScramPublisher to metadata module (#20468)
Reviewers: Mickael Maison <mickael.maison@gmail.com>
2025-09-10 16:50:08 +02:00
Mickael Maison 32b8e326da
MINOR: Add 4.1.0 to streams system tests (#20480)
This PR updates all the streams system tests to include 4.1.0.

Reviewers: Lucas Brutschy <lucasbru@apache.org>
2025-09-10 16:23:55 +02:00
Mickael Maison 1ea221c5e9
MINOR: Add 4.1.0 to core system tests (#20477)
This PR updates all the core system tests to include 4.1.0.

Reviewers: Chia-Ping Tsai <chia7712@gmail.com>
2025-09-10 10:15:33 +02:00
PoAn Yang 675552a724
KAFKA-19490: Remove usages of distutils in docker scripts (#20178)
The
[distutils](https://docs.python.org/3.13/whatsnew/3.12.html#distutils)
package is removed from Python 3.12.

Change `distutils` usage to `shutil`.

Reviewers: Mickael Maison <mimaison@apache.org>

---------

Signed-off-by: PoAn Yang <payang@apache.org>
2025-09-10 13:02:03 +08:00
Nikita Shupletsov 8015c87390
KAFKA-19679: Fix NoSuchElementException in oldest open iterator metric (#20512)
Querying the oldest-open-iterator metric can result in a
NoSuchElementException when the last open iterator gets removed, due to
a race condition between the query and the metric update.

To avoid this race condition, this PR caches the metric result, to avoid
accessing the list of open iterator directly.  We don't need to clear
this cache, because the entire metric is removed when the last iterator
gets removed.

Reviewers: Matthias J. Sax <matthias@confluent.io>
2025-09-09 21:18:00 -07:00
Genseric Ghiro 8065d5cb1d
MINOR: Making sure log appender is closed in ShareConsumerImplTest.java::testFailConstructor (#20514)
Similarly to what was done for
AsyncKafkaConsumerTest::testFailConstructor,
[here](https://github.com/apache/kafka/pull/20491)

Reviewers: Lianet Magrans <lmagrans@confluent.io>, Chia-Ping Tsai
 <chia7712@gmail.com>
2025-09-10 07:03:19 +08:00
Lan Ding 45b96cb3a7
MINOR: add the explanation of `null` for DeleteAclsRequest#ResourceNameFilter (#20502)
Add the explanation of `null`  for DeleteAclsRequest#ResourceNameFilter

Reviewers: Ken Huang <s7133700@gmail.com>, TengYao Chi
 <kitingiao@gmail.com>, Chia-Ping Tsai <chia7712@gmail.com>
2025-09-10 06:59:32 +08:00
lucliu1108 0bc2c6e699
MINOR: Move topic creation before consumer creation in testListGroups integration test (#20496)
This PR moves the topic creation before consumer creations in
`PlaintextAdminIntegrationTest.testListGroups`, to avoid potential
errors if consumer creates topic due to metadata update.

See discussion
https://github.com/apache/kafka/pull/20244#discussion_r2325557949

Reviewers: @chia7712, bbejeck@apache.org
2025-09-09 18:05:45 -04:00
Mickael Maison 93512704da
MINOR: Add 4.1.0 to system tests (#20476)
Adding 4.1.0 to system tests as per

https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=34840886#ReleaseProcess-Afterrelease

Reviewers: Chia-Ping Tsai <chia7712@gmail.com>
2025-09-09 18:14:57 +02:00
Chirag Wadhwa d5e624e918
KAFKA-19693: Added PersisterBatch record in Share Partition which includes updatedState and stateBatch (#20507)
The method rollbackOrProcessStateUpdates in SharePartition received 2
separate lists of updatedStates (InFlightState) and stateBatches
(PersisterStateBatch). This PR introduces a new subclass called
`PersisterBatch` which encompasses both these objects.

Reviewers: Apoorv Mittal <apoorvmittal10@gmail.com>
2025-09-09 11:21:42 +01:00
Lucas Brutschy 620a01b74b
KAFKA-19661 [4/N]: Prefer range-style assignment (#20486)
This is actually fixing a difference between the old and the new
assignor. Given the assignment ordering, the legacy assignor has a
preference for range-style assignments built in, that is, assigning

C1: 0_0, 1_0  C2: 0_1, 1_1

instead of

C1: 0_0, 0_1  C2: 1_0, 1_1

We add tests to both assignors to check for this behavior, and improve
the new assingor by enforcing corresponding orderings.

Reviewers: Bill Bejeck <bill@confluent.io>
2025-09-09 10:44:37 +02:00
lucliu1108 f6f5b4cb27
KAFKA-19565: Integration test for Streams-related Admin APIs [2/N] (#20266)
Integration tests for Stream Admin related API

Previous PR: https://github.com/apache/kafka/pull/20244

This one adds:
- Integration test for Admin#listStreamsGroupOffsets API
- Integration test for Admin#deleteStreamsGroupOffsets API
- Integration test for Admin#alterStreamsGroupOffsets API

Reviewers: Alieh Saeedi <asaeedi@confluent.io>, Lucas Brutschy
 <lucasbru@apache.org>
2025-09-09 10:30:39 +02:00
Linsiyuan9 9c9f1446a1
KAFKA-18061 AddRaftVoter responds with error message "NONE" instead of null (#17930)
In `RaftUtil.addVoterResponse` and `RaftUtil.removeVoterResponse`
methods, when the input `errorMessage` is `null`, the returned string is
not actually null but `NONE`.

This introduces an inconsistency: semantically, `null` should represent
“no error message,” while `NONE` looks like a real string value and may
confuse clients.

Reviewers: Alyssa Huang <ahuang@confluent.io>, José Armando García
 Sancio <jsancio@apache.org>, Anton Agestam <anton.agestam@aiven.io>,
 Chia-Ping Tsai <chia7712@gmail.com>
2025-09-09 13:58:10 +08:00
Jonah Hooper 1debe64e8c
MINOR: Rename RecordSnapshotWriter.Builder.setMaxBatchSize to setMaxBatchSizeBytes (#20446)
The original name is confusing which could cause engineers to make a
mistake and confuse the `batchSize` with some other unit like number of
records.

Reviewers: Chia-Ping Tsai <chia7712@gmail.com>
2025-09-09 13:11:45 +08:00
Shashank 639492cc0a
KAFKA-15307: Kafka Streams configuration docs outdated (#20408)
Added new section for window serdes and update Streams configuration
page accordingly.

Reviewers: Matthias J. Sax <matthias@confluent.io>
2025-09-08 17:35:12 -07:00
Matthias J. Sax aa3a64e92c KAFKA-19668: update upgrade docs (#20484)
Docs change for KAFKA-19668 bug fix.

Reviewers: Bill Bejeck <bill@confluent.io>, Lucas Brutschy
<lbrutschy@confluent.io>
2025-09-08 13:36:03 -07:00
Genseric Ghiro 872647fe06
KAFKA-19585: Avoid noisy NPE logs when closing consumer after constructor failures (#20491)
If there's a failure in the kafka consumer constructor, we attempt to
close it

2329def2ff/clients/src/main/java/org/apache/kafka/clients/consumer/internals/AsyncKafkaConsumer.java (L540)
In that case, it could be the case that some components may have not
been created, so we should consider some null checks to avoid noisy logs
about NPE.

This noisy logs have been reported with the console share consumer in a
similar scenario, so this task is to review and do a similar fix for the
Async if needed.

The fix is to check if handlers/invokers are null before trying to close
them. Similar to what was done here
https://github.com/apache/kafka/pull/20290

Reviewers: TengYao Chi <frankvicky@apache.org>, Lianet Magrans
 <lmagrans@confluent.io>
2025-09-08 13:51:57 -04:00
Shashank f7593db287
KAFKA-19666: Remove old restoration codepath from SmokeTestDriverIntegrationTest [3/N] (#20465)
clean up `SmokeTestDriverIntegrationTest`

Reviewers: Lucas Brutschy <lucasbru@apache.org>
2025-09-08 17:48:37 +02:00
Jinhe Zhang b3eed51023
KAFKA-19660: JoinWithIncompleteMetadataIntegrationTest fails in isolated run of one parameter (#20483)
The original test timeout when using new protocol, because it use
`ConsumerConfig.MAX_POLL_INTERVAL_MS_CONFIG` as the exception's timeout,
which is 300s. Also the test for new protocol and old protocol use the
same group ID, so the failure will be hidden.
What I do:
1. Set the timeout as 5 secs so it can be captured within 10s
2. Use new appId for new protocol

Reviewers: Lucas Brutschy <lucasbru@apache.org>
2025-09-08 17:02:11 +02:00
Shashank 24ea7e0b00
KAFKA-19666: Remove old restoration codepath from PauseResumeIntegrationTest [2/N] (#20463)
Clean up `PauseResumeIntegrationTest`

Reviewers: Lucas Brutschy <lucasbru@apache.org>
2025-09-08 09:18:12 +02:00
Sanskar Jhajharia 3c7f99ad31
MINOR: Cleanup Server Module (#20180)
As the PR title suggests, this PR is an attempt to perform some cleanups
in the server module. The changes are mostly around the use of Record
type for some classes, changes to use enhanced switch, etc.

Reviewers: Ken Huang <s7133700@gmail.com>, Chia-Ping Tsai
 <chia7712@gmail.com>
2025-09-08 07:01:09 +08:00
Chang-Yu Huang d6688f869c
KAFKA-15983 Kafka-acls should return authorization already done if repeating work is issued (#20482)
# Description
`kafka-acls.sh` doesn't print message about duplicate authorization.

# Changes 
Now the cli searches for existing AclBinding, prints duplicate bindings,
and removes them from the adding list.

Reviewers: Chia-Ping Tsai <chia7712@gmail.com>
2025-09-07 06:22:02 +08:00
jimmy 350577d0ae
MINOR: Add doc for external schemas in JSONConverter (#20429)
This is a follow-up to #19449, which do the following things:

1. Add document to explain `schema.content` only work for sink connector
when  `schemas.enable` set to true.
2. Handle the case that while jsonValue contains the `schema` and
`payload` fields, we should use the corresponding value.

Reviewers: Priyanka K U <priyanka.ku@gmail.com>, Chia-Ping Tsai
 <chia7712@gmail.com>
2025-09-06 23:51:59 +08:00
Chang-Chi Hsu f6f6172bd1
MINOR: update gradle from 8.14.1 to 8.14.3 (#20495)
**This upgrade includes:**
- Dependency configurations are now realized only when necessary, which
helps improve configuration performance and memory usage.
- The configuration cache improves build time by caching the result of
the configuration phase and reusing it for subsequent builds. This
feature can significantly improve build performance.

reference: [Gradle 8.14.3 Release

Notes](https://docs.gradle.org/8.14.3/release-notes.html#build-authoring-improvements)

Reviewers: Chia-Ping Tsai <chia7712@gmail.com>
2025-09-06 23:40:49 +08:00
Matthias J. Sax 655cfaa7b6
MINOR: remove System.out in test (#20494)
This PR removes two System.out.println(...) statements from
StreamsGraphTest. These outputs were left over from debugging and are
not needed in the test logic.

Reviewers: Ken Huang <s7133700@gmail.com>, TengYao Chi
 <kitingiao@gmail.com>, Chia-Ping Tsai <chia7712@gmail.com>
2025-09-06 23:24:54 +08:00
Sanskar Jhajharia 52dfe1e1b3
MINOR: Cleanup Raft Module (#20348)
This PR aims at cleaning up the `raft` module further by getting rid of
some extra code which can be replaced by `record`

Reviewers: Chia-Ping Tsai <chia7712@gmail.com>
2025-09-06 23:02:14 +08:00
Sanskar Jhajharia 5e2f54e37a
MINOR: Cleanup Connect Module (5/n) (#20393)
This PR aims at cleaning up the`connect:runtime` module further by
getting rid of some extra code which can be replaced by record and the
relevant changes.

Reviewers: Chia-Ping Tsai <chia7712@gmail.com>
2025-09-06 10:08:56 +08:00
Matthias J. Sax 9ba7dd68e6
KAFKA-19668: processValue() must be declared as value-changing operation (#20470)
With "merge.repartition.topic" optimization enabled, Kafka Streams tries
to push repartition topics upstream, to be able to merge multiple
repartition topics from different downstream branches together.

However, it is not safe to push a repartition topic if the parent node
is value-changing: because of potentially changing data types, the
topology might become invalid, and fail with serde error at runtime.

The optimization itself work correctly, however, processValues() is not
correctly declared as value-changing, what can lead to invalid
topologies.

Reviewers: Bill Bejeck <bill@confluent.io>, Lucas Brutschy
 <lbrutschy@confluent.io>
2025-09-05 18:00:24 -07:00
Ken Huang 0a12eaa80e
KAFKA-19112 Unifying LIST-Type Configuration Validation and Default Values (#20334)
We add the three main changes in this PR

- Disallowing null values for most LIST-type configurations makes sense,
since users cannot explicitly set a configuration to null in a
properties file. Therefore, only configurations with a default value of
null should be allowed to accept null.
- Disallowing duplicate values is reasonable, as there are currently no
known configurations in Kafka that require specifying the same value
multiple times. Allowing duplicates is both rare in practice and
potentially confusing to users.
- Disallowing empty list, even though many configurations currently
accept them. In practice, setting an empty list for several of these
configurations can lead to server startup failures or unexpected
behavior. Therefore, enforcing non-empty lists helps prevent
misconfiguration and improves system robustness.
These changes may introduce some backward incompatibility, but this
trade-off is justified by the significant improvements in safety,
consistency, and overall user experience.

Additionally, we introduce two minor adjustments:

- Reclassify some STRING-type configurations as LIST-type, particularly
those using comma-separated values to represent multiple entries. This
change reflects the actual semantics used in Kafka.
- Update the default values for some configurations to better align with
other configs.
These changes will not introduce any compatibility issues.

Reviewers: Jun Rao <junrao@gmail.com>, Chia-Ping Tsai
 <chia7712@gmail.com>
2025-09-06 01:25:55 +08:00
Levani Kokhreidze 548fb18099
MINOR: Fix typo for the headers.separator cli option (#20489)
Should be `headers.separator=<headers.separator>` instead of
`headers.separator=<line.separator>`

Reviewers: Kuan-Po Tseng <brandboat@gmail.com>, Ken Huang
 <s7133700@gmail.com>, Chia-Ping Tsai <chia7712@gmail.com>
2025-09-06 00:57:21 +08:00
Lianet Magrans 5fefb16f14
MINOR: extend consumer close java doc with error handling behaviour (#20472)
Add to the consumer.close java doc to describe the error handling
behaviour.

Reviewers: Matthias J. Sax <matthias@confluent.io>, Chia-Ping Tsai
 <chia7712@gmail.com>, Andrew Schofield <aschofield@confluent.io>,
 TengYao Chi <frankvicky@apache.org>
2025-09-06 00:41:11 +08:00
Kuan-Po Tseng af03353f71
KAFKA-19659: Wrong generic type for UnregisterBrokerOptions (#20490)
Fix wrong generic type for UnregisterBrokerOptions

Reviewers: Andrew Schofield <aschofield@confluent.io>
2025-09-05 16:50:05 +01:00
Jonah Hooper 29ce96151c
MINOR; Revert "KAFKA-18681: Created GetReplicaLogInfo RPCs (#19664)" (#20371)
This reverts commit d86ba7f54a.

Reverting since we are planning to change how KIP-966 is implemented. We
should revert this RPC until we have more clarity on how this KIP will
be executed.

Reviewers: José Armando García Sancio <jsancio@apache.org>
2025-09-05 11:31:50 -04:00
Kirk True f922ff6d1f
KAFKA-19259: Async consumer fetch intermittent delays on console consumer (#19980)
There’s a difference in the two consumers’ `pollForFetches()` methods in
this case: `ClassicKafkaConsumer` doesn't block waiting for data in the
fetch buffer, but `AsyncKafkaConsumer` does.

In `ClassicKafkaConsumer.pollForFetches()`, after enqueuing the `FETCH`
request, the consumer makes a call to `ConsumerNetworkClient.poll()`. In
most cases `poll()` returns almost immediately because it successfully
sent the `FETCH` request. So even when the `pollTimeout` value is, e.g.
3000, the call to `ConsumerNetworkClient.poll()` doesn't block that long
waiting for a response.

After sending out a `FETCH` request, `AsyncKafkaConsumer` then calls
`FetchBuffer.awaitNotEmpty()` and proceeds to block there for the full
length of the timeout. In some cases, the response to the `FETCH` comes
back with no results, which doesn't unblock
`FetchBuffer.awaitNotEmpty()`. So because the application thread is
still waiting for data in the buffer, it remains blocked, preventing any
more `FETCH` requests from being sent, causing the long pauses in the
console consumer.

Reviewers: Lianet Magrans <lmagrans@confluent.io>, Andrew Schofield
 <aschofield@confluent.io>
2025-09-05 10:50:47 -04:00
Jim Galasyn b92d47d487
MINOR: Update Kafka Streams API broker compatibility table for 4.1 (#20423)
Update the Kafka Streams API broker compatibility table for version 4.1.

Reviewers: Matthias J. Sax <matthias@confluent.io>
2025-09-04 17:39:49 -07:00
Lan Ding 32c2383bfa
KAFKA-19658 Tweak org.apache.kafka.clients.consumer.OffsetAndMetadata (#20451)
1. Optimize the `equals()`, `hashCode()`, and `toString()` methods in
`OffsetAndMetadata`.
2. Add UT and IT to these modifications.

Reviewers: TengYao Chi <kitingiao@gmail.com>, Sean Quah
 <squah@confluent.io>, Chia-Ping Tsai <chia7712@gmail.com>
2025-09-05 06:06:08 +08:00
Ken Huang 8076702c4c
MINOR: Add Unit test for `TimingWheel` (#20443)
There is any unit test for `TimingWheel`, we should add test for it.

Reviewers: Chia-Ping Tsai <chia7712@gmail.com>
2025-09-05 05:55:57 +08:00
Shashank d68c41d2f3
KAFKA-19666: Clean up integration tests related to state-updater (#20462)
Clean up `KafkaStreamsTelemetryIntegrationTest.java`

Reviewers: Lucas Brutschy <lucasbru@apache.org>
2025-09-04 21:40:23 +02:00
Andrew Schofield 37e04eca81
KAFKA-19662: Allow resetting offset for unsubscribed topic in kafka-share-groups.sh (#20453)
The `kafka-share-groups.sh` tool checks whether a topic already has a
start-offset in the share group when resetting offsets. This is not
necessary. By removing the check, it is possible to set a start offset
for a topic which has not yet but will be subscribed in the future, thus
initialising the consumption point.

There is still a small piece of outstanding work to do with resetting
the offset for a non-existent group which should also create the group.
A subsequent PR will be used to address that.

Reviewers: Jimmy Wang <48462172+JimmyWang6@users.noreply.github.com>,
Lan Ding <isDing_L@163.com>, Apoorv Mittal <apoorvmittal10@gmail.com>
2025-09-04 18:46:12 +01:00
Andrew Schofield 1d0c5f2820
KAFKA-19667: Close ShareConsumer in ShareConsumerPerformance after metrics displayed (#20467)
Ensure that metrics are retrieved and displayed (when requested) before
ShareConsumer.close() is called. This is important because metrics are
technically supposed to be removed on ShareConsumer.close(), which means
retrieving them after close() would yield an empty map.

Related to https://github.com/apache/kafka/pull/20267.

Reviewers: Apoorv Mittal <apoorvmittal10@gmail.com>
2025-09-04 18:42:58 +01:00
jimmy 9257c431ed
MINOR: Fix failed e2e compatibility_test_new_broker_test and upgrade_test.py (#20471)
#20390 Replace the -`-producer.config` for the verifiable producer and
`--consumer.config` option by `--command-config` for the verifiable
consumer. However, for e2e tests targeting older broker versions, the
original configuration should still be used.

Fix the following tests:
`consumer_protocol_migration_test.py`、`compatibility_test_new_broker_test.py`
and `upgrade_test.py`.

Reviewers: Chia-Ping Tsai <chia7712@gmail.com>, Manikumar Reddy <manikumar.reddy@gmail.com>
2025-09-04 21:02:45 +05:30
Hong-Yi Chen 6a1cdf8262
MINOR: Refactor CLI tools to use CommandLineUtils#maybePrintHelpOrVersion (#20469)
Refactor help and version handling in command-line tools by replacing
duplicate code with `CommandLineUtils#maybePrintHelpOrVersion`.

Reviewers: TengYao Chi <kitingiao@gmail.com>, Ken Huang
 <s7133700@gmail.com>, Jhen-Yung Hsu <jhenyunghsu@gmail.com>, Chia-Ping
 Tsai <chia7712@gmail.com>
2025-09-04 21:43:17 +08:00
Shivsundar R 29b940bef4
MINOR: Use drainEvents() in ShareConsumerImpl::processBackgroundEvents (#20474)
*What*

- Currently in `ShareConsumerImpl`, we were not resetting
`background-event-queue-size` metric to 0 after draining the events from
the queue.
- This PR fixes it by using `BackgroundEventHandler::drainEvents`
similar to `AsyncKafkaConsumer`.
- Added a unit test to verify the metric is reset to 0 after draining
the events.

Reviewers: Andrew Schofield <aschofield@confluent.io>, Chia-Ping Tsai
<chia7712@gmail.com>
2025-09-04 21:39:50 +08:00
lucliu1108 a81f08d368
KAFKA-19550: Integration test for Streams-related Admin APIs [1/N] (#20244)
This change adds:

- Integration test for `Admin#describeStreamsGroups` API
- Integration test for `Admin#deleteStreamsGroup` API

Reviewers: Alieh Saeedi <asaeedi@confluent.io>, Lucas Brutschy
 <lucasbru@apache.org>

---------

Co-authored-by: Lucas Brutschy <lbrutschy@gmail.com>
2025-09-04 15:09:21 +02:00
Mickael Maison 6097b330c3
MINOR: Update supported image tags in docker_scan (#20459)
Update the supported tags for the 4.1.0 release

Reviewers: Luke Chen <showuon@gmail.com>
2025-09-04 09:37:17 +02:00
Matthias J. Sax c3af2064e7
MINOR: code cleanup (#20455)
- rewrite code to avoid @Suppress
- remove unused code
- fix test error message

Reviewer: Lucas Brutschy <lbrutschy@confluent.io>
2025-09-03 17:16:05 -07:00
PoAn Yang ea5b5fec32
KAFKA-19432 Add an ERROR log message if broker.heartbeat.interval.ms is too large (#20046)
* Log error message if `broker.heartbeat.interval.ms * 2` is large than
`broker.session.timeout.ms`.
* Add test case

`testLogBrokerHeartbeatIntervalMsShouldBeLowerThanHalfOfBrokerSessionTimeoutMs`.

Reviewers: Chia-Ping Tsai <chia7712@gmail.com>
2025-09-04 03:40:21 +08:00
Hong-Yi Chen a9bce0647f
KAFKA-19535 add integration tests for DescribeProducersOptions#brokerId (#20420)
Add tests for producer state listing with, without, and invalid
brokerId.

Reviewers: TengYao Chi <kitingiao@gmail.com>, Chia-Ping Tsai
 <chia7712@gmail.com>
2025-09-04 03:15:21 +08:00