PartitionManager support for reacting to cluster metadata changes
Change-Id: I65e358f5cb47e9420fae9589661ba0ce45f58df6
diff --git a/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/StoragePartitionServer.java b/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/StoragePartitionServer.java
index e6669dc..6d613c3 100644
--- a/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/StoragePartitionServer.java
+++ b/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/StoragePartitionServer.java
@@ -31,16 +31,13 @@
import java.io.File;
import java.util.Collection;
-import java.util.Set;
import java.util.concurrent.CompletableFuture;
import java.util.function.Supplier;
-import org.onosproject.cluster.NodeId;
import org.onosproject.store.service.PartitionInfo;
import org.slf4j.Logger;
import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.Sets;
/**
* {@link StoragePartition} server.
@@ -80,7 +77,7 @@
return CompletableFuture.completedFuture(null);
}
synchronized (this) {
- server = server();
+ server = buildServer();
}
serverOpenFuture = server.open();
} else {
@@ -97,13 +94,22 @@
@Override
public CompletableFuture<Void> close() {
- // We do not close the server because doing so is equivalent to this node
- // leaving the cluster and we don't want that here.
- // The Raft protocol should take care of servers leaving unannounced.
- return CompletableFuture.completedFuture(null);
+ /**
+ * CopycatServer#kill just shuts down the server and does not result
+ * in any cluster membership changes.
+ */
+ return server.kill();
}
- private CopycatServer server() {
+ /**
+ * Closes the server and exits the partition.
+ * @return future that is completed when the operation is complete
+ */
+ public CompletableFuture<Void> closeAndExit() {
+ return server.close();
+ }
+
+ private CopycatServer buildServer() {
ResourceTypeResolver resourceResolver = new ServiceLoaderResourceResolver();
ResourceRegistry registry = new ResourceRegistry();
resourceTypes.forEach(registry::register);
@@ -124,10 +130,6 @@
return server;
}
- public Set<NodeId> configuredMembers() {
- return Sets.newHashSet(partition.getMembers());
- }
-
@Override
public boolean isOpen() {
return server.isOpen();