You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jira@kafka.apache.org by "GiminKim (Jira)" <ji...@apache.org> on 2026/08/05 08:30:00 UTC
[jira] [Created] (KAFKA-20894) StreamsGroupDescription.toString throws NullPointerException when authorized operations are omitted
GiminKim created KAFKA-20894:
--------------------------------
Summary: StreamsGroupDescription.toString throws NullPointerException when authorized operations are omitted
Key: KAFKA-20894
URL: https://issues.apache.org/jira/browse/KAFKA-20894
Project: Kafka
Issue Type: Bug
Components: clients
Reporter: GiminKim
Assignee: GiminKim
h2. Problem
`DescribeStreamsGroupsOptions.includeAuthorizedOperations()` defaults to `false`. In this normal request path, the broker omits authorized operations and `AdminUtils.validAclOperations()` converts the omitted value to `null`. `StreamsGroupDescription` and its Javadoc explicitly allow that nullable state.
However, `StreamsGroupDescription.toString()` unconditionally calls `authorizedOperations.stream()`. As a result, merely logging or rendering a successfully returned description can throw `NullPointerException`.
h2. Reproduction
{code:java}
StreamsGroupDescription description = result.get();
log.info("group={}", description);
{code}
The failure occurs when authorized operations were not requested:
{code}
includeAuthorizedOperations=false
-> server omits authorized operations
-> validAclOperations() returns null
-> StreamsGroupDescription stores null
-> toString() calls authorizedOperations.stream()
-> NullPointerException
{code}
h2. Expected behavior
`toString()` should handle the documented omitted state and render `authorizedOperations=null`. Formatting for populated authorized-operation sets should remain unchanged.
h2. Root cause
The constructor and accessor accept and document `null`, but `toString()` assumes the set is always non-null.
h2. Proposed fix
Add a null check in `StreamsGroupDescription.toString()` and extend the existing AdminClient test for an omitted authorized-operations response to assert that `toString()` does not throw and includes `authorizedOperations=null`.
h2. Testing
* Targeted `KafkaAdminClientTest` and `DescribeStreamsGroupsHandlerTest`
* Full `clients:test` suite
* Checkstyle and SpotBugs main analysis
* `spotlessCheck`
All applicable local tests and quality checks pass.
h2. Pull request
[apache/kafka#23081|https://github.com/apache/kafka/pull/23081]
--
This message was sent by Atlassian Jira
(v8.20.10#820010)