From d22dd437f18d454128988666e4baf75692fa0b5e Mon Sep 17 00:00:00 2001 From: Armin Braun Date: Fri, 3 Jul 2020 09:18:14 +0200 Subject: [PATCH] Fix Two Common Zero Len Array Instantiations (#58944) (#58993) Two spots I found in which we commonly instatiate a non-trivial number of zero length arrays. --- .../replication/ReplicationResponse.java | 17 ++++++++--------- .../org/elasticsearch/common/lucene/Lucene.java | 12 +++++++++--- 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/server/src/main/java/org/elasticsearch/action/support/replication/ReplicationResponse.java b/server/src/main/java/org/elasticsearch/action/support/replication/ReplicationResponse.java index 73cda9298c8..70da7a6847c 100644 --- a/server/src/main/java/org/elasticsearch/action/support/replication/ReplicationResponse.java +++ b/server/src/main/java/org/elasticsearch/action/support/replication/ReplicationResponse.java @@ -87,9 +87,11 @@ public class ReplicationResponse extends ActionResponse { total = in.readVInt(); successful = in.readVInt(); int size = in.readVInt(); - failures = new Failure[size]; - for (int i = 0; i < size; i++) { - failures[i] = new Failure(in); + if (size > 0) { + failures = new Failure[size]; + for (int i = 0; i < size; i++) { + failures[i] = new Failure(in); + } } } @@ -223,9 +225,9 @@ public class ReplicationResponse extends ActionResponse { private static final String STATUS = "status"; private static final String PRIMARY = "primary"; - private ShardId shardId; - private String nodeId; - private boolean primary; + private final ShardId shardId; + private final String nodeId; + private final boolean primary; public Failure(StreamInput in) throws IOException { shardId = new ShardId(in); @@ -244,9 +246,6 @@ public class ReplicationResponse extends ActionResponse { this.primary = primary; } - Failure() { - } - public ShardId fullShardId() { return shardId; } diff --git a/server/src/main/java/org/elasticsearch/common/lucene/Lucene.java b/server/src/main/java/org/elasticsearch/common/lucene/Lucene.java index 44d6b3a87dd..40e43c5c660 100644 --- a/server/src/main/java/org/elasticsearch/common/lucene/Lucene.java +++ b/server/src/main/java/org/elasticsearch/common/lucene/Lucene.java @@ -306,9 +306,15 @@ public class Lucene { TotalHits totalHits = readTotalHits(in); float maxScore = in.readFloat(); - ScoreDoc[] scoreDocs = new ScoreDoc[in.readVInt()]; - for (int i = 0; i < scoreDocs.length; i++) { - scoreDocs[i] = new ScoreDoc(in.readVInt(), in.readFloat()); + final int scoreDocCount = in.readVInt(); + final ScoreDoc[] scoreDocs; + if (scoreDocCount == 0) { + scoreDocs = EMPTY_SCORE_DOCS; + } else { + scoreDocs = new ScoreDoc[scoreDocCount]; + for (int i = 0; i < scoreDocs.length; i++) { + scoreDocs[i] = new ScoreDoc(in.readVInt(), in.readFloat()); + } } return new TopDocsAndMaxScore(new TopDocs(totalHits, scoreDocs), maxScore); } else if (type == 1) {