diff --git a/cluster/src/main/java/io/scalecube/cluster/gossip/GossipRequest.java b/cluster/src/main/java/io/scalecube/cluster/gossip/GossipRequest.java index 4f0b2f95..458f2d3e 100644 --- a/cluster/src/main/java/io/scalecube/cluster/gossip/GossipRequest.java +++ b/cluster/src/main/java/io/scalecube/cluster/gossip/GossipRequest.java @@ -27,7 +27,7 @@ public GossipRequest(Gossip gossip, String from) { public GossipRequest(List gossips, String from) { Objects.requireNonNull(gossips); Objects.requireNonNull(from); - this.gossips = new ArrayList<>(gossips); + this.gossips = Collections.unmodifiableList(new ArrayList<>(gossips)); this.from = from; } @@ -53,11 +53,12 @@ public void writeExternal(ObjectOutput out) throws IOException { @Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException { // gossips - int size = in.readInt(); - gossips = new ArrayList<>(size); - for (int i = 0; i < size; i++) { + int gossipsSize = in.readInt(); + List gossips = new ArrayList<>(gossipsSize); + for (int i = 0; i < gossipsSize; i++) { gossips.add((Gossip) in.readObject()); } + this.gossips = Collections.unmodifiableList(gossips); // from from = in.readUTF(); } diff --git a/cluster/src/main/java/io/scalecube/cluster/membership/SyncData.java b/cluster/src/main/java/io/scalecube/cluster/membership/SyncData.java index c4b984e8..fbb66118 100644 --- a/cluster/src/main/java/io/scalecube/cluster/membership/SyncData.java +++ b/cluster/src/main/java/io/scalecube/cluster/membership/SyncData.java @@ -6,6 +6,7 @@ import java.io.ObjectOutput; import java.util.ArrayList; import java.util.Collection; +import java.util.Collections; import java.util.List; import java.util.Objects; import java.util.StringJoiner; @@ -31,12 +32,12 @@ public SyncData() {} public SyncData(Collection membership, String syncGroup) { Objects.requireNonNull(membership); Objects.requireNonNull(syncGroup); - this.membership = new ArrayList<>(membership); + this.membership = Collections.unmodifiableList(new ArrayList<>(membership)); this.syncGroup = syncGroup; } public Collection getMembership() { - return new ArrayList<>(membership); + return membership; } public String getSyncGroup() { @@ -57,11 +58,12 @@ public void writeExternal(ObjectOutput out) throws IOException { @Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException { // membership - int size = in.readInt(); - membership = new ArrayList<>(size); - for (int i = 0; i < size; i++) { + int membershipSize = in.readInt(); + List membership = new ArrayList<>(membershipSize); + for (int i = 0; i < membershipSize; i++) { membership.add((MembershipRecord) in.readObject()); } + this.membership = Collections.unmodifiableList(membership); // syncGroup syncGroup = in.readUTF(); } diff --git a/transport-parent/transport-api/src/main/java/io/scalecube/cluster/transport/api/Message.java b/transport-parent/transport-api/src/main/java/io/scalecube/cluster/transport/api/Message.java index a121d1c5..d6e5e159 100644 --- a/transport-parent/transport-api/src/main/java/io/scalecube/cluster/transport/api/Message.java +++ b/transport-parent/transport-api/src/main/java/io/scalecube/cluster/transport/api/Message.java @@ -217,13 +217,14 @@ public void writeExternal(ObjectOutput out) throws IOException { @Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException { // headers - int size = in.readInt(); - headers = new HashMap<>(size); - for (int i = 0; i < size; i++) { + int headersSize = in.readInt(); + Map headers = new HashMap<>(headersSize); + for (int i = 0; i < headersSize; i++) { String name = in.readUTF(); String value = in.readUTF(); headers.put(name, value); } + this.headers = Collections.unmodifiableMap(headers); // data data = in.readObject(); }