52 lines
2.3 KiB
Diff
52 lines
2.3 KiB
Diff
# UNDF: UNDF-2026-000000192
|
|
--- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/persisted/ShardManagerSnapshot.java
|
|
+++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/persisted/ShardManagerSnapshot.java
|
|
@@ -8,7 +8,8 @@
|
|
package org.opendaylight.controller.cluster.datastore.persisted;
|
|
|
|
-import com.google.common.collect.ImmutableList;
|
|
+import com.google.common.collect.ImmutableSet;
|
|
+import java.util.Collection;
|
|
import java.io.Serializable;
|
|
-import java.util.List;
|
|
+import java.util.Set;
|
|
import org.eclipse.jdt.annotation.NonNull;
|
|
|
|
@@ -22,19 +23,22 @@ public final class ShardManagerSnapshot implements Serializable {
|
|
@java.io.Serial
|
|
private static final long serialVersionUID = 1L;
|
|
|
|
- private final List<String> shardList;
|
|
+ // ImmutableSet for O(1) contains() during recovery checks
|
|
+ private final Set<String> shardNames;
|
|
|
|
- public ShardManagerSnapshot(final @NonNull List<String> shardList) {
|
|
- this.shardList = ImmutableList.copyOf(shardList);
|
|
+ public ShardManagerSnapshot(final @NonNull Collection<String> shardNames) {
|
|
+ this.shardNames = ImmutableSet.copyOf(shardNames);
|
|
}
|
|
|
|
- public List<String> getShardList() {
|
|
- return shardList;
|
|
+ /** Returns the set of shard names in this snapshot. O(1) contains(). */
|
|
+ public Set<String> getShardNames() {
|
|
+ return shardNames;
|
|
}
|
|
|
|
+ /** @deprecated use getShardNames() */
|
|
+ @Deprecated
|
|
+ public Set<String> getShardList() {
|
|
+ return shardNames;
|
|
+ }
|
|
+
|
|
@java.io.Serial
|
|
private Object writeReplace() {
|
|
return new SM(this);
|
|
|
|
--- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/shardmanager/ShardManager.java
|
|
+++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/shardmanager/ShardManager.java
|
|
@@ -543,7 +543,7 @@ public class ShardManager extends AbstractUntypedPersistentActorWithMetering {
|
|
- boolean shardWasInRecoveredSnapshot = currentSnapshot != null
|
|
- && currentSnapshot.getShardList().contains(shardName);
|
|
+ boolean shardWasInRecoveredSnapshot = currentSnapshot != null
|
|
+ && currentSnapshot.getShardNames().contains(shardName); // O(1) set lookup
|