diff --git a/clients/src/main/java/org/apache/kafka/common/quota/ClientQuotaFilterComponent.java b/clients/src/main/java/org/apache/kafka/common/quota/ClientQuotaFilterComponent.java index b981ead63fbc3..9fc8f72fa9f23 100644 --- a/clients/src/main/java/org/apache/kafka/common/quota/ClientQuotaFilterComponent.java +++ b/clients/src/main/java/org/apache/kafka/common/quota/ClientQuotaFilterComponent.java @@ -94,7 +94,7 @@ public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; ClientQuotaFilterComponent that = (ClientQuotaFilterComponent) o; - return Objects.equals(entityType, match); + return Objects.equals(that.entityType, entityType) && Objects.equals(that.match, match); } @Override diff --git a/clients/src/main/java/org/apache/kafka/common/requests/DescribeClientQuotasRequest.java b/clients/src/main/java/org/apache/kafka/common/requests/DescribeClientQuotasRequest.java index a5496ef0f619b..593cc6a9aace0 100644 --- a/clients/src/main/java/org/apache/kafka/common/requests/DescribeClientQuotasRequest.java +++ b/clients/src/main/java/org/apache/kafka/common/requests/DescribeClientQuotasRequest.java @@ -25,7 +25,6 @@ import java.util.ArrayList; import java.util.List; -import java.util.Collection; public class DescribeClientQuotasRequest extends AbstractRequest { // These values must not change. diff --git a/clients/src/test/java/org/apache/kafka/clients/admin/KafkaAdminClientTest.java b/clients/src/test/java/org/apache/kafka/clients/admin/KafkaAdminClientTest.java index b6f8417c7e05c..b7aac26b534cf 100644 --- a/clients/src/test/java/org/apache/kafka/clients/admin/KafkaAdminClientTest.java +++ b/clients/src/test/java/org/apache/kafka/clients/admin/KafkaAdminClientTest.java @@ -168,6 +168,7 @@ import static org.apache.kafka.common.message.ListPartitionReassignmentsResponseData.OngoingTopicReassignment; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertThrows; @@ -2878,6 +2879,28 @@ public void testDescribeClientQuotas() throws Exception { } } + @Test + public void testEqualsOfClientQuotaFilterComponent() { + assertEquals(ClientQuotaFilterComponent.ofDefaultEntity(ClientQuotaEntity.USER), + ClientQuotaFilterComponent.ofDefaultEntity(ClientQuotaEntity.USER)); + + assertEquals(ClientQuotaFilterComponent.ofEntityType(ClientQuotaEntity.USER), + ClientQuotaFilterComponent.ofEntityType(ClientQuotaEntity.USER)); + + // match = null is different from match = Empty + assertNotEquals(ClientQuotaFilterComponent.ofDefaultEntity(ClientQuotaEntity.USER), + ClientQuotaFilterComponent.ofEntityType(ClientQuotaEntity.USER)); + + assertEquals(ClientQuotaFilterComponent.ofEntity(ClientQuotaEntity.USER, "user"), + ClientQuotaFilterComponent.ofEntity(ClientQuotaEntity.USER, "user")); + + assertNotEquals(ClientQuotaFilterComponent.ofEntity(ClientQuotaEntity.USER, "user"), + ClientQuotaFilterComponent.ofDefaultEntity(ClientQuotaEntity.USER)); + + assertNotEquals(ClientQuotaFilterComponent.ofEntity(ClientQuotaEntity.USER, "user"), + ClientQuotaFilterComponent.ofEntityType(ClientQuotaEntity.USER)); + } + public void testAlterClientQuotas() throws Exception { try (AdminClientUnitTestEnv env = mockClientEnv()) { env.kafkaClient().setNodeApiVersions(NodeApiVersions.create()); diff --git a/core/src/main/scala/kafka/server/KafkaApis.scala b/core/src/main/scala/kafka/server/KafkaApis.scala index 4f1247356652a..95b95e8ca45fe 100644 --- a/core/src/main/scala/kafka/server/KafkaApis.scala +++ b/core/src/main/scala/kafka/server/KafkaApis.scala @@ -2820,7 +2820,7 @@ class KafkaApis(val requestChannel: RequestChannel, if (authorize(request, DESCRIBE_CONFIGS, CLUSTER, CLUSTER_NAME)) { val result = adminManager.describeClientQuotas( - describeClientQuotasRequest.filter).mapValues(_.mapValues(Double.box).asJava).asJava + describeClientQuotasRequest.filter).mapValues(_.mapValues(Double.box).toMap.asJava).toMap.asJava sendResponseMaybeThrottle(request, requestThrottleMs => new DescribeClientQuotasResponse(result, requestThrottleMs)) } else {