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);