From d1a821226c1beebae6db66e02a7ae8ada28ffabc Mon Sep 17 00:00:00 2001 From: lorcan Date: Mon, 29 Sep 2025 17:02:32 +0100 Subject: [PATCH] KAFKA-15873: Filter topics before sorting (#19304) Partially addresses KAFKA-15873. When filtering and sorting, we should be applying the filter before the sort of topics. Order that unauthorizedForDescribeTopicMetadata is added to not relevant as it is a HashSet. Reviewers: TaiJuWu , Calvin Liu , Matthias J. Sax --- .../handlers/DescribeTopicPartitionsRequestHandler.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/src/main/java/kafka/server/handlers/DescribeTopicPartitionsRequestHandler.java b/core/src/main/java/kafka/server/handlers/DescribeTopicPartitionsRequestHandler.java index d02fd9d3a7d..9b6a04ee979 100644 --- a/core/src/main/java/kafka/server/handlers/DescribeTopicPartitionsRequestHandler.java +++ b/core/src/main/java/kafka/server/handlers/DescribeTopicPartitionsRequestHandler.java @@ -89,7 +89,7 @@ public class DescribeTopicPartitionsRequestHandler { // Do not disclose the existence of topics unauthorized for Describe, so we've not even checked if they exist or not Set unauthorizedForDescribeTopicMetadata = new HashSet<>(); - Stream authorizedTopicsStream = topics.stream().sorted().filter(topicName -> { + Stream authorizedTopicsStream = topics.stream().filter(topicName -> { boolean isAuthorized = authHelper.authorize( abstractRequest.context(), DESCRIBE, TOPIC, topicName, true, true, 1); if (!fetchAllTopics && !isAuthorized) { @@ -99,7 +99,7 @@ public class DescribeTopicPartitionsRequestHandler { ); } return isAuthorized; - }); + }).sorted(); DescribeTopicPartitionsResponseData response = metadataCache.describeTopicResponse( authorizedTopicsStream.iterator(),