Skip to content

Commit 434b0d3

Browse files
authored
MINOR: use enum map for error counts map (#19314)
Java provides a specialised Map where Enums are the keys, which can provide some performance improvements. https://docs.oracle.com/javase/8/docs/api/java/util/EnumMap.html I have updated the Java code where possible to use an EnumMap rather than a HashMap and run the unit tests under the requests directory. Reviewers: Matthias J. Sax <[email protected]>, Lianet Magrans <[email protected]>, Chia-Ping Tsai <[email protected]>
1 parent dcf6f9d commit 434b0d3

File tree

55 files changed

+112
-100
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

55 files changed

+112
-100
lines changed

clients/src/main/java/org/apache/kafka/common/requests/AbstractResponse.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
import java.nio.ByteBuffer;
2626
import java.util.Collection;
2727
import java.util.Collections;
28-
import java.util.HashMap;
28+
import java.util.EnumMap;
2929
import java.util.Map;
3030
import java.util.stream.Collectors;
3131
import java.util.stream.Stream;
@@ -71,14 +71,14 @@ protected static Map<Errors, Integer> errorCounts(Stream<Errors> errors) {
7171
}
7272

7373
protected static Map<Errors, Integer> errorCounts(Collection<Errors> errors) {
74-
Map<Errors, Integer> errorCounts = new HashMap<>();
74+
Map<Errors, Integer> errorCounts = new EnumMap<>(Errors.class);
7575
for (Errors error : errors)
7676
updateErrorCounts(errorCounts, error);
7777
return errorCounts;
7878
}
7979

8080
protected static Map<Errors, Integer> apiErrorCounts(Map<?, ApiError> errors) {
81-
Map<Errors, Integer> errorCounts = new HashMap<>();
81+
Map<Errors, Integer> errorCounts = new EnumMap<>(Errors.class);
8282
for (ApiError apiError : errors.values())
8383
updateErrorCounts(errorCounts, apiError.error());
8484
return errorCounts;

clients/src/main/java/org/apache/kafka/common/requests/AlterClientQuotasResponse.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727

2828
import java.nio.ByteBuffer;
2929
import java.util.ArrayList;
30+
import java.util.EnumMap;
3031
import java.util.HashMap;
3132
import java.util.List;
3233
import java.util.Map;
@@ -74,7 +75,7 @@ public void maybeSetThrottleTimeMs(int throttleTimeMs) {
7475

7576
@Override
7677
public Map<Errors, Integer> errorCounts() {
77-
Map<Errors, Integer> counts = new HashMap<>();
78+
Map<Errors, Integer> counts = new EnumMap<>(Errors.class);
7879
data.entries().forEach(entry ->
7980
updateErrorCounts(counts, Errors.forCode(entry.errorCode()))
8081
);

clients/src/main/java/org/apache/kafka/common/requests/AlterPartitionReassignmentsResponse.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
import org.apache.kafka.common.protocol.Errors;
2424

2525
import java.nio.ByteBuffer;
26-
import java.util.HashMap;
26+
import java.util.EnumMap;
2727
import java.util.Map;
2828

2929
public class AlterPartitionReassignmentsResponse extends AbstractResponse {
@@ -62,7 +62,7 @@ public void maybeSetThrottleTimeMs(int throttleTimeMs) {
6262

6363
@Override
6464
public Map<Errors, Integer> errorCounts() {
65-
Map<Errors, Integer> counts = new HashMap<>();
65+
Map<Errors, Integer> counts = new EnumMap<>(Errors.class);
6666
updateErrorCounts(counts, Errors.forCode(data.errorCode()));
6767

6868
data.responses().forEach(topicResponse ->

clients/src/main/java/org/apache/kafka/common/requests/AlterPartitionResponse.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
import org.apache.kafka.common.protocol.Errors;
2424

2525
import java.nio.ByteBuffer;
26-
import java.util.HashMap;
26+
import java.util.EnumMap;
2727
import java.util.Map;
2828

2929
public class AlterPartitionResponse extends AbstractResponse {
@@ -42,7 +42,7 @@ public AlterPartitionResponseData data() {
4242

4343
@Override
4444
public Map<Errors, Integer> errorCounts() {
45-
Map<Errors, Integer> counts = new HashMap<>();
45+
Map<Errors, Integer> counts = new EnumMap<>(Errors.class);
4646
updateErrorCounts(counts, Errors.forCode(data.errorCode()));
4747
data.topics().forEach(topicResponse -> topicResponse.partitions().forEach(partitionResponse ->
4848
updateErrorCounts(counts, Errors.forCode(partitionResponse.errorCode()))

clients/src/main/java/org/apache/kafka/common/requests/AlterReplicaLogDirsResponse.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
import org.apache.kafka.common.protocol.Errors;
2424

2525
import java.nio.ByteBuffer;
26-
import java.util.HashMap;
26+
import java.util.EnumMap;
2727
import java.util.Map;
2828

2929
/**
@@ -60,7 +60,7 @@ public void maybeSetThrottleTimeMs(int throttleTimeMs) {
6060

6161
@Override
6262
public Map<Errors, Integer> errorCounts() {
63-
Map<Errors, Integer> errorCounts = new HashMap<>();
63+
Map<Errors, Integer> errorCounts = new EnumMap<>(Errors.class);
6464
data.results().forEach(topicResult ->
6565
topicResult.partitions().forEach(partitionResult ->
6666
updateErrorCounts(errorCounts, Errors.forCode(partitionResult.errorCode()))));

clients/src/main/java/org/apache/kafka/common/requests/AlterShareGroupOffsetsResponse.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
import org.apache.kafka.common.protocol.Errors;
2424

2525
import java.nio.ByteBuffer;
26-
import java.util.HashMap;
26+
import java.util.EnumMap;
2727
import java.util.Map;
2828

2929
public class AlterShareGroupOffsetsResponse extends AbstractResponse {
@@ -37,7 +37,7 @@ public AlterShareGroupOffsetsResponse(AlterShareGroupOffsetsResponseData data) {
3737

3838
@Override
3939
public Map<Errors, Integer> errorCounts() {
40-
Map<Errors, Integer> counts = new HashMap<>();
40+
Map<Errors, Integer> counts = new EnumMap<>(Errors.class);
4141
data.responses().forEach(topic -> topic.partitions().forEach(partitionResponse ->
4242
updateErrorCounts(counts, Errors.forCode(partitionResponse.errorCode()))
4343
));

clients/src/main/java/org/apache/kafka/common/requests/BeginQuorumEpochResponse.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
import org.apache.kafka.common.protocol.Errors;
2424

2525
import java.nio.ByteBuffer;
26-
import java.util.HashMap;
26+
import java.util.EnumMap;
2727
import java.util.Map;
2828

2929
/**
@@ -49,7 +49,7 @@ public BeginQuorumEpochResponse(BeginQuorumEpochResponseData data) {
4949

5050
@Override
5151
public Map<Errors, Integer> errorCounts() {
52-
Map<Errors, Integer> errors = new HashMap<>();
52+
Map<Errors, Integer> errors = new EnumMap<>(Errors.class);
5353

5454
errors.put(Errors.forCode(data.errorCode()), 1);
5555

clients/src/main/java/org/apache/kafka/common/requests/BrokerHeartbeatResponse.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
import org.apache.kafka.common.protocol.Errors;
2424

2525
import java.nio.ByteBuffer;
26-
import java.util.HashMap;
26+
import java.util.EnumMap;
2727
import java.util.Map;
2828

2929
public class BrokerHeartbeatResponse extends AbstractResponse {
@@ -51,7 +51,7 @@ public void maybeSetThrottleTimeMs(int throttleTimeMs) {
5151

5252
@Override
5353
public Map<Errors, Integer> errorCounts() {
54-
Map<Errors, Integer> errorCounts = new HashMap<>();
54+
Map<Errors, Integer> errorCounts = new EnumMap<>(Errors.class);
5555
errorCounts.put(Errors.forCode(data.errorCode()), 1);
5656
return errorCounts;
5757
}

clients/src/main/java/org/apache/kafka/common/requests/BrokerRegistrationResponse.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
import org.apache.kafka.common.protocol.Errors;
2424

2525
import java.nio.ByteBuffer;
26-
import java.util.HashMap;
26+
import java.util.EnumMap;
2727
import java.util.Map;
2828

2929
public class BrokerRegistrationResponse extends AbstractResponse {
@@ -51,7 +51,7 @@ public void maybeSetThrottleTimeMs(int throttleTimeMs) {
5151

5252
@Override
5353
public Map<Errors, Integer> errorCounts() {
54-
Map<Errors, Integer> errorCounts = new HashMap<>();
54+
Map<Errors, Integer> errorCounts = new EnumMap<>(Errors.class);
5555
errorCounts.put(Errors.forCode(data.errorCode()), 1);
5656
return errorCounts;
5757
}

clients/src/main/java/org/apache/kafka/common/requests/ConsumerGroupDescribeResponse.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
import org.apache.kafka.common.protocol.Errors;
2323

2424
import java.nio.ByteBuffer;
25-
import java.util.HashMap;
25+
import java.util.EnumMap;
2626
import java.util.Map;
2727

2828
/**
@@ -53,7 +53,7 @@ public ConsumerGroupDescribeResponseData data() {
5353

5454
@Override
5555
public Map<Errors, Integer> errorCounts() {
56-
HashMap<Errors, Integer> counts = new HashMap<>();
56+
Map<Errors, Integer> counts = new EnumMap<>(Errors.class);
5757
data.groups().forEach(
5858
group -> updateErrorCounts(counts, Errors.forCode(group.errorCode()))
5959
);

clients/src/main/java/org/apache/kafka/common/requests/CreatePartitionsResponse.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
import org.apache.kafka.common.protocol.Errors;
2424

2525
import java.nio.ByteBuffer;
26-
import java.util.HashMap;
26+
import java.util.EnumMap;
2727
import java.util.Map;
2828

2929
public class CreatePartitionsResponse extends AbstractResponse {
@@ -42,7 +42,7 @@ public CreatePartitionsResponseData data() {
4242

4343
@Override
4444
public Map<Errors, Integer> errorCounts() {
45-
Map<Errors, Integer> counts = new HashMap<>();
45+
Map<Errors, Integer> counts = new EnumMap<>(Errors.class);
4646
data.results().forEach(result ->
4747
updateErrorCounts(counts, Errors.forCode(result.errorCode()))
4848
);

clients/src/main/java/org/apache/kafka/common/requests/CreateTopicsResponse.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
import org.apache.kafka.common.protocol.Errors;
2424

2525
import java.nio.ByteBuffer;
26-
import java.util.HashMap;
26+
import java.util.EnumMap;
2727
import java.util.Map;
2828

2929
public class CreateTopicsResponse extends AbstractResponse {
@@ -67,7 +67,7 @@ public void maybeSetThrottleTimeMs(int throttleTimeMs) {
6767

6868
@Override
6969
public Map<Errors, Integer> errorCounts() {
70-
HashMap<Errors, Integer> counts = new HashMap<>();
70+
Map<Errors, Integer> counts = new EnumMap<>(Errors.class);
7171
data.topics().forEach(result ->
7272
updateErrorCounts(counts, Errors.forCode(result.errorCode()))
7373
);

clients/src/main/java/org/apache/kafka/common/requests/DeleteGroupsResponse.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import org.apache.kafka.common.protocol.Errors;
2424

2525
import java.nio.ByteBuffer;
26+
import java.util.EnumMap;
2627
import java.util.HashMap;
2728
import java.util.Map;
2829

@@ -69,7 +70,7 @@ public Errors get(String group) throws IllegalArgumentException {
6970

7071
@Override
7172
public Map<Errors, Integer> errorCounts() {
72-
Map<Errors, Integer> counts = new HashMap<>();
73+
Map<Errors, Integer> counts = new EnumMap<>(Errors.class);
7374
data.results().forEach(result ->
7475
updateErrorCounts(counts, Errors.forCode(result.errorCode()))
7576
);

clients/src/main/java/org/apache/kafka/common/requests/DeleteRecordsResponse.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
import org.apache.kafka.common.protocol.Errors;
2424

2525
import java.nio.ByteBuffer;
26-
import java.util.HashMap;
26+
import java.util.EnumMap;
2727
import java.util.Map;
2828

2929
public class DeleteRecordsResponse extends AbstractResponse {
@@ -63,7 +63,7 @@ public void maybeSetThrottleTimeMs(int throttleTimeMs) {
6363

6464
@Override
6565
public Map<Errors, Integer> errorCounts() {
66-
Map<Errors, Integer> errorCounts = new HashMap<>();
66+
Map<Errors, Integer> errorCounts = new EnumMap<>(Errors.class);
6767
data.topics().forEach(topicResponses ->
6868
topicResponses.partitions().forEach(response ->
6969
updateErrorCounts(errorCounts, Errors.forCode(response.errorCode()))

clients/src/main/java/org/apache/kafka/common/requests/DeleteShareGroupOffsetsResponse.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
import org.apache.kafka.common.protocol.Errors;
2424

2525
import java.nio.ByteBuffer;
26-
import java.util.HashMap;
26+
import java.util.EnumMap;
2727
import java.util.Map;
2828

2929
public class DeleteShareGroupOffsetsResponse extends AbstractResponse {
@@ -41,7 +41,7 @@ public DeleteShareGroupOffsetsResponseData data() {
4141

4242
@Override
4343
public Map<Errors, Integer> errorCounts() {
44-
Map<Errors, Integer> counts = new HashMap<>();
44+
Map<Errors, Integer> counts = new EnumMap<>(Errors.class);
4545
data.responses().forEach(
4646
topicResult -> topicResult.partitions().forEach(
4747
partitionResult -> updateErrorCounts(counts, Errors.forCode(partitionResult.errorCode()))

clients/src/main/java/org/apache/kafka/common/requests/DeleteTopicsResponse.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
import org.apache.kafka.common.protocol.Errors;
2323

2424
import java.nio.ByteBuffer;
25-
import java.util.HashMap;
25+
import java.util.EnumMap;
2626
import java.util.Map;
2727

2828

@@ -62,7 +62,7 @@ public DeleteTopicsResponseData data() {
6262

6363
@Override
6464
public Map<Errors, Integer> errorCounts() {
65-
HashMap<Errors, Integer> counts = new HashMap<>();
65+
Map<Errors, Integer> counts = new EnumMap<>(Errors.class);
6666
data.responses().forEach(result ->
6767
updateErrorCounts(counts, Errors.forCode(result.errorCode()))
6868
);

clients/src/main/java/org/apache/kafka/common/requests/DescribeConfigsResponse.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525

2626
import java.nio.ByteBuffer;
2727
import java.util.Collection;
28-
import java.util.HashMap;
28+
import java.util.EnumMap;
2929
import java.util.Map;
3030
import java.util.Objects;
3131
import java.util.function.Function;
@@ -241,7 +241,7 @@ public void maybeSetThrottleTimeMs(int throttleTimeMs) {
241241

242242
@Override
243243
public Map<Errors, Integer> errorCounts() {
244-
Map<Errors, Integer> errorCounts = new HashMap<>();
244+
Map<Errors, Integer> errorCounts = new EnumMap<>(Errors.class);
245245
data.results().forEach(response ->
246246
updateErrorCounts(errorCounts, Errors.forCode(response.errorCode()))
247247
);

clients/src/main/java/org/apache/kafka/common/requests/DescribeGroupsResponse.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626

2727
import java.nio.ByteBuffer;
2828
import java.util.Collections;
29-
import java.util.HashMap;
29+
import java.util.EnumMap;
3030
import java.util.List;
3131
import java.util.Map;
3232
import java.util.Set;
@@ -139,7 +139,7 @@ public void maybeSetThrottleTimeMs(int throttleTimeMs) {
139139

140140
@Override
141141
public Map<Errors, Integer> errorCounts() {
142-
Map<Errors, Integer> errorCounts = new HashMap<>();
142+
Map<Errors, Integer> errorCounts = new EnumMap<>(Errors.class);
143143
data.groups().forEach(describedGroup ->
144144
updateErrorCounts(errorCounts, Errors.forCode(describedGroup.errorCode())));
145145
return errorCounts;

clients/src/main/java/org/apache/kafka/common/requests/DescribeLogDirsResponse.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
import org.apache.kafka.common.protocol.Errors;
2424

2525
import java.nio.ByteBuffer;
26-
import java.util.HashMap;
26+
import java.util.EnumMap;
2727
import java.util.Map;
2828

2929

@@ -56,7 +56,7 @@ public void maybeSetThrottleTimeMs(int throttleTimeMs) {
5656

5757
@Override
5858
public Map<Errors, Integer> errorCounts() {
59-
Map<Errors, Integer> errorCounts = new HashMap<>();
59+
Map<Errors, Integer> errorCounts = new EnumMap<>(Errors.class);
6060
errorCounts.put(Errors.forCode(data.errorCode()), 1);
6161
data.results().forEach(result ->
6262
updateErrorCounts(errorCounts, Errors.forCode(result.errorCode()))

clients/src/main/java/org/apache/kafka/common/requests/DescribeQuorumResponse.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424

2525
import java.nio.ByteBuffer;
2626
import java.util.Collections;
27-
import java.util.HashMap;
27+
import java.util.EnumMap;
2828
import java.util.Map;
2929

3030
/**
@@ -48,7 +48,7 @@ public DescribeQuorumResponse(DescribeQuorumResponseData data) {
4848

4949
@Override
5050
public Map<Errors, Integer> errorCounts() {
51-
Map<Errors, Integer> errors = new HashMap<>();
51+
Map<Errors, Integer> errors = new EnumMap<>(Errors.class);
5252

5353
errors.put(Errors.forCode(data.errorCode()), 1);
5454

clients/src/main/java/org/apache/kafka/common/requests/DescribeShareGroupOffsetsResponse.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525

2626
import java.nio.ByteBuffer;
2727
import java.util.ArrayList;
28+
import java.util.EnumMap;
2829
import java.util.HashMap;
2930
import java.util.List;
3031
import java.util.Map;
@@ -77,7 +78,7 @@ public DescribeShareGroupOffsetsResponseData data() {
7778

7879
@Override
7980
public Map<Errors, Integer> errorCounts() {
80-
Map<Errors, Integer> counts = new HashMap<>();
81+
Map<Errors, Integer> counts = new EnumMap<>(Errors.class);
8182
groupLevelErrors.values().forEach(exception -> updateErrorCounts(counts, Errors.forException(exception)));
8283
for (DescribeShareGroupOffsetsResponseGroup group : data.groups()) {
8384
group.topics().forEach(topic ->

0 commit comments

Comments
 (0)