This is an automated email from the ASF dual-hosted git repository.

echobravo pushed a commit to branch release/1.12.0
in repository https://gitbox.apache.org/repos/asf/geode.git


The following commit(s) were added to refs/heads/release/1.12.0 by this push:
     new cb64136  GEODE-7820: Avoid Unnecessary toArray Invocations (#4741)
cb64136 is described below

commit cb64136003cc1f0fe2f7cde519794f53ecc1abdf
Author: Juan José Ramos <jujora...@users.noreply.github.com>
AuthorDate: Fri Feb 28 11:40:05 2020 +0000

    GEODE-7820: Avoid Unnecessary toArray Invocations (#4741)
    
    Avoid unnecessary invocations to the 'toArray' method and directly
    use the java collection received instead.
    
    (cherry picked from commit ca7ccbce73d436005fe027f31ee910ee9beeb769)
---
 .../distributed/internal/ProduceDateMessages.java  |  2 +-
 ...ntServerTransactionFailoverDistributedTest.java |  2 +-
 .../internal/ClusterDistributionManager.java       | 16 ++++---
 .../geode/distributed/internal/Distribution.java   |  9 ++--
 .../distributed/internal/DistributionImpl.java     | 22 ++++------
 .../distributed/internal/DistributionMessage.java  | 49 +++++++---------------
 .../geode/internal/admin/remote/AdminRequest.java  | 15 ++++---
 .../geode/internal/admin/remote/AdminResponse.java | 12 +++---
 .../internal/admin/remote/CompactRequest.java      |  7 ++--
 .../internal/admin/remote/ShutdownAllRequest.java  |  3 +-
 .../geode/internal/cache/StateFlushOperation.java  |  2 +-
 .../cache/partitioned/PartitionMessage.java        |  2 +-
 .../internal/cache/partitioned/PutMessage.java     |  3 +-
 .../internal/cache/tx/RemoteOperationMessage.java  | 13 +++---
 .../internal/messages/CompactRequest.java          |  5 +--
 .../distributed/internal/DistributionTest.java     | 32 +++++++-------
 16 files changed, 81 insertions(+), 113 deletions(-)

diff --git 
a/geode-core/src/distributedTest/java/org/apache/geode/distributed/internal/ProduceDateMessages.java
 
b/geode-core/src/distributedTest/java/org/apache/geode/distributed/internal/ProduceDateMessages.java
index 33b9fe9..99d414c 100644
--- 
a/geode-core/src/distributedTest/java/org/apache/geode/distributed/internal/ProduceDateMessages.java
+++ 
b/geode-core/src/distributedTest/java/org/apache/geode/distributed/internal/ProduceDateMessages.java
@@ -36,7 +36,7 @@ public class ProduceDateMessages {
 
       // Make sure that message state was reset
       Assert.assertTrue(message.getDate() == null);
-      Assert.assertTrue(message.getRecipientsArray() == null);
+      Assert.assertTrue(message.getRecipients() == null);
       Assert.assertTrue(message.getSender() == null);
 
       message.setRecipient(DistributionMessage.ALL_RECIPIENTS);
diff --git 
a/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/ClientServerTransactionFailoverDistributedTest.java
 
b/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/ClientServerTransactionFailoverDistributedTest.java
index c52f7a2..3ffc4ee 100644
--- 
a/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/ClientServerTransactionFailoverDistributedTest.java
+++ 
b/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/ClientServerTransactionFailoverDistributedTest.java
@@ -390,7 +390,7 @@ public class ClientServerTransactionFailoverDistributedTest 
implements Serializa
             public void beforeSendMessage(ClusterDistributionManager dm,
                 DistributionMessage message) {
               if (message instanceof 
TXCommitMessage.CommitProcessForTXIdMessage) {
-                InternalDistributedMember m = message.getRecipientsArray()[0];
+                InternalDistributedMember m = message.getRecipients().get(0);
                 message.resetRecipients();
                 message.setRecipient(m);
               }
diff --git 
a/geode-core/src/main/java/org/apache/geode/distributed/internal/ClusterDistributionManager.java
 
b/geode-core/src/main/java/org/apache/geode/distributed/internal/ClusterDistributionManager.java
index 0ece626..87202bc 100644
--- 
a/geode-core/src/main/java/org/apache/geode/distributed/internal/ClusterDistributionManager.java
+++ 
b/geode-core/src/main/java/org/apache/geode/distributed/internal/ClusterDistributionManager.java
@@ -20,7 +20,6 @@ import java.io.NotSerializableException;
 import java.net.InetAddress;
 import java.net.UnknownHostException;
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Comparator;
@@ -1955,7 +1954,7 @@ public class ClusterDistributionManager implements 
DistributionManager {
     try {
       // m.resetTimestamp(); // nanotimers across systems don't match
       long startTime = DistributionStats.getStatTime();
-      sendViaMembershipManager(m.getRecipientsArray(), m, this, stats);
+      sendViaMembershipManager(m.getRecipients(), m, this, stats);
       stats.incSentMessages(1L);
       if (DistributionStats.enableClockStats) {
         stats.incSentMessagesTime(DistributionStats.getStatTime() - startTime);
@@ -1984,7 +1983,7 @@ public class ClusterDistributionManager implements 
DistributionManager {
     long startTime = DistributionStats.getStatTime();
 
     Set<InternalDistributedMember> result =
-        sendViaMembershipManager(message.getRecipientsArray(), message, this, 
stats);
+        sendViaMembershipManager(message.getRecipients(), message, this, 
stats);
     long endTime = 0L;
     if (DistributionStats.enableClockStats) {
       endTime = NanoTimer.getTime();
@@ -2036,7 +2035,7 @@ public class ClusterDistributionManager implements 
DistributionManager {
       if (message == null || message.forAll()) {
         return null;
       }
-      return new HashSet<>(Arrays.asList(message.getRecipientsArray()));
+      return new HashSet<>(message.getRecipients());
     }
   }
 
@@ -2046,17 +2045,16 @@ public class ClusterDistributionManager implements 
DistributionManager {
    * @throws NotSerializableException If content cannot be serialized
    */
   private Set<InternalDistributedMember> sendViaMembershipManager(
-      InternalDistributedMember[] destinations,
+      List<InternalDistributedMember> destinations,
       DistributionMessage content, ClusterDistributionManager dm, 
DistributionStats stats)
       throws NotSerializableException {
     if (distribution == null) {
       logger.warn("Attempting a send to a disconnected DistributionManager");
-      if (destinations.length == 1 && destinations[0] == 
Message.ALL_RECIPIENTS)
+      if (destinations.size() == 1 && destinations.get(0) == 
Message.ALL_RECIPIENTS)
         return null;
-      HashSet<InternalDistributedMember> result = new HashSet<>();
-      Collections.addAll(result, destinations);
-      return result;
+      return new HashSet<>(destinations);
     }
+
     return distribution.send(destinations, content);
   }
 
diff --git 
a/geode-core/src/main/java/org/apache/geode/distributed/internal/Distribution.java
 
b/geode-core/src/main/java/org/apache/geode/distributed/internal/Distribution.java
index d865fcd..4e15d3e 100644
--- 
a/geode-core/src/main/java/org/apache/geode/distributed/internal/Distribution.java
+++ 
b/geode-core/src/main/java/org/apache/geode/distributed/internal/Distribution.java
@@ -15,6 +15,7 @@
 package org.apache.geode.distributed.internal;
 
 import java.io.NotSerializableException;
+import java.util.List;
 import java.util.Map;
 import java.util.Set;
 import java.util.concurrent.TimeoutException;
@@ -33,13 +34,11 @@ public interface Distribution {
 
   InternalDistributedMember getLocalMember();
 
-  Set<InternalDistributedMember> send(InternalDistributedMember[] destinations,
+  Set<InternalDistributedMember> send(List<InternalDistributedMember> 
destinations,
       DistributionMessage msg) throws NotSerializableException;
 
-  Set<InternalDistributedMember> directChannelSend(
-      InternalDistributedMember[] destinations,
-      DistributionMessage content)
-      throws NotSerializableException;
+  Set<InternalDistributedMember> 
directChannelSend(List<InternalDistributedMember> destinations,
+      DistributionMessage content) throws NotSerializableException;
 
   Map<String, Long> getMessageState(
       DistributedMember member, boolean includeMulticast);
diff --git 
a/geode-core/src/main/java/org/apache/geode/distributed/internal/DistributionImpl.java
 
b/geode-core/src/main/java/org/apache/geode/distributed/internal/DistributionImpl.java
index 20d2342..a89d23f 100644
--- 
a/geode-core/src/main/java/org/apache/geode/distributed/internal/DistributionImpl.java
+++ 
b/geode-core/src/main/java/org/apache/geode/distributed/internal/DistributionImpl.java
@@ -19,8 +19,6 @@ import java.io.DataInput;
 import java.io.DataOutput;
 import java.io.IOException;
 import java.io.NotSerializableException;
-import java.util.Arrays;
-import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Iterator;
@@ -235,7 +233,7 @@ public class DistributionImpl implements Distribution {
   }
 
   @Override
-  public Set<InternalDistributedMember> send(InternalDistributedMember[] 
destinations,
+  public Set<InternalDistributedMember> send(List<InternalDistributedMember> 
destinations,
       DistributionMessage msg) throws NotSerializableException {
     Set<InternalDistributedMember> result;
     boolean allDestinations = msg.forAll();
@@ -246,18 +244,16 @@ public class DistributionImpl implements Distribution {
 
     if (membership.isJoining()) {
       // If we get here, we are starting up, so just report a failure.
-      if (allDestinations)
+      if (allDestinations) {
         return null;
-      else {
-        result = new HashSet<>();
-        Collections.addAll(result, destinations);
-        return result;
+      } else {
+        return new HashSet<>(destinations);
       }
     }
 
     if (msg instanceof AdminMessageType && shutdownInProgress()) {
       // no admin messages while shutting down - this can cause threads to hang
-      return new HashSet<>(Arrays.asList(msg.getRecipientsArray()));
+      return new HashSet<>(msg.getRecipients());
     }
 
     // Handle trivial cases
@@ -267,7 +263,7 @@ public class DistributionImpl implements Distribution {
             msg);
       return null; // trivially: all recipients received the message
     }
-    if (destinations.length == 0) {
+    if (destinations.isEmpty()) {
       if (logger.isTraceEnabled())
         logger.trace(
             "Membership: Message send: returning early because empty 
destination list passed in: '{}'",
@@ -288,7 +284,7 @@ public class DistributionImpl implements Distribution {
     boolean sendViaMessenger = isForceUDPCommunications() || (msg instanceof 
ShutdownMessage);
 
     if (useMcast || tcpDisabled || sendViaMessenger) {
-      result = membership.send(destinations, msg);
+      result = membership.send(destinations.toArray(EMPTY_MEMBER_ARRAY), msg);
     } else {
       result = directChannelSend(destinations, msg);
     }
@@ -328,7 +324,7 @@ public class DistributionImpl implements Distribution {
    */
   @Override
   public Set<InternalDistributedMember> directChannelSend(
-      InternalDistributedMember[] destinations,
+      List<InternalDistributedMember> destinations,
       DistributionMessage content)
       throws NotSerializableException {
     MembershipStatistics theStats = clusterDistributionManager.getStats();
@@ -339,7 +335,7 @@ public class DistributionImpl implements Distribution {
       keys = membership.getAllMembers(EMPTY_MEMBER_ARRAY);
     } else {
       allDestinations = false;
-      keys = destinations;
+      keys = destinations.toArray(EMPTY_MEMBER_ARRAY);
     }
 
     int sentBytes;
diff --git 
a/geode-core/src/main/java/org/apache/geode/distributed/internal/DistributionMessage.java
 
b/geode-core/src/main/java/org/apache/geode/distributed/internal/DistributionMessage.java
index bf5bfab..4fed3c1 100644
--- 
a/geode-core/src/main/java/org/apache/geode/distributed/internal/DistributionMessage.java
+++ 
b/geode-core/src/main/java/org/apache/geode/distributed/internal/DistributionMessage.java
@@ -17,7 +17,7 @@ package org.apache.geode.distributed.internal;
 import java.io.DataInput;
 import java.io.DataOutput;
 import java.io.IOException;
-import java.util.Arrays;
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
@@ -75,13 +75,6 @@ public abstract class DistributionMessage
   protected static final InternalDistributedMember ALL_RECIPIENTS = null;
 
   @Immutable
-  private static final InternalDistributedMember[] ALL_RECIPIENTS_ARRAY = 
{null};
-
-  @Immutable
-  private static final InternalDistributedMember[] EMPTY_RECIPIENTS_ARRAY =
-      new InternalDistributedMember[0];
-
-  @Immutable
   private static final List<InternalDistributedMember> ALL_RECIPIENTS_LIST =
       Collections.singletonList(null);
 
@@ -108,7 +101,7 @@ public abstract class DistributionMessage
   protected transient InternalDistributedMember sender;
 
   /** A set of recipients for this message, not serialized */
-  private transient InternalDistributedMember[] recipients = null;
+  private transient List<InternalDistributedMember> recipients = null;
 
   /** A timestamp, in nanos, associated with this message. Not serialized. */
   private transient long timeStamp;
@@ -225,7 +218,8 @@ public abstract class DistributionMessage
       throw new IllegalStateException(
           "Recipients can only be set once");
     }
-    this.recipients = new InternalDistributedMember[] {recipient};
+
+    this.recipients = Collections.singletonList(recipient);
   }
 
   /**
@@ -261,8 +255,7 @@ public abstract class DistributionMessage
    */
   @Override
   public void setRecipients(Collection recipients) {
-    this.recipients = (InternalDistributedMember[]) recipients
-        .toArray(EMPTY_RECIPIENTS_ARRAY);
+    this.recipients = new ArrayList<>(recipients);
   }
 
   @Override
@@ -277,39 +270,25 @@ public abstract class DistributionMessage
 
   @Override
   public List<InternalDistributedMember> getRecipients() {
-    InternalDistributedMember[] recipients = getRecipientsArray();
     if (recipients == null
-        || recipients.length == 1 && recipients[0] == ALL_RECIPIENTS) {
+        || recipients.size() == 1 && recipients.get(0) == ALL_RECIPIENTS) {
       return ALL_RECIPIENTS_LIST;
     }
-    return Arrays.asList(recipients);
-  }
 
+    return recipients;
+  }
 
   public void resetRecipients() {
     this.recipients = null;
     this.multicast = false;
   }
 
-
-  /**
-   * Returns the intended recipient(s) of this message. If the message is 
intended to delivered to
-   * all distribution managers, then the array will contain ALL_RECIPIENTS. If 
the recipients have
-   * not been set null is returned.
-   */
-  public InternalDistributedMember[] getRecipientsArray() {
-    if (this.multicast || this.recipients == null) {
-      return ALL_RECIPIENTS_ARRAY;
-    }
-    return this.recipients;
-  }
-
   /**
    * Returns true if message will be sent to everyone.
    */
   public boolean forAll() {
     return (this.recipients == null) || (this.multicast)
-        || ((this.recipients.length > 0) && (this.recipients[0] == 
ALL_RECIPIENTS));
+        || ((!this.recipients.isEmpty()) && (this.recipients.get(0) == 
ALL_RECIPIENTS));
   }
 
   public String getRecipientsDescription() {
@@ -318,13 +297,14 @@ public abstract class DistributionMessage
     } else {
       StringBuffer sb = new StringBuffer(100);
       sb.append("recipients: <");
-      for (int i = 0; i < this.recipients.length; i++) {
+      for (int i = 0; i < this.recipients.size(); i++) {
         if (i != 0) {
           sb.append(", ");
         }
-        sb.append(this.recipients[i]);
+        sb.append(this.recipients.get(i));
       }
       sb.append(">");
+
       return sb.toString();
     }
   }
@@ -547,8 +527,9 @@ public abstract class DistributionMessage
       if (pid != 0) {
         procId = "processorId=" + pid;
       }
-      if (this.recipients != null && this.recipients.length <= 10) { // set a 
limit on recipients
-        Breadcrumbs.setSendSide(procId + " recipients=" + 
Arrays.toString(this.recipients));
+
+      if (this.recipients != null && this.recipients.size() <= 10) { // set a 
limit on recipients
+        Breadcrumbs.setSendSide(procId + " recipients=" + getRecipients());
       } else {
         if (procId.length() > 0) {
           Breadcrumbs.setSendSide(procId);
diff --git 
a/geode-core/src/main/java/org/apache/geode/internal/admin/remote/AdminRequest.java
 
b/geode-core/src/main/java/org/apache/geode/internal/admin/remote/AdminRequest.java
index 4a0ea32..0edb3d5 100644
--- 
a/geode-core/src/main/java/org/apache/geode/internal/admin/remote/AdminRequest.java
+++ 
b/geode-core/src/main/java/org/apache/geode/internal/admin/remote/AdminRequest.java
@@ -19,6 +19,7 @@ package org.apache.geode.internal.admin.remote;
 import java.io.DataInput;
 import java.io.DataOutput;
 import java.io.IOException;
+import java.util.List;
 
 import org.apache.logging.log4j.Logger;
 
@@ -128,7 +129,7 @@ public abstract class AdminRequest extends 
PooledDistributionMessage {
    */
   @Override
   protected void process(ClusterDistributionManager dm) {
-    AdminResponse response = null;
+    AdminResponse response;
     InspectionClasspathManager cpMgr = 
InspectionClasspathManager.getInstance();
     try {
       cpMgr.jumpToModifiedClassLoader(modifiedClasspath);
@@ -176,17 +177,15 @@ public abstract class AdminRequest extends 
PooledDistributionMessage {
   }
 
   public InternalDistributedMember getRecipient() {
-    InternalDistributedMember[] recipients = getRecipientsArray();
-    int size = recipients.length;
+    List<InternalDistributedMember> recipients = getRecipients();
+    int size = recipients.size();
     if (size == 0) {
       return null;
     } else if (size > 1) {
-      throw new IllegalStateException(
-          String.format("Could not return one recipient because this message 
has %s recipients",
-              Integer.valueOf(size)));
+      throw new IllegalStateException(String
+          .format("Could not return one recipient because this message has %s 
recipients", size));
     } else {
-      return recipients[0];
+      return recipients.get(0);
     }
   }
-
 }
diff --git 
a/geode-core/src/main/java/org/apache/geode/internal/admin/remote/AdminResponse.java
 
b/geode-core/src/main/java/org/apache/geode/internal/admin/remote/AdminResponse.java
index 8fda507..6dad899 100644
--- 
a/geode-core/src/main/java/org/apache/geode/internal/admin/remote/AdminResponse.java
+++ 
b/geode-core/src/main/java/org/apache/geode/internal/admin/remote/AdminResponse.java
@@ -19,6 +19,7 @@ package org.apache.geode.internal.admin.remote;
 import java.io.DataInput;
 import java.io.DataOutput;
 import java.io.IOException;
+import java.util.List;
 
 import org.apache.geode.distributed.internal.AdminMessageType;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
@@ -77,16 +78,15 @@ public abstract class AdminResponse extends 
HighPriorityDistributionMessage
   }
 
   public InternalDistributedMember getRecipient() {
-    InternalDistributedMember[] recipients = getRecipientsArray();
-    int size = recipients.length;
+    List<InternalDistributedMember> recipients = getRecipients();
+    int size = recipients.size();
     if (size == 0) {
       return null;
     } else if (size > 1) {
-      throw new IllegalStateException(
-          String.format("Could not return one recipient because this message 
has %s recipients",
-              Integer.valueOf(size)));
+      throw new IllegalStateException(String
+          .format("Could not return one recipient because this message has %s 
recipients", size));
     } else {
-      return recipients[0];
+      return recipients.get(0);
     }
   }
 }
diff --git 
a/geode-core/src/main/java/org/apache/geode/internal/admin/remote/CompactRequest.java
 
b/geode-core/src/main/java/org/apache/geode/internal/admin/remote/CompactRequest.java
index 0fa07e0..20e85d9 100644
--- 
a/geode-core/src/main/java/org/apache/geode/internal/admin/remote/CompactRequest.java
+++ 
b/geode-core/src/main/java/org/apache/geode/internal/admin/remote/CompactRequest.java
@@ -38,7 +38,6 @@ import org.apache.geode.internal.cache.DiskStoreImpl;
 import org.apache.geode.internal.cache.InternalCache;
 import org.apache.geode.internal.serialization.DeserializationContext;
 import org.apache.geode.internal.serialization.SerializationContext;
-import org.apache.geode.internal.util.ArrayUtils;
 import org.apache.geode.logging.internal.log4j.api.LogService;
 
 /**
@@ -115,13 +114,13 @@ public class CompactRequest extends CliLegacyMessage {
 
   @Override
   public String toString() {
-    return "Compact request sent to " + ArrayUtils.toString((Object[]) 
this.getRecipientsArray())
-        + " from " + this.getSender();
+    return "Compact request sent to " + this.getRecipientsDescription() + " 
from "
+        + this.getSender();
   }
 
   private static class CompactReplyProcessor extends 
AdminMultipleReplyProcessor {
     Map<DistributedMember, Set<PersistentID>> results =
-        Collections.synchronizedMap(new HashMap<DistributedMember, 
Set<PersistentID>>());
+        Collections.synchronizedMap(new HashMap<>());
 
     CompactReplyProcessor(DistributionManager dm, Collection initMembers) {
       super(dm, initMembers);
diff --git 
a/geode-core/src/main/java/org/apache/geode/internal/admin/remote/ShutdownAllRequest.java
 
b/geode-core/src/main/java/org/apache/geode/internal/admin/remote/ShutdownAllRequest.java
index 5eca91b..d1a9e1a 100644
--- 
a/geode-core/src/main/java/org/apache/geode/internal/admin/remote/ShutdownAllRequest.java
+++ 
b/geode-core/src/main/java/org/apache/geode/internal/admin/remote/ShutdownAllRequest.java
@@ -17,7 +17,6 @@ package org.apache.geode.internal.admin.remote;
 import java.io.DataInput;
 import java.io.DataOutput;
 import java.io.IOException;
-import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.HashSet;
@@ -236,7 +235,7 @@ public class ShutdownAllRequest extends AdminRequest {
 
   @Override
   public String toString() {
-    return "ShutdownAllRequest sent to " + 
Arrays.toString(this.getRecipientsArray()) + " from "
+    return "ShutdownAllRequest sent to " + this.getRecipientsDescription() + " 
from "
         + this.getSender();
   }
 
diff --git 
a/geode-core/src/main/java/org/apache/geode/internal/cache/StateFlushOperation.java
 
b/geode-core/src/main/java/org/apache/geode/internal/cache/StateFlushOperation.java
index 77fd674..5f09010 100755
--- 
a/geode-core/src/main/java/org/apache/geode/internal/cache/StateFlushOperation.java
+++ 
b/geode-core/src/main/java/org/apache/geode/internal/cache/StateFlushOperation.java
@@ -721,7 +721,7 @@ public class StateFlushOperation {
         sb.append(" from ");
         sb.append(super.getSender());
       }
-      if (getRecipientsArray().length > 0) {
+      if (!getRecipients().isEmpty()) {
         String recip = getRecipientsDescription();
         sb.append(" to ");
         sb.append(recip);
diff --git 
a/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/PartitionMessage.java
 
b/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/PartitionMessage.java
index a1be391..6b53958 100644
--- 
a/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/PartitionMessage.java
+++ 
b/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/PartitionMessage.java
@@ -663,7 +663,7 @@ public abstract class PartitionMessage extends 
DistributionMessage
   }
 
   public InternalDistributedMember getRecipient() {
-    return getRecipientsArray()[0];
+    return getRecipients().get(0);
   }
 
   public void setOperation(Operation op) {
diff --git 
a/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/PutMessage.java
 
b/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/PutMessage.java
index f7124ca..b1b9f7b 100644
--- 
a/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/PutMessage.java
+++ 
b/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/PutMessage.java
@@ -20,7 +20,6 @@ import static 
org.apache.geode.internal.offheap.annotations.OffHeapIdentifier.EN
 import java.io.DataInput;
 import java.io.DataOutput;
 import java.io.IOException;
-import java.util.Arrays;
 import java.util.Collections;
 import java.util.Set;
 
@@ -1076,7 +1075,7 @@ public class PutMessage extends 
PartitionMessageWithDirectReply implements NewVa
               putMsg.setSendDelta(false);
               if (logger.isDebugEnabled()) {
                 logger.debug("Sending full object({}) to {}", putMsg,
-                    Arrays.toString(putMsg.getRecipientsArray()));
+                    putMsg.getRecipientsDescription());
               }
               dm.putOutgoing(putMsg);
 
diff --git 
a/geode-core/src/main/java/org/apache/geode/internal/cache/tx/RemoteOperationMessage.java
 
b/geode-core/src/main/java/org/apache/geode/internal/cache/tx/RemoteOperationMessage.java
index 9428cc7..9c75fc6 100755
--- 
a/geode-core/src/main/java/org/apache/geode/internal/cache/tx/RemoteOperationMessage.java
+++ 
b/geode-core/src/main/java/org/apache/geode/internal/cache/tx/RemoteOperationMessage.java
@@ -18,6 +18,7 @@ import java.io.DataInput;
 import java.io.DataOutput;
 import java.io.IOException;
 import java.util.Collection;
+import java.util.List;
 
 import org.apache.logging.log4j.Logger;
 
@@ -417,18 +418,18 @@ public abstract class RemoteOperationMessage extends 
DistributionMessage
    */
   protected void appendFields(StringBuffer buff) {
     buff.append("; sender=").append(getSender()).append("; recipients=[");
-    InternalDistributedMember[] recips = getRecipientsArray();
-    for (int i = 0; i < recips.length - 1; i++) {
-      buff.append(recips[i]).append(',');
+    List<InternalDistributedMember> recipients = getRecipients();
+    for (int i = 0; i < recipients.size() - 1; i++) {
+      buff.append(recipients.get(i)).append(',');
     }
-    if (recips.length > 0) {
-      buff.append(recips[recips.length - 1]);
+    if (recipients.size() > 0) {
+      buff.append(recipients.get(recipients.size() - 1));
     }
     buff.append("]; processorId=").append(this.processorId);
   }
 
   public InternalDistributedMember getRecipient() {
-    return getRecipientsArray()[0];
+    return getRecipients().get(0);
   }
 
   public void setOperation(Operation op) {
diff --git 
a/geode-core/src/main/java/org/apache/geode/management/internal/messages/CompactRequest.java
 
b/geode-core/src/main/java/org/apache/geode/management/internal/messages/CompactRequest.java
index 686b05b..0134fa1 100644
--- 
a/geode-core/src/main/java/org/apache/geode/management/internal/messages/CompactRequest.java
+++ 
b/geode-core/src/main/java/org/apache/geode/management/internal/messages/CompactRequest.java
@@ -17,7 +17,6 @@ package org.apache.geode.management.internal.messages;
 import java.io.DataInput;
 import java.io.DataOutput;
 import java.io.IOException;
-import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
@@ -143,13 +142,13 @@ public class CompactRequest extends AdminRequest {
 
   @Override
   public String toString() {
-    return "Compact request sent to " + 
Arrays.toString(this.getRecipientsArray()) + " from "
+    return "Compact request sent to " + this.getRecipientsDescription() + " 
from "
         + this.getSender() + " for " + this.diskStoreName;
   }
 
   private static class CompactReplyProcessor extends 
AdminMultipleReplyProcessor {
     Map<DistributedMember, PersistentID> results =
-        Collections.synchronizedMap(new HashMap<DistributedMember, 
PersistentID>());
+        Collections.synchronizedMap(new HashMap<>());
 
     public CompactReplyProcessor(DistributionManager dm, Collection<?> 
initMembers) {
       super(dm, initMembers);
diff --git 
a/geode-core/src/test/java/org/apache/geode/distributed/internal/DistributionTest.java
 
b/geode-core/src/test/java/org/apache/geode/distributed/internal/DistributionTest.java
index 56b1391..35abb5c 100644
--- 
a/geode-core/src/test/java/org/apache/geode/distributed/internal/DistributionTest.java
+++ 
b/geode-core/src/test/java/org/apache/geode/distributed/internal/DistributionTest.java
@@ -30,6 +30,8 @@ import static org.mockito.Mockito.when;
 
 import java.time.Instant;
 import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
 import java.util.Properties;
 import java.util.Random;
 import java.util.Set;
@@ -99,9 +101,8 @@ public class DistributionTest {
   @Test
   public void testDirectChannelSend() throws Exception {
     HighPriorityAckedMessage m = new HighPriorityAckedMessage();
-    InternalDistributedMember[] recipients =
-        new InternalDistributedMember[] {mockMembers[2], mockMembers[3]};
-    m.setRecipients(Arrays.asList(recipients));
+    List<InternalDistributedMember> recipients = Arrays.asList(mockMembers[2], 
mockMembers[3]);
+    m.setRecipients(recipients);
     Set<InternalDistributedMember> failures = distribution
         .directChannelSend(recipients, m);
     assertTrue(failures == null);
@@ -112,27 +113,25 @@ public class DistributionTest {
   @Test
   public void testDirectChannelSendFailureToOneRecipient() throws Exception {
     HighPriorityAckedMessage m = new HighPriorityAckedMessage();
-    InternalDistributedMember[] recipients =
-        new InternalDistributedMember[] {mockMembers[2], mockMembers[3]};
-    m.setRecipients(Arrays.asList(recipients));
+    List<InternalDistributedMember> recipients = Arrays.asList(mockMembers[2], 
mockMembers[3]);
+    m.setRecipients(recipients);
     Set<InternalDistributedMember> failures = distribution
         .directChannelSend(recipients, m);
     ConnectExceptions exception = new ConnectExceptions();
-    exception.addFailure(recipients[0], new Exception("testing"));
+    exception.addFailure(recipients.get(0), new Exception("testing"));
     when(dc.send(any(), any(mockMembers.getClass()),
         any(DistributionMessage.class), anyLong(), 
anyLong())).thenThrow(exception);
     failures = distribution.directChannelSend(recipients, m);
     assertTrue(failures != null);
     assertEquals(1, failures.size());
-    assertEquals(recipients[0], failures.iterator().next());
+    assertEquals(recipients.get(0), failures.iterator().next());
   }
 
   @Test
   public void testDirectChannelSendFailureToAll() throws Exception {
     HighPriorityAckedMessage m = new HighPriorityAckedMessage();
-    InternalDistributedMember[] recipients =
-        new InternalDistributedMember[] {mockMembers[2], mockMembers[3]};
-    m.setRecipients(Arrays.asList(recipients));
+    List<InternalDistributedMember> recipients = Arrays.asList(mockMembers[2], 
mockMembers[3]);
+    m.setRecipients(recipients);
     Set<InternalDistributedMember> failures = distribution
         .directChannelSend(recipients, m);
     when(dc.send(any(), any(mockMembers.getClass()),
@@ -163,14 +162,13 @@ public class DistributionTest {
   public void testDirectChannelSendFailureDueToForcedDisconnect() throws 
Exception {
     HighPriorityAckedMessage m = new HighPriorityAckedMessage();
     when(membership.shutdownInProgress()).thenReturn(true);
-    InternalDistributedMember[] recipients =
-        new InternalDistributedMember[] {mockMembers[2], mockMembers[3]};
-    m.setRecipients(Arrays.asList(recipients));
+    List<InternalDistributedMember> recipients = Arrays.asList(mockMembers[2], 
mockMembers[3]);
+    m.setRecipients(recipients);
     Set<InternalDistributedMember> failures = distribution
         .directChannelSend(recipients, m);
     distribution.setShutdown();
     ConnectExceptions exception = new ConnectExceptions();
-    exception.addFailure(recipients[0], new Exception("testing"));
+    exception.addFailure(recipients.get(0), new Exception("testing"));
     when(dc.send(any(), any(mockMembers.getClass()),
         any(DistributionMessage.class), anyLong(), 
anyLong())).thenThrow(exception);
     Assertions.assertThatThrownBy(() -> {
@@ -184,7 +182,7 @@ public class DistributionTest {
         Instant.now(), "thread", "", 1L, "", "");
     when(membership.shutdownInProgress()).thenReturn(true);
     Set<InternalDistributedMember> failures =
-        distribution.send(new InternalDistributedMember[] {mockMembers[0]}, m);
+        distribution.send(Collections.singletonList(mockMembers[0]), m);
     verify(membership, never()).send(any(), any());
     assertEquals(1, failures.size());
     assertEquals(mockMembers[0], failures.iterator().next());
@@ -200,7 +198,7 @@ public class DistributionTest {
 
   @Test
   public void testSendToEmptyListIsRejected() throws Exception {
-    InternalDistributedMember[] emptyList = new InternalDistributedMember[0];
+    List<InternalDistributedMember> emptyList = Collections.emptyList();
     HighPriorityAckedMessage m = new HighPriorityAckedMessage();
     m.setRecipient(mockMembers[0]);
     distribution.send(emptyList, m);

Reply via email to