From: Robert Varga Date: Sat, 6 Nov 2021 14:20:11 +0000 (+0100) Subject: Use ImmutableList.Builder in FrontendClientMetadata X-Git-Tag: v4.0.6~2 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=commitdiff_plain;h=42769c3ac0d99f8fe4f845fed66408ff4dfb2388 Use ImmutableList.Builder in FrontendClientMetadata We are performing a defensive copy in constructor, hence it is better to allocate a builder, skipping an untrusted copy operation. Change-Id: I95d7aa90f6da325aaae6a340caf49a6e17fe9f64 Signed-off-by: Robert Varga --- diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/persisted/FrontendClientMetadata.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/persisted/FrontendClientMetadata.java index f384c928a6..7ff4b1eae0 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/persisted/FrontendClientMetadata.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/persisted/FrontendClientMetadata.java @@ -14,7 +14,6 @@ import com.google.common.collect.ImmutableList; import java.io.DataInput; import java.io.DataOutput; import java.io.IOException; -import java.util.ArrayList; import java.util.Collection; import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.controller.cluster.access.concepts.ClientIdentifier; @@ -63,13 +62,12 @@ public final class FrontendClientMetadata implements Identifiable(currentSize); + final var currentBuilder = ImmutableList.builderWithExpectedSize(currentSize); for (int i = 0; i < currentSize; ++i) { - currentHistories.add(FrontendHistoryMetadata.readFrom(in)); + currentBuilder.add(FrontendHistoryMetadata.readFrom(in)); } - return new FrontendClientMetadata(id, purgedHistories, currentHistories); + return new FrontendClientMetadata(id, purgedHistories, currentBuilder.build()); } @Override diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/persisted/FrontendShardDataTreeSnapshotMetadataTest.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/persisted/FrontendShardDataTreeSnapshotMetadataTest.java index dc7e1c8ca2..c02cea95b8 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/persisted/FrontendShardDataTreeSnapshotMetadataTest.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/persisted/FrontendShardDataTreeSnapshotMetadataTest.java @@ -24,7 +24,6 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.Set; import org.junit.Test; import org.opendaylight.controller.cluster.access.concepts.ClientIdentifier; import org.opendaylight.controller.cluster.access.concepts.FrontendIdentifier; @@ -108,11 +107,9 @@ public class FrontendShardDataTreeSnapshotMetadataTest { tmp.add(0); final ImmutableUnsignedLongSet purgedHistories = tmp.immutableCopy(); - final Set currentHistories = Set.of( + return new FrontendClientMetadata(clientIdentifier, purgedHistories.immutableCopy(), List.of( new FrontendHistoryMetadata(num, num, true, ImmutableMap.of(UnsignedLong.ZERO, Boolean.TRUE), - purgedHistories)); - - return new FrontendClientMetadata(clientIdentifier, purgedHistories.immutableCopy(), currentHistories); + purgedHistories))); } private static void testObject(final T object, final T equalObject) {