Committed by
Gerrit Code Review
Moving to Atomix version 1.0.0-rc3
Change-Id: I75572a52b530741f482455d59922327121a03999
Showing
15 changed files
with
170 additions
and
118 deletions
| ... | @@ -20,6 +20,8 @@ import java.util.Arrays; | ... | @@ -20,6 +20,8 @@ import java.util.Arrays; |
| 20 | import io.atomix.catalyst.serializer.Serializer; | 20 | import io.atomix.catalyst.serializer.Serializer; |
| 21 | import io.atomix.catalyst.serializer.TypeSerializerFactory; | 21 | import io.atomix.catalyst.serializer.TypeSerializerFactory; |
| 22 | import io.atomix.copycat.Query; | 22 | import io.atomix.copycat.Query; |
| 23 | +import io.atomix.manager.util.ResourceManagerTypeResolver; | ||
| 24 | +import io.atomix.variables.state.LongCommands; | ||
| 23 | 25 | ||
| 24 | import org.onlab.util.Match; | 26 | import org.onlab.util.Match; |
| 25 | import org.onosproject.cluster.Leader; | 27 | import org.onosproject.cluster.Leader; |
| ... | @@ -28,6 +30,10 @@ import org.onosproject.cluster.NodeId; | ... | @@ -28,6 +30,10 @@ import org.onosproject.cluster.NodeId; |
| 28 | import org.onosproject.event.Change; | 30 | import org.onosproject.event.Change; |
| 29 | import org.onosproject.store.primitives.MapUpdate; | 31 | import org.onosproject.store.primitives.MapUpdate; |
| 30 | import org.onosproject.store.primitives.TransactionId; | 32 | import org.onosproject.store.primitives.TransactionId; |
| 33 | +import org.onosproject.store.primitives.resources.impl.AtomixConsistentMapCommands; | ||
| 34 | +import org.onosproject.store.primitives.resources.impl.AtomixConsistentMapFactory; | ||
| 35 | +import org.onosproject.store.primitives.resources.impl.AtomixLeaderElectorCommands; | ||
| 36 | +import org.onosproject.store.primitives.resources.impl.AtomixLeaderElectorFactory; | ||
| 31 | import org.onosproject.store.primitives.resources.impl.CommitResult; | 37 | import org.onosproject.store.primitives.resources.impl.CommitResult; |
| 32 | import org.onosproject.store.primitives.resources.impl.MapEntryUpdateResult; | 38 | import org.onosproject.store.primitives.resources.impl.MapEntryUpdateResult; |
| 33 | import org.onosproject.store.primitives.resources.impl.PrepareResult; | 39 | import org.onosproject.store.primitives.resources.impl.PrepareResult; |
| ... | @@ -79,6 +85,14 @@ public final class CatalystSerializers { | ... | @@ -79,6 +85,14 @@ public final class CatalystSerializers { |
| 79 | serializer.register(MapEvent.class, factory); | 85 | serializer.register(MapEvent.class, factory); |
| 80 | serializer.register(Maps.immutableEntry("a", "b").getClass(), factory); | 86 | serializer.register(Maps.immutableEntry("a", "b").getClass(), factory); |
| 81 | 87 | ||
| 88 | + serializer.resolve(new LongCommands.TypeResolver()); | ||
| 89 | + serializer.resolve(new AtomixConsistentMapCommands.TypeResolver()); | ||
| 90 | + serializer.resolve(new AtomixLeaderElectorCommands.TypeResolver()); | ||
| 91 | + serializer.resolve(new ResourceManagerTypeResolver()); | ||
| 92 | + | ||
| 93 | + serializer.registerClassLoader(AtomixConsistentMapFactory.class) | ||
| 94 | + .registerClassLoader(AtomixLeaderElectorFactory.class); | ||
| 95 | + | ||
| 82 | return serializer; | 96 | return serializer; |
| 83 | } | 97 | } |
| 84 | } | 98 | } | ... | ... |
| ... | @@ -41,10 +41,4 @@ public interface Managed<T> { | ... | @@ -41,10 +41,4 @@ public interface Managed<T> { |
| 41 | * @return {@code true} if open | 41 | * @return {@code true} if open |
| 42 | */ | 42 | */ |
| 43 | boolean isOpen(); | 43 | boolean isOpen(); |
| 44 | - | ||
| 45 | - /** | ||
| 46 | - * Return {@code true} if the managed object is closed. | ||
| 47 | - * @return {@code true} if closed | ||
| 48 | - */ | ||
| 49 | - boolean isClosed(); | ||
| 50 | } | 44 | } | ... | ... |
| ... | @@ -47,21 +47,20 @@ import com.google.common.collect.ImmutableSet; | ... | @@ -47,21 +47,20 @@ import com.google.common.collect.ImmutableSet; |
| 47 | public class StoragePartition implements Managed<StoragePartition> { | 47 | public class StoragePartition implements Managed<StoragePartition> { |
| 48 | 48 | ||
| 49 | private final AtomicBoolean isOpened = new AtomicBoolean(false); | 49 | private final AtomicBoolean isOpened = new AtomicBoolean(false); |
| 50 | - private final AtomicBoolean isClosed = new AtomicBoolean(false); | ||
| 51 | private final Serializer serializer; | 50 | private final Serializer serializer; |
| 52 | private final MessagingService messagingService; | 51 | private final MessagingService messagingService; |
| 53 | private final ClusterService clusterService; | 52 | private final ClusterService clusterService; |
| 54 | private final File logFolder; | 53 | private final File logFolder; |
| 55 | private Partition partition; | 54 | private Partition partition; |
| 56 | - private static final Collection<ResourceType> RESOURCE_TYPES = ImmutableSet.of( | ||
| 57 | - new ResourceType(DistributedLong.class), | ||
| 58 | - new ResourceType(AtomixLeaderElector.class), | ||
| 59 | - new ResourceType(AtomixConsistentMap.class)); | ||
| 60 | - | ||
| 61 | private NodeId localNodeId; | 55 | private NodeId localNodeId; |
| 62 | private StoragePartitionServer server; | 56 | private StoragePartitionServer server; |
| 63 | private StoragePartitionClient client; | 57 | private StoragePartitionClient client; |
| 64 | 58 | ||
| 59 | + public static final Collection<ResourceType> RESOURCE_TYPES = ImmutableSet.of( | ||
| 60 | + new ResourceType(DistributedLong.class), | ||
| 61 | + new ResourceType(AtomixLeaderElector.class), | ||
| 62 | + new ResourceType(AtomixConsistentMap.class)); | ||
| 63 | + | ||
| 65 | public StoragePartition(Partition partition, | 64 | public StoragePartition(Partition partition, |
| 66 | MessagingService messagingService, | 65 | MessagingService messagingService, |
| 67 | ClusterService clusterService, | 66 | ClusterService clusterService, |
| ... | @@ -96,8 +95,7 @@ public class StoragePartition implements Managed<StoragePartition> { | ... | @@ -96,8 +95,7 @@ public class StoragePartition implements Managed<StoragePartition> { |
| 96 | public CompletableFuture<Void> close() { | 95 | public CompletableFuture<Void> close() { |
| 97 | // We do not explicitly close the server and instead let the cluster | 96 | // We do not explicitly close the server and instead let the cluster |
| 98 | // deal with this as an unclean exit. | 97 | // deal with this as an unclean exit. |
| 99 | - return closeClient().thenAccept(v -> isClosed.set(true)) | 98 | + return closeClient(); |
| 100 | - .thenApply(v -> null); | ||
| 101 | } | 99 | } |
| 102 | 100 | ||
| 103 | /** | 101 | /** |
| ... | @@ -138,7 +136,6 @@ public class StoragePartition implements Managed<StoragePartition> { | ... | @@ -138,7 +136,6 @@ public class StoragePartition implements Managed<StoragePartition> { |
| 138 | () -> new CopycatTransport(CopycatTransport.Mode.SERVER, | 136 | () -> new CopycatTransport(CopycatTransport.Mode.SERVER, |
| 139 | partition.getId(), | 137 | partition.getId(), |
| 140 | messagingService), | 138 | messagingService), |
| 141 | - RESOURCE_TYPES, | ||
| 142 | logFolder); | 139 | logFolder); |
| 143 | return server.open().thenRun(() -> this.server = server); | 140 | return server.open().thenRun(() -> this.server = server); |
| 144 | } | 141 | } |
| ... | @@ -158,7 +155,6 @@ public class StoragePartition implements Managed<StoragePartition> { | ... | @@ -158,7 +155,6 @@ public class StoragePartition implements Managed<StoragePartition> { |
| 158 | () -> new CopycatTransport(CopycatTransport.Mode.SERVER, | 155 | () -> new CopycatTransport(CopycatTransport.Mode.SERVER, |
| 159 | partition.getId(), | 156 | partition.getId(), |
| 160 | messagingService), | 157 | messagingService), |
| 161 | - RESOURCE_TYPES, | ||
| 162 | logFolder); | 158 | logFolder); |
| 163 | return server.join(Collections2.transform(otherMembers, this::toAddress)).thenRun(() -> this.server = server); | 159 | return server.join(Collections2.transform(otherMembers, this::toAddress)).thenRun(() -> this.server = server); |
| 164 | } | 160 | } |
| ... | @@ -168,8 +164,7 @@ public class StoragePartition implements Managed<StoragePartition> { | ... | @@ -168,8 +164,7 @@ public class StoragePartition implements Managed<StoragePartition> { |
| 168 | serializer, | 164 | serializer, |
| 169 | new CopycatTransport(CopycatTransport.Mode.CLIENT, | 165 | new CopycatTransport(CopycatTransport.Mode.CLIENT, |
| 170 | partition.getId(), | 166 | partition.getId(), |
| 171 | - messagingService), | 167 | + messagingService)); |
| 172 | - RESOURCE_TYPES); | ||
| 173 | return client.open().thenApply(v -> client); | 168 | return client.open().thenApply(v -> client); |
| 174 | } | 169 | } |
| 175 | 170 | ||
| ... | @@ -183,12 +178,7 @@ public class StoragePartition implements Managed<StoragePartition> { | ... | @@ -183,12 +178,7 @@ public class StoragePartition implements Managed<StoragePartition> { |
| 183 | 178 | ||
| 184 | @Override | 179 | @Override |
| 185 | public boolean isOpen() { | 180 | public boolean isOpen() { |
| 186 | - return isOpened.get() && !isClosed.get(); | 181 | + return isOpened.get(); |
| 187 | - } | ||
| 188 | - | ||
| 189 | - @Override | ||
| 190 | - public boolean isClosed() { | ||
| 191 | - return isClosed.get(); | ||
| 192 | } | 182 | } |
| 193 | 183 | ||
| 194 | private CompletableFuture<Void> closeClient() { | 184 | private CompletableFuture<Void> closeClient() { |
| ... | @@ -209,7 +199,7 @@ public class StoragePartition implements Managed<StoragePartition> { | ... | @@ -209,7 +199,7 @@ public class StoragePartition implements Managed<StoragePartition> { |
| 209 | * @return partition info | 199 | * @return partition info |
| 210 | */ | 200 | */ |
| 211 | public Optional<PartitionInfo> info() { | 201 | public Optional<PartitionInfo> info() { |
| 212 | - return server != null && !server.isClosed() ? Optional.of(server.info()) : Optional.empty(); | 202 | + return server != null && server.isOpen() ? Optional.of(server.info()) : Optional.empty(); |
| 213 | } | 203 | } |
| 214 | 204 | ||
| 215 | public void onUpdate(Partition newValue) { | 205 | public void onUpdate(Partition newValue) { | ... | ... |
| ... | @@ -19,10 +19,8 @@ import static org.slf4j.LoggerFactory.getLogger; | ... | @@ -19,10 +19,8 @@ import static org.slf4j.LoggerFactory.getLogger; |
| 19 | import io.atomix.Atomix; | 19 | import io.atomix.Atomix; |
| 20 | import io.atomix.AtomixClient; | 20 | import io.atomix.AtomixClient; |
| 21 | import io.atomix.catalyst.transport.Transport; | 21 | import io.atomix.catalyst.transport.Transport; |
| 22 | -import io.atomix.resource.ResourceType; | ||
| 23 | import io.atomix.variables.DistributedLong; | 22 | import io.atomix.variables.DistributedLong; |
| 24 | 23 | ||
| 25 | -import java.util.Collection; | ||
| 26 | import java.util.Set; | 24 | import java.util.Set; |
| 27 | import java.util.concurrent.CompletableFuture; | 25 | import java.util.concurrent.CompletableFuture; |
| 28 | 26 | ||
| ... | @@ -43,7 +41,6 @@ import org.slf4j.Logger; | ... | @@ -43,7 +41,6 @@ import org.slf4j.Logger; |
| 43 | 41 | ||
| 44 | import com.google.common.base.Supplier; | 42 | import com.google.common.base.Supplier; |
| 45 | import com.google.common.base.Suppliers; | 43 | import com.google.common.base.Suppliers; |
| 46 | -import com.google.common.collect.ImmutableSet; | ||
| 47 | 44 | ||
| 48 | /** | 45 | /** |
| 49 | * StoragePartition client. | 46 | * StoragePartition client. |
| ... | @@ -55,7 +52,6 @@ public class StoragePartitionClient implements DistributedPrimitiveCreator, Mana | ... | @@ -55,7 +52,6 @@ public class StoragePartitionClient implements DistributedPrimitiveCreator, Mana |
| 55 | private final StoragePartition partition; | 52 | private final StoragePartition partition; |
| 56 | private final Transport transport; | 53 | private final Transport transport; |
| 57 | private final io.atomix.catalyst.serializer.Serializer serializer; | 54 | private final io.atomix.catalyst.serializer.Serializer serializer; |
| 58 | - private final Collection<ResourceType> resourceTypes; | ||
| 59 | private Atomix client; | 55 | private Atomix client; |
| 60 | private static final String ATOMIC_VALUES_CONSISTENT_MAP_NAME = "onos-atomic-values"; | 56 | private static final String ATOMIC_VALUES_CONSISTENT_MAP_NAME = "onos-atomic-values"; |
| 61 | private final Supplier<AsyncConsistentMap<String, byte[]>> onosAtomicValuesMap = | 57 | private final Supplier<AsyncConsistentMap<String, byte[]>> onosAtomicValuesMap = |
| ... | @@ -64,12 +60,10 @@ public class StoragePartitionClient implements DistributedPrimitiveCreator, Mana | ... | @@ -64,12 +60,10 @@ public class StoragePartitionClient implements DistributedPrimitiveCreator, Mana |
| 64 | 60 | ||
| 65 | public StoragePartitionClient(StoragePartition partition, | 61 | public StoragePartitionClient(StoragePartition partition, |
| 66 | io.atomix.catalyst.serializer.Serializer serializer, | 62 | io.atomix.catalyst.serializer.Serializer serializer, |
| 67 | - Transport transport, | 63 | + Transport transport) { |
| 68 | - Collection<ResourceType> resourceTypes) { | ||
| 69 | this.partition = partition; | 64 | this.partition = partition; |
| 70 | this.serializer = serializer; | 65 | this.serializer = serializer; |
| 71 | this.transport = transport; | 66 | this.transport = transport; |
| 72 | - this.resourceTypes = ImmutableSet.copyOf(resourceTypes); | ||
| 73 | } | 67 | } |
| 74 | 68 | ||
| 75 | @Override | 69 | @Override |
| ... | @@ -79,10 +73,8 @@ public class StoragePartitionClient implements DistributedPrimitiveCreator, Mana | ... | @@ -79,10 +73,8 @@ public class StoragePartitionClient implements DistributedPrimitiveCreator, Mana |
| 79 | } | 73 | } |
| 80 | synchronized (StoragePartitionClient.this) { | 74 | synchronized (StoragePartitionClient.this) { |
| 81 | client = AtomixClient.builder(partition.getMemberAddresses()) | 75 | client = AtomixClient.builder(partition.getMemberAddresses()) |
| 76 | + .withResourceTypes(StoragePartition.RESOURCE_TYPES) | ||
| 82 | .withSerializer(serializer.clone()) | 77 | .withSerializer(serializer.clone()) |
| 83 | - .withResourceResolver(r -> { | ||
| 84 | - resourceTypes.forEach(r::register); | ||
| 85 | - }) | ||
| 86 | .withTransport(transport) | 78 | .withTransport(transport) |
| 87 | .build(); | 79 | .build(); |
| 88 | } | 80 | } |
| ... | @@ -103,7 +95,8 @@ public class StoragePartitionClient implements DistributedPrimitiveCreator, Mana | ... | @@ -103,7 +95,8 @@ public class StoragePartitionClient implements DistributedPrimitiveCreator, Mana |
| 103 | @Override | 95 | @Override |
| 104 | public <K, V> AsyncConsistentMap<K, V> newAsyncConsistentMap(String name, Serializer serializer) { | 96 | public <K, V> AsyncConsistentMap<K, V> newAsyncConsistentMap(String name, Serializer serializer) { |
| 105 | AsyncConsistentMap<String, byte[]> rawMap = | 97 | AsyncConsistentMap<String, byte[]> rawMap = |
| 106 | - new DelegatingAsyncConsistentMap<String, byte[]>(client.get(name, AtomixConsistentMap.class).join()) { | 98 | + new DelegatingAsyncConsistentMap<String, byte[]>(client.getResource(name, AtomixConsistentMap.class) |
| 99 | + .join()) { | ||
| 107 | @Override | 100 | @Override |
| 108 | public String name() { | 101 | public String name() { |
| 109 | return name; | 102 | return name; |
| ... | @@ -125,7 +118,7 @@ public class StoragePartitionClient implements DistributedPrimitiveCreator, Mana | ... | @@ -125,7 +118,7 @@ public class StoragePartitionClient implements DistributedPrimitiveCreator, Mana |
| 125 | 118 | ||
| 126 | @Override | 119 | @Override |
| 127 | public AsyncAtomicCounter newAsyncCounter(String name) { | 120 | public AsyncAtomicCounter newAsyncCounter(String name) { |
| 128 | - DistributedLong distributedLong = client.get(name, DistributedLong.class).join(); | 121 | + DistributedLong distributedLong = client.getLong(name).join(); |
| 129 | return new AtomixCounter(name, distributedLong); | 122 | return new AtomixCounter(name, distributedLong); |
| 130 | } | 123 | } |
| 131 | 124 | ||
| ... | @@ -144,7 +137,7 @@ public class StoragePartitionClient implements DistributedPrimitiveCreator, Mana | ... | @@ -144,7 +137,7 @@ public class StoragePartitionClient implements DistributedPrimitiveCreator, Mana |
| 144 | 137 | ||
| 145 | @Override | 138 | @Override |
| 146 | public AsyncLeaderElector newAsyncLeaderElector(String name) { | 139 | public AsyncLeaderElector newAsyncLeaderElector(String name) { |
| 147 | - return client.get(name, AtomixLeaderElector.class).join(); | 140 | + return client.getResource(name, AtomixLeaderElector.class).join(); |
| 148 | } | 141 | } |
| 149 | 142 | ||
| 150 | @Override | 143 | @Override |
| ... | @@ -161,9 +154,4 @@ public class StoragePartitionClient implements DistributedPrimitiveCreator, Mana | ... | @@ -161,9 +154,4 @@ public class StoragePartitionClient implements DistributedPrimitiveCreator, Mana |
| 161 | public boolean isOpen() { | 154 | public boolean isOpen() { |
| 162 | return client.isOpen(); | 155 | return client.isOpen(); |
| 163 | } | 156 | } |
| 164 | - | ||
| 165 | - @Override | ||
| 166 | - public boolean isClosed() { | ||
| 167 | - return client.isClosed(); | ||
| 168 | - } | ||
| 169 | } | 157 | } | ... | ... |
| ... | @@ -22,12 +22,8 @@ import io.atomix.catalyst.transport.Transport; | ... | @@ -22,12 +22,8 @@ import io.atomix.catalyst.transport.Transport; |
| 22 | import io.atomix.copycat.server.CopycatServer; | 22 | import io.atomix.copycat.server.CopycatServer; |
| 23 | import io.atomix.copycat.server.storage.Storage; | 23 | import io.atomix.copycat.server.storage.Storage; |
| 24 | import io.atomix.copycat.server.storage.StorageLevel; | 24 | import io.atomix.copycat.server.storage.StorageLevel; |
| 25 | -import io.atomix.manager.ResourceManagerTypeResolver; | ||
| 26 | import io.atomix.manager.state.ResourceManagerState; | 25 | import io.atomix.manager.state.ResourceManagerState; |
| 27 | -import io.atomix.resource.ResourceRegistry; | 26 | +import io.atomix.manager.util.ResourceManagerTypeResolver; |
| 28 | -import io.atomix.resource.ResourceType; | ||
| 29 | -import io.atomix.resource.ResourceTypeResolver; | ||
| 30 | -import io.atomix.resource.ServiceLoaderResourceResolver; | ||
| 31 | 27 | ||
| 32 | import java.io.File; | 28 | import java.io.File; |
| 33 | import java.util.Collection; | 29 | import java.util.Collection; |
| ... | @@ -37,8 +33,6 @@ import java.util.function.Supplier; | ... | @@ -37,8 +33,6 @@ import java.util.function.Supplier; |
| 37 | import org.onosproject.store.service.PartitionInfo; | 33 | import org.onosproject.store.service.PartitionInfo; |
| 38 | import org.slf4j.Logger; | 34 | import org.slf4j.Logger; |
| 39 | 35 | ||
| 40 | -import com.google.common.collect.ImmutableSet; | ||
| 41 | - | ||
| 42 | /** | 36 | /** |
| 43 | * {@link StoragePartition} server. | 37 | * {@link StoragePartition} server. |
| 44 | */ | 38 | */ |
| ... | @@ -52,20 +46,17 @@ public class StoragePartitionServer implements Managed<StoragePartitionServer> { | ... | @@ -52,20 +46,17 @@ public class StoragePartitionServer implements Managed<StoragePartitionServer> { |
| 52 | private final Supplier<Transport> transport; | 46 | private final Supplier<Transport> transport; |
| 53 | private final Serializer serializer; | 47 | private final Serializer serializer; |
| 54 | private final File dataFolder; | 48 | private final File dataFolder; |
| 55 | - private final Collection<ResourceType> resourceTypes; | ||
| 56 | private CopycatServer server; | 49 | private CopycatServer server; |
| 57 | 50 | ||
| 58 | public StoragePartitionServer(Address localAddress, | 51 | public StoragePartitionServer(Address localAddress, |
| 59 | StoragePartition partition, | 52 | StoragePartition partition, |
| 60 | Serializer serializer, | 53 | Serializer serializer, |
| 61 | Supplier<Transport> transport, | 54 | Supplier<Transport> transport, |
| 62 | - Collection<ResourceType> resourceTypes, | ||
| 63 | File dataFolder) { | 55 | File dataFolder) { |
| 64 | this.partition = partition; | 56 | this.partition = partition; |
| 65 | this.localAddress = localAddress; | 57 | this.localAddress = localAddress; |
| 66 | this.serializer = serializer; | 58 | this.serializer = serializer; |
| 67 | this.transport = transport; | 59 | this.transport = transport; |
| 68 | - this.resourceTypes = ImmutableSet.copyOf(resourceTypes); | ||
| 69 | this.dataFolder = dataFolder; | 60 | this.dataFolder = dataFolder; |
| 70 | } | 61 | } |
| 71 | 62 | ||
| ... | @@ -73,13 +64,13 @@ public class StoragePartitionServer implements Managed<StoragePartitionServer> { | ... | @@ -73,13 +64,13 @@ public class StoragePartitionServer implements Managed<StoragePartitionServer> { |
| 73 | public CompletableFuture<Void> open() { | 64 | public CompletableFuture<Void> open() { |
| 74 | CompletableFuture<CopycatServer> serverOpenFuture; | 65 | CompletableFuture<CopycatServer> serverOpenFuture; |
| 75 | if (partition.getMemberAddresses().contains(localAddress)) { | 66 | if (partition.getMemberAddresses().contains(localAddress)) { |
| 76 | - if (server != null && server.isOpen()) { | 67 | + if (server != null && server.isRunning()) { |
| 77 | return CompletableFuture.completedFuture(null); | 68 | return CompletableFuture.completedFuture(null); |
| 78 | } | 69 | } |
| 79 | synchronized (this) { | 70 | synchronized (this) { |
| 80 | server = buildServer(partition.getMemberAddresses()); | 71 | server = buildServer(partition.getMemberAddresses()); |
| 81 | } | 72 | } |
| 82 | - serverOpenFuture = server.open(); | 73 | + serverOpenFuture = server.start(); |
| 83 | } else { | 74 | } else { |
| 84 | serverOpenFuture = CompletableFuture.completedFuture(null); | 75 | serverOpenFuture = CompletableFuture.completedFuture(null); |
| 85 | } | 76 | } |
| ... | @@ -106,19 +97,15 @@ public class StoragePartitionServer implements Managed<StoragePartitionServer> { | ... | @@ -106,19 +97,15 @@ public class StoragePartitionServer implements Managed<StoragePartitionServer> { |
| 106 | * @return future that is completed when the operation is complete | 97 | * @return future that is completed when the operation is complete |
| 107 | */ | 98 | */ |
| 108 | public CompletableFuture<Void> closeAndExit() { | 99 | public CompletableFuture<Void> closeAndExit() { |
| 109 | - return server.close(); | 100 | + return server.stop(); |
| 110 | } | 101 | } |
| 111 | 102 | ||
| 112 | private CopycatServer buildServer(Collection<Address> clusterMembers) { | 103 | private CopycatServer buildServer(Collection<Address> clusterMembers) { |
| 113 | - ResourceTypeResolver resourceResolver = new ServiceLoaderResourceResolver(); | ||
| 114 | - ResourceRegistry registry = new ResourceRegistry(); | ||
| 115 | - resourceTypes.forEach(registry::register); | ||
| 116 | - resourceResolver.resolve(registry); | ||
| 117 | CopycatServer server = CopycatServer.builder(localAddress, clusterMembers) | 104 | CopycatServer server = CopycatServer.builder(localAddress, clusterMembers) |
| 118 | .withName("partition-" + partition.getId()) | 105 | .withName("partition-" + partition.getId()) |
| 119 | .withSerializer(serializer.clone()) | 106 | .withSerializer(serializer.clone()) |
| 120 | .withTransport(transport.get()) | 107 | .withTransport(transport.get()) |
| 121 | - .withStateMachine(() -> new ResourceManagerState(registry)) | 108 | + .withStateMachine(ResourceManagerState::new) |
| 122 | .withStorage(Storage.builder() | 109 | .withStorage(Storage.builder() |
| 123 | .withStorageLevel(StorageLevel.DISK) | 110 | .withStorageLevel(StorageLevel.DISK) |
| 124 | .withCompactionThreads(1) | 111 | .withCompactionThreads(1) |
| ... | @@ -126,14 +113,14 @@ public class StoragePartitionServer implements Managed<StoragePartitionServer> { | ... | @@ -126,14 +113,14 @@ public class StoragePartitionServer implements Managed<StoragePartitionServer> { |
| 126 | .withMaxEntriesPerSegment(MAX_ENTRIES_PER_LOG_SEGMENT) | 113 | .withMaxEntriesPerSegment(MAX_ENTRIES_PER_LOG_SEGMENT) |
| 127 | .build()) | 114 | .build()) |
| 128 | .build(); | 115 | .build(); |
| 129 | - server.serializer().resolve(new ResourceManagerTypeResolver(registry)); | 116 | + server.serializer().resolve(new ResourceManagerTypeResolver()); |
| 130 | return server; | 117 | return server; |
| 131 | } | 118 | } |
| 132 | 119 | ||
| 133 | public CompletableFuture<Void> join(Collection<Address> otherMembers) { | 120 | public CompletableFuture<Void> join(Collection<Address> otherMembers) { |
| 134 | server = buildServer(otherMembers); | 121 | server = buildServer(otherMembers); |
| 135 | 122 | ||
| 136 | - return server.open().whenComplete((r, e) -> { | 123 | + return server.start().whenComplete((r, e) -> { |
| 137 | if (e == null) { | 124 | if (e == null) { |
| 138 | log.info("Successfully joined partition {}", partition.getId()); | 125 | log.info("Successfully joined partition {}", partition.getId()); |
| 139 | } else { | 126 | } else { |
| ... | @@ -144,12 +131,7 @@ public class StoragePartitionServer implements Managed<StoragePartitionServer> { | ... | @@ -144,12 +131,7 @@ public class StoragePartitionServer implements Managed<StoragePartitionServer> { |
| 144 | 131 | ||
| 145 | @Override | 132 | @Override |
| 146 | public boolean isOpen() { | 133 | public boolean isOpen() { |
| 147 | - return server.isOpen(); | 134 | + return server.isRunning(); |
| 148 | - } | ||
| 149 | - | ||
| 150 | - @Override | ||
| 151 | - public boolean isClosed() { | ||
| 152 | - return server.isClosed(); | ||
| 153 | } | 135 | } |
| 154 | 136 | ||
| 155 | /** | 137 | /** | ... | ... |
| ... | @@ -16,13 +16,14 @@ | ... | @@ -16,13 +16,14 @@ |
| 16 | package org.onosproject.store.primitives.resources.impl; | 16 | package org.onosproject.store.primitives.resources.impl; |
| 17 | 17 | ||
| 18 | import io.atomix.copycat.client.CopycatClient; | 18 | import io.atomix.copycat.client.CopycatClient; |
| 19 | -import io.atomix.resource.Resource; | 19 | +import io.atomix.resource.AbstractResource; |
| 20 | import io.atomix.resource.ResourceTypeInfo; | 20 | import io.atomix.resource.ResourceTypeInfo; |
| 21 | 21 | ||
| 22 | import java.util.Collection; | 22 | import java.util.Collection; |
| 23 | import java.util.ConcurrentModificationException; | 23 | import java.util.ConcurrentModificationException; |
| 24 | import java.util.List; | 24 | import java.util.List; |
| 25 | import java.util.Map.Entry; | 25 | import java.util.Map.Entry; |
| 26 | +import java.util.Properties; | ||
| 26 | import java.util.Set; | 27 | import java.util.Set; |
| 27 | import java.util.concurrent.CompletableFuture; | 28 | import java.util.concurrent.CompletableFuture; |
| 28 | import java.util.concurrent.atomic.AtomicReference; | 29 | import java.util.concurrent.atomic.AtomicReference; |
| ... | @@ -57,18 +58,16 @@ import com.google.common.collect.Sets; | ... | @@ -57,18 +58,16 @@ import com.google.common.collect.Sets; |
| 57 | /** | 58 | /** |
| 58 | * Distributed resource providing the {@link AsyncConsistentMap} primitive. | 59 | * Distributed resource providing the {@link AsyncConsistentMap} primitive. |
| 59 | */ | 60 | */ |
| 60 | -@ResourceTypeInfo(id = -151, | 61 | +@ResourceTypeInfo(id = -151, factory = AtomixConsistentMapFactory.class) |
| 61 | - stateMachine = AtomixConsistentMapState.class, | 62 | +public class AtomixConsistentMap extends AbstractResource<AtomixConsistentMap> |
| 62 | - typeResolver = AtomixConsistentMapCommands.TypeResolver.class) | ||
| 63 | -public class AtomixConsistentMap extends Resource<AtomixConsistentMap> | ||
| 64 | implements AsyncConsistentMap<String, byte[]> { | 63 | implements AsyncConsistentMap<String, byte[]> { |
| 65 | 64 | ||
| 66 | private final Set<MapEventListener<String, byte[]>> mapEventListeners = Sets.newCopyOnWriteArraySet(); | 65 | private final Set<MapEventListener<String, byte[]>> mapEventListeners = Sets.newCopyOnWriteArraySet(); |
| 67 | 66 | ||
| 68 | public static final String CHANGE_SUBJECT = "changeEvents"; | 67 | public static final String CHANGE_SUBJECT = "changeEvents"; |
| 69 | 68 | ||
| 70 | - public AtomixConsistentMap(CopycatClient client, Resource.Options options) { | 69 | + public AtomixConsistentMap(CopycatClient client, Properties properties) { |
| 71 | - super(client, options); | 70 | + super(client, properties); |
| 72 | } | 71 | } |
| 73 | 72 | ||
| 74 | @Override | 73 | @Override | ... | ... |
| 1 | +/* | ||
| 2 | + * Copyright 2016 Open Networking Laboratory | ||
| 3 | + * | ||
| 4 | + * Licensed under the Apache License, Version 2.0 (the "License"); | ||
| 5 | + * you may not use this file except in compliance with the License. | ||
| 6 | + * You may obtain a copy of the License at | ||
| 7 | + * | ||
| 8 | + * http://www.apache.org/licenses/LICENSE-2.0 | ||
| 9 | + * | ||
| 10 | + * Unless required by applicable law or agreed to in writing, software | ||
| 11 | + * distributed under the License is distributed on an "AS IS" BASIS, | ||
| 12 | + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
| 13 | + * See the License for the specific language governing permissions and | ||
| 14 | + * limitations under the License. | ||
| 15 | + */ | ||
| 16 | +package org.onosproject.store.primitives.resources.impl; | ||
| 17 | + | ||
| 18 | +import io.atomix.catalyst.serializer.SerializableTypeResolver; | ||
| 19 | +import io.atomix.copycat.client.CopycatClient; | ||
| 20 | +import io.atomix.resource.ResourceFactory; | ||
| 21 | +import io.atomix.resource.ResourceStateMachine; | ||
| 22 | + | ||
| 23 | +import java.util.Properties; | ||
| 24 | + | ||
| 25 | +/** | ||
| 26 | + * {@link AtomixConsistentMap} resource factory. | ||
| 27 | + * | ||
| 28 | + */ | ||
| 29 | +public class AtomixConsistentMapFactory implements ResourceFactory<AtomixConsistentMap> { | ||
| 30 | + | ||
| 31 | + @Override | ||
| 32 | + public SerializableTypeResolver createSerializableTypeResolver() { | ||
| 33 | + return new AtomixConsistentMapCommands.TypeResolver(); | ||
| 34 | + } | ||
| 35 | + | ||
| 36 | + @Override | ||
| 37 | + public ResourceStateMachine createStateMachine(Properties config) { | ||
| 38 | + return new AtomixConsistentMapState(config); | ||
| 39 | + } | ||
| 40 | + | ||
| 41 | + @Override | ||
| 42 | + public AtomixConsistentMap createInstance(CopycatClient client, Properties options) { | ||
| 43 | + return new AtomixConsistentMap(client, options); | ||
| 44 | + } | ||
| 45 | + } | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
| ... | @@ -26,13 +26,13 @@ import io.atomix.copycat.server.session.SessionListener; | ... | @@ -26,13 +26,13 @@ import io.atomix.copycat.server.session.SessionListener; |
| 26 | import io.atomix.copycat.server.storage.snapshot.SnapshotReader; | 26 | import io.atomix.copycat.server.storage.snapshot.SnapshotReader; |
| 27 | import io.atomix.copycat.server.storage.snapshot.SnapshotWriter; | 27 | import io.atomix.copycat.server.storage.snapshot.SnapshotWriter; |
| 28 | import io.atomix.resource.ResourceStateMachine; | 28 | import io.atomix.resource.ResourceStateMachine; |
| 29 | -import io.atomix.resource.ResourceType; | ||
| 30 | 29 | ||
| 31 | import java.util.Collection; | 30 | import java.util.Collection; |
| 32 | import java.util.HashMap; | 31 | import java.util.HashMap; |
| 33 | import java.util.Iterator; | 32 | import java.util.Iterator; |
| 34 | import java.util.List; | 33 | import java.util.List; |
| 35 | import java.util.Map; | 34 | import java.util.Map; |
| 35 | +import java.util.Properties; | ||
| 36 | import java.util.Set; | 36 | import java.util.Set; |
| 37 | import java.util.concurrent.atomic.AtomicLong; | 37 | import java.util.concurrent.atomic.AtomicLong; |
| 38 | import java.util.stream.Collectors; | 38 | import java.util.stream.Collectors; |
| ... | @@ -77,8 +77,8 @@ public class AtomixConsistentMapState extends ResourceStateMachine implements Se | ... | @@ -77,8 +77,8 @@ public class AtomixConsistentMapState extends ResourceStateMachine implements Se |
| 77 | private final Map<TransactionId, Commit<? extends TransactionPrepare>> pendingTransactions = Maps.newHashMap(); | 77 | private final Map<TransactionId, Commit<? extends TransactionPrepare>> pendingTransactions = Maps.newHashMap(); |
| 78 | private AtomicLong versionCounter = new AtomicLong(0); | 78 | private AtomicLong versionCounter = new AtomicLong(0); |
| 79 | 79 | ||
| 80 | - public AtomixConsistentMapState() { | 80 | + public AtomixConsistentMapState(Properties properties) { |
| 81 | - super(new ResourceType(AtomixConsistentMap.class)); | 81 | + super(properties); |
| 82 | } | 82 | } |
| 83 | 83 | ||
| 84 | @Override | 84 | @Override | ... | ... |
| ... | @@ -17,11 +17,12 @@ package org.onosproject.store.primitives.resources.impl; | ... | @@ -17,11 +17,12 @@ package org.onosproject.store.primitives.resources.impl; |
| 17 | 17 | ||
| 18 | import io.atomix.catalyst.util.Listener; | 18 | import io.atomix.catalyst.util.Listener; |
| 19 | import io.atomix.copycat.client.CopycatClient; | 19 | import io.atomix.copycat.client.CopycatClient; |
| 20 | -import io.atomix.resource.Resource; | 20 | +import io.atomix.resource.AbstractResource; |
| 21 | import io.atomix.resource.ResourceTypeInfo; | 21 | import io.atomix.resource.ResourceTypeInfo; |
| 22 | 22 | ||
| 23 | import java.util.List; | 23 | import java.util.List; |
| 24 | import java.util.Map; | 24 | import java.util.Map; |
| 25 | +import java.util.Properties; | ||
| 25 | import java.util.Set; | 26 | import java.util.Set; |
| 26 | import java.util.concurrent.CompletableFuture; | 27 | import java.util.concurrent.CompletableFuture; |
| 27 | import java.util.function.Consumer; | 28 | import java.util.function.Consumer; |
| ... | @@ -45,10 +46,8 @@ import com.google.common.collect.Sets; | ... | @@ -45,10 +46,8 @@ import com.google.common.collect.Sets; |
| 45 | /** | 46 | /** |
| 46 | * Distributed resource providing the {@link AsyncLeaderElector} primitive. | 47 | * Distributed resource providing the {@link AsyncLeaderElector} primitive. |
| 47 | */ | 48 | */ |
| 48 | -@ResourceTypeInfo(id = -152, | 49 | +@ResourceTypeInfo(id = -151, factory = AtomixLeaderElectorFactory.class) |
| 49 | - stateMachine = AtomixLeaderElectorState.class, | 50 | +public class AtomixLeaderElector extends AbstractResource<AtomixLeaderElector> |
| 50 | - typeResolver = AtomixLeaderElectorCommands.TypeResolver.class) | ||
| 51 | -public class AtomixLeaderElector extends Resource<AtomixLeaderElector> | ||
| 52 | implements AsyncLeaderElector { | 51 | implements AsyncLeaderElector { |
| 53 | private final Set<Consumer<Change<Leadership>>> leadershipChangeListeners = | 52 | private final Set<Consumer<Change<Leadership>>> leadershipChangeListeners = |
| 54 | Sets.newConcurrentHashSet(); | 53 | Sets.newConcurrentHashSet(); |
| ... | @@ -56,8 +55,8 @@ public class AtomixLeaderElector extends Resource<AtomixLeaderElector> | ... | @@ -56,8 +55,8 @@ public class AtomixLeaderElector extends Resource<AtomixLeaderElector> |
| 56 | public static final String CHANGE_SUBJECT = "leadershipChangeEvents"; | 55 | public static final String CHANGE_SUBJECT = "leadershipChangeEvents"; |
| 57 | private Listener<Change<Leadership>> listener; | 56 | private Listener<Change<Leadership>> listener; |
| 58 | 57 | ||
| 59 | - public AtomixLeaderElector(CopycatClient client, Resource.Options options) { | 58 | + public AtomixLeaderElector(CopycatClient client, Properties properties) { |
| 60 | - super(client, options); | 59 | + super(client, properties); |
| 61 | } | 60 | } |
| 62 | 61 | ||
| 63 | @Override | 62 | @Override | ... | ... |
| 1 | +/* | ||
| 2 | + * Copyright 2016 Open Networking Laboratory | ||
| 3 | + * | ||
| 4 | + * Licensed under the Apache License, Version 2.0 (the "License"); | ||
| 5 | + * you may not use this file except in compliance with the License. | ||
| 6 | + * You may obtain a copy of the License at | ||
| 7 | + * | ||
| 8 | + * http://www.apache.org/licenses/LICENSE-2.0 | ||
| 9 | + * | ||
| 10 | + * Unless required by applicable law or agreed to in writing, software | ||
| 11 | + * distributed under the License is distributed on an "AS IS" BASIS, | ||
| 12 | + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
| 13 | + * See the License for the specific language governing permissions and | ||
| 14 | + * limitations under the License. | ||
| 15 | + */ | ||
| 16 | +package org.onosproject.store.primitives.resources.impl; | ||
| 17 | + | ||
| 18 | +import io.atomix.catalyst.serializer.SerializableTypeResolver; | ||
| 19 | +import io.atomix.copycat.client.CopycatClient; | ||
| 20 | +import io.atomix.resource.ResourceFactory; | ||
| 21 | +import io.atomix.resource.ResourceStateMachine; | ||
| 22 | + | ||
| 23 | +import java.util.Properties; | ||
| 24 | + | ||
| 25 | +/** | ||
| 26 | + * {@link AtomixLeaderElector} resource factory. | ||
| 27 | + * | ||
| 28 | + */ | ||
| 29 | +public class AtomixLeaderElectorFactory implements ResourceFactory<AtomixLeaderElector> { | ||
| 30 | + | ||
| 31 | + @Override | ||
| 32 | + public SerializableTypeResolver createSerializableTypeResolver() { | ||
| 33 | + return new AtomixLeaderElectorCommands.TypeResolver(); | ||
| 34 | + } | ||
| 35 | + | ||
| 36 | + @Override | ||
| 37 | + public ResourceStateMachine createStateMachine(Properties config) { | ||
| 38 | + return new AtomixLeaderElectorState(config); | ||
| 39 | + } | ||
| 40 | + | ||
| 41 | + @Override | ||
| 42 | + public AtomixLeaderElector createInstance(CopycatClient client, Properties options) { | ||
| 43 | + return new AtomixLeaderElector(client, options); | ||
| 44 | + } | ||
| 45 | +} | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
| ... | @@ -24,7 +24,6 @@ import io.atomix.copycat.server.session.SessionListener; | ... | @@ -24,7 +24,6 @@ import io.atomix.copycat.server.session.SessionListener; |
| 24 | import io.atomix.copycat.server.storage.snapshot.SnapshotReader; | 24 | import io.atomix.copycat.server.storage.snapshot.SnapshotReader; |
| 25 | import io.atomix.copycat.server.storage.snapshot.SnapshotWriter; | 25 | import io.atomix.copycat.server.storage.snapshot.SnapshotWriter; |
| 26 | import io.atomix.resource.ResourceStateMachine; | 26 | import io.atomix.resource.ResourceStateMachine; |
| 27 | -import io.atomix.resource.ResourceType; | ||
| 28 | 27 | ||
| 29 | import java.util.Arrays; | 28 | import java.util.Arrays; |
| 30 | import java.util.HashMap; | 29 | import java.util.HashMap; |
| ... | @@ -33,6 +32,7 @@ import java.util.LinkedList; | ... | @@ -33,6 +32,7 @@ import java.util.LinkedList; |
| 33 | import java.util.List; | 32 | import java.util.List; |
| 34 | import java.util.Map; | 33 | import java.util.Map; |
| 35 | import java.util.Optional; | 34 | import java.util.Optional; |
| 35 | +import java.util.Properties; | ||
| 36 | import java.util.Set; | 36 | import java.util.Set; |
| 37 | import java.util.concurrent.atomic.AtomicLong; | 37 | import java.util.concurrent.atomic.AtomicLong; |
| 38 | import java.util.function.Supplier; | 38 | import java.util.function.Supplier; |
| ... | @@ -75,8 +75,8 @@ public class AtomixLeaderElectorState extends ResourceStateMachine | ... | @@ -75,8 +75,8 @@ public class AtomixLeaderElectorState extends ResourceStateMachine |
| 75 | ElectionState.class, | 75 | ElectionState.class, |
| 76 | Registration.class); | 76 | Registration.class); |
| 77 | 77 | ||
| 78 | - public AtomixLeaderElectorState() { | 78 | + public AtomixLeaderElectorState(Properties properties) { |
| 79 | - super(new ResourceType(AtomixLeaderElector.class)); | 79 | + super(properties); |
| 80 | } | 80 | } |
| 81 | 81 | ||
| 82 | @Override | 82 | @Override | ... | ... |
| ... | @@ -116,7 +116,7 @@ public class AtomixConsistentMapTest extends AtomixTestBase { | ... | @@ -116,7 +116,7 @@ public class AtomixConsistentMapTest extends AtomixTestBase { |
| 116 | final byte[] rawFooValue = Tools.getBytesUtf8("Hello foo!"); | 116 | final byte[] rawFooValue = Tools.getBytesUtf8("Hello foo!"); |
| 117 | final byte[] rawBarValue = Tools.getBytesUtf8("Hello bar!"); | 117 | final byte[] rawBarValue = Tools.getBytesUtf8("Hello bar!"); |
| 118 | 118 | ||
| 119 | - AtomixConsistentMap map = createAtomixClient().get("test", AtomixConsistentMap.class).join(); | 119 | + AtomixConsistentMap map = createAtomixClient().getResource("test", AtomixConsistentMap.class).join(); |
| 120 | 120 | ||
| 121 | map.isEmpty().thenAccept(result -> { | 121 | map.isEmpty().thenAccept(result -> { |
| 122 | assertTrue(result); | 122 | assertTrue(result); |
| ... | @@ -246,7 +246,7 @@ public class AtomixConsistentMapTest extends AtomixTestBase { | ... | @@ -246,7 +246,7 @@ public class AtomixConsistentMapTest extends AtomixTestBase { |
| 246 | final byte[] value2 = Tools.getBytesUtf8("value2"); | 246 | final byte[] value2 = Tools.getBytesUtf8("value2"); |
| 247 | final byte[] value3 = Tools.getBytesUtf8("value3"); | 247 | final byte[] value3 = Tools.getBytesUtf8("value3"); |
| 248 | 248 | ||
| 249 | - AtomixConsistentMap map = createAtomixClient().get("test", AtomixConsistentMap.class).join(); | 249 | + AtomixConsistentMap map = createAtomixClient().getResource("test", AtomixConsistentMap.class).join(); |
| 250 | 250 | ||
| 251 | map.computeIfAbsent("foo", k -> value1).thenAccept(result -> { | 251 | map.computeIfAbsent("foo", k -> value1).thenAccept(result -> { |
| 252 | assertTrue(Arrays.equals(Versioned.valueOrElse(result, null), value1)); | 252 | assertTrue(Arrays.equals(Versioned.valueOrElse(result, null), value1)); |
| ... | @@ -284,7 +284,7 @@ public class AtomixConsistentMapTest extends AtomixTestBase { | ... | @@ -284,7 +284,7 @@ public class AtomixConsistentMapTest extends AtomixTestBase { |
| 284 | final byte[] value2 = Tools.getBytesUtf8("value2"); | 284 | final byte[] value2 = Tools.getBytesUtf8("value2"); |
| 285 | final byte[] value3 = Tools.getBytesUtf8("value3"); | 285 | final byte[] value3 = Tools.getBytesUtf8("value3"); |
| 286 | 286 | ||
| 287 | - AtomixConsistentMap map = createAtomixClient().get("test", AtomixConsistentMap.class).join(); | 287 | + AtomixConsistentMap map = createAtomixClient().getResource("test", AtomixConsistentMap.class).join(); |
| 288 | TestMapEventListener listener = new TestMapEventListener(); | 288 | TestMapEventListener listener = new TestMapEventListener(); |
| 289 | 289 | ||
| 290 | // add listener; insert new value into map and verify an INSERT event is received. | 290 | // add listener; insert new value into map and verify an INSERT event is received. |
| ... | @@ -343,7 +343,7 @@ public class AtomixConsistentMapTest extends AtomixTestBase { | ... | @@ -343,7 +343,7 @@ public class AtomixConsistentMapTest extends AtomixTestBase { |
| 343 | final byte[] value1 = Tools.getBytesUtf8("value1"); | 343 | final byte[] value1 = Tools.getBytesUtf8("value1"); |
| 344 | final byte[] value2 = Tools.getBytesUtf8("value2"); | 344 | final byte[] value2 = Tools.getBytesUtf8("value2"); |
| 345 | 345 | ||
| 346 | - AtomixConsistentMap map = createAtomixClient().get("test", AtomixConsistentMap.class).join(); | 346 | + AtomixConsistentMap map = createAtomixClient().getResource("test", AtomixConsistentMap.class).join(); |
| 347 | TestMapEventListener listener = new TestMapEventListener(); | 347 | TestMapEventListener listener = new TestMapEventListener(); |
| 348 | 348 | ||
| 349 | map.addListener(listener).join(); | 349 | map.addListener(listener).join(); |
| ... | @@ -398,7 +398,7 @@ public class AtomixConsistentMapTest extends AtomixTestBase { | ... | @@ -398,7 +398,7 @@ public class AtomixConsistentMapTest extends AtomixTestBase { |
| 398 | final byte[] value1 = Tools.getBytesUtf8("value1"); | 398 | final byte[] value1 = Tools.getBytesUtf8("value1"); |
| 399 | final byte[] value2 = Tools.getBytesUtf8("value2"); | 399 | final byte[] value2 = Tools.getBytesUtf8("value2"); |
| 400 | 400 | ||
| 401 | - AtomixConsistentMap map = createAtomixClient().get("test", AtomixConsistentMap.class).join(); | 401 | + AtomixConsistentMap map = createAtomixClient().getResource("test", AtomixConsistentMap.class).join(); |
| 402 | TestMapEventListener listener = new TestMapEventListener(); | 402 | TestMapEventListener listener = new TestMapEventListener(); |
| 403 | 403 | ||
| 404 | map.addListener(listener).join(); | 404 | map.addListener(listener).join(); | ... | ... |
| ... | @@ -60,7 +60,7 @@ public class AtomixLeaderElectorTest extends AtomixTestBase { | ... | @@ -60,7 +60,7 @@ public class AtomixLeaderElectorTest extends AtomixTestBase { |
| 60 | private void leaderElectorRunTests(int numServers) throws Throwable { | 60 | private void leaderElectorRunTests(int numServers) throws Throwable { |
| 61 | createCopycatServers(numServers); | 61 | createCopycatServers(numServers); |
| 62 | Atomix client1 = createAtomixClient(); | 62 | Atomix client1 = createAtomixClient(); |
| 63 | - AtomixLeaderElector elector1 = client1.get("test-elector", AtomixLeaderElector.class).join(); | 63 | + AtomixLeaderElector elector1 = client1.getResource("test-elector", AtomixLeaderElector.class).join(); |
| 64 | elector1.run("foo", node1).thenAccept(result -> { | 64 | elector1.run("foo", node1).thenAccept(result -> { |
| 65 | assertEquals(node1, result.leaderNodeId()); | 65 | assertEquals(node1, result.leaderNodeId()); |
| 66 | assertEquals(1, result.leader().term()); | 66 | assertEquals(1, result.leader().term()); |
| ... | @@ -68,7 +68,7 @@ public class AtomixLeaderElectorTest extends AtomixTestBase { | ... | @@ -68,7 +68,7 @@ public class AtomixLeaderElectorTest extends AtomixTestBase { |
| 68 | assertEquals(node1, result.candidates().get(0)); | 68 | assertEquals(node1, result.candidates().get(0)); |
| 69 | }).join(); | 69 | }).join(); |
| 70 | Atomix client2 = createAtomixClient(); | 70 | Atomix client2 = createAtomixClient(); |
| 71 | - AtomixLeaderElector elector2 = client2.get("test-elector", AtomixLeaderElector.class).join(); | 71 | + AtomixLeaderElector elector2 = client2.getResource("test-elector", AtomixLeaderElector.class).join(); |
| 72 | elector2.run("foo", node2).thenAccept(result -> { | 72 | elector2.run("foo", node2).thenAccept(result -> { |
| 73 | assertEquals(node1, result.leaderNodeId()); | 73 | assertEquals(node1, result.leaderNodeId()); |
| 74 | assertEquals(1, result.leader().term()); | 74 | assertEquals(1, result.leader().term()); |
| ... | @@ -91,10 +91,10 @@ public class AtomixLeaderElectorTest extends AtomixTestBase { | ... | @@ -91,10 +91,10 @@ public class AtomixLeaderElectorTest extends AtomixTestBase { |
| 91 | private void leaderElectorWithdrawTests(int numServers) throws Throwable { | 91 | private void leaderElectorWithdrawTests(int numServers) throws Throwable { |
| 92 | createCopycatServers(numServers); | 92 | createCopycatServers(numServers); |
| 93 | Atomix client1 = createAtomixClient(); | 93 | Atomix client1 = createAtomixClient(); |
| 94 | - AtomixLeaderElector elector1 = client1.get("test-elector", AtomixLeaderElector.class).join(); | 94 | + AtomixLeaderElector elector1 = client1.getResource("test-elector", AtomixLeaderElector.class).join(); |
| 95 | elector1.run("foo", node1).join(); | 95 | elector1.run("foo", node1).join(); |
| 96 | Atomix client2 = createAtomixClient(); | 96 | Atomix client2 = createAtomixClient(); |
| 97 | - AtomixLeaderElector elector2 = client2.get("test-elector", AtomixLeaderElector.class).join(); | 97 | + AtomixLeaderElector elector2 = client2.getResource("test-elector", AtomixLeaderElector.class).join(); |
| 98 | elector2.run("foo", node2).join(); | 98 | elector2.run("foo", node2).join(); |
| 99 | 99 | ||
| 100 | LeaderEventListener listener1 = new LeaderEventListener(); | 100 | LeaderEventListener listener1 = new LeaderEventListener(); |
| ... | @@ -133,11 +133,11 @@ public class AtomixLeaderElectorTest extends AtomixTestBase { | ... | @@ -133,11 +133,11 @@ public class AtomixLeaderElectorTest extends AtomixTestBase { |
| 133 | private void leaderElectorAnointTests(int numServers) throws Throwable { | 133 | private void leaderElectorAnointTests(int numServers) throws Throwable { |
| 134 | createCopycatServers(numServers); | 134 | createCopycatServers(numServers); |
| 135 | Atomix client1 = createAtomixClient(); | 135 | Atomix client1 = createAtomixClient(); |
| 136 | - AtomixLeaderElector elector1 = client1.get("test-elector", AtomixLeaderElector.class).join(); | 136 | + AtomixLeaderElector elector1 = client1.getResource("test-elector", AtomixLeaderElector.class).join(); |
| 137 | Atomix client2 = createAtomixClient(); | 137 | Atomix client2 = createAtomixClient(); |
| 138 | - AtomixLeaderElector elector2 = client2.get("test-elector", AtomixLeaderElector.class).join(); | 138 | + AtomixLeaderElector elector2 = client2.getResource("test-elector", AtomixLeaderElector.class).join(); |
| 139 | Atomix client3 = createAtomixClient(); | 139 | Atomix client3 = createAtomixClient(); |
| 140 | - AtomixLeaderElector elector3 = client3.get("test-elector", AtomixLeaderElector.class).join(); | 140 | + AtomixLeaderElector elector3 = client3.getResource("test-elector", AtomixLeaderElector.class).join(); |
| 141 | elector1.run("foo", node1).join(); | 141 | elector1.run("foo", node1).join(); |
| 142 | elector2.run("foo", node2).join(); | 142 | elector2.run("foo", node2).join(); |
| 143 | 143 | ||
| ... | @@ -195,11 +195,11 @@ public class AtomixLeaderElectorTest extends AtomixTestBase { | ... | @@ -195,11 +195,11 @@ public class AtomixLeaderElectorTest extends AtomixTestBase { |
| 195 | private void leaderElectorPromoteTests(int numServers) throws Throwable { | 195 | private void leaderElectorPromoteTests(int numServers) throws Throwable { |
| 196 | createCopycatServers(numServers); | 196 | createCopycatServers(numServers); |
| 197 | Atomix client1 = createAtomixClient(); | 197 | Atomix client1 = createAtomixClient(); |
| 198 | - AtomixLeaderElector elector1 = client1.get("test-elector", AtomixLeaderElector.class).join(); | 198 | + AtomixLeaderElector elector1 = client1.getResource("test-elector", AtomixLeaderElector.class).join(); |
| 199 | Atomix client2 = createAtomixClient(); | 199 | Atomix client2 = createAtomixClient(); |
| 200 | - AtomixLeaderElector elector2 = client2.get("test-elector", AtomixLeaderElector.class).join(); | 200 | + AtomixLeaderElector elector2 = client2.getResource("test-elector", AtomixLeaderElector.class).join(); |
| 201 | Atomix client3 = createAtomixClient(); | 201 | Atomix client3 = createAtomixClient(); |
| 202 | - AtomixLeaderElector elector3 = client3.get("test-elector", AtomixLeaderElector.class).join(); | 202 | + AtomixLeaderElector elector3 = client3.getResource("test-elector", AtomixLeaderElector.class).join(); |
| 203 | elector1.run("foo", node1).join(); | 203 | elector1.run("foo", node1).join(); |
| 204 | elector2.run("foo", node2).join(); | 204 | elector2.run("foo", node2).join(); |
| 205 | 205 | ||
| ... | @@ -252,10 +252,10 @@ public class AtomixLeaderElectorTest extends AtomixTestBase { | ... | @@ -252,10 +252,10 @@ public class AtomixLeaderElectorTest extends AtomixTestBase { |
| 252 | private void leaderElectorLeaderSessionCloseTests(int numServers) throws Throwable { | 252 | private void leaderElectorLeaderSessionCloseTests(int numServers) throws Throwable { |
| 253 | createCopycatServers(numServers); | 253 | createCopycatServers(numServers); |
| 254 | Atomix client1 = createAtomixClient(); | 254 | Atomix client1 = createAtomixClient(); |
| 255 | - AtomixLeaderElector elector1 = client1.get("test-elector", AtomixLeaderElector.class).join(); | 255 | + AtomixLeaderElector elector1 = client1.getResource("test-elector", AtomixLeaderElector.class).join(); |
| 256 | elector1.run("foo", node1).join(); | 256 | elector1.run("foo", node1).join(); |
| 257 | Atomix client2 = createAtomixClient(); | 257 | Atomix client2 = createAtomixClient(); |
| 258 | - AtomixLeaderElector elector2 = client2.get("test-elector", AtomixLeaderElector.class).join(); | 258 | + AtomixLeaderElector elector2 = client2.getResource("test-elector", AtomixLeaderElector.class).join(); |
| 259 | LeaderEventListener listener = new LeaderEventListener(); | 259 | LeaderEventListener listener = new LeaderEventListener(); |
| 260 | elector2.run("foo", node2).join(); | 260 | elector2.run("foo", node2).join(); |
| 261 | elector2.addChangeListener(listener).join(); | 261 | elector2.addChangeListener(listener).join(); |
| ... | @@ -280,10 +280,10 @@ public class AtomixLeaderElectorTest extends AtomixTestBase { | ... | @@ -280,10 +280,10 @@ public class AtomixLeaderElectorTest extends AtomixTestBase { |
| 280 | private void leaderElectorNonLeaderSessionCloseTests(int numServers) throws Throwable { | 280 | private void leaderElectorNonLeaderSessionCloseTests(int numServers) throws Throwable { |
| 281 | createCopycatServers(numServers); | 281 | createCopycatServers(numServers); |
| 282 | Atomix client1 = createAtomixClient(); | 282 | Atomix client1 = createAtomixClient(); |
| 283 | - AtomixLeaderElector elector1 = client1.get("test-elector", AtomixLeaderElector.class).join(); | 283 | + AtomixLeaderElector elector1 = client1.getResource("test-elector", AtomixLeaderElector.class).join(); |
| 284 | elector1.run("foo", node1).join(); | 284 | elector1.run("foo", node1).join(); |
| 285 | Atomix client2 = createAtomixClient(); | 285 | Atomix client2 = createAtomixClient(); |
| 286 | - AtomixLeaderElector elector2 = client2.get("test-elector", AtomixLeaderElector.class).join(); | 286 | + AtomixLeaderElector elector2 = client2.getResource("test-elector", AtomixLeaderElector.class).join(); |
| 287 | LeaderEventListener listener = new LeaderEventListener(); | 287 | LeaderEventListener listener = new LeaderEventListener(); |
| 288 | elector2.run("foo", node2).join(); | 288 | elector2.run("foo", node2).join(); |
| 289 | elector1.addChangeListener(listener).join(); | 289 | elector1.addChangeListener(listener).join(); |
| ... | @@ -309,8 +309,8 @@ public class AtomixLeaderElectorTest extends AtomixTestBase { | ... | @@ -309,8 +309,8 @@ public class AtomixLeaderElectorTest extends AtomixTestBase { |
| 309 | createCopycatServers(numServers); | 309 | createCopycatServers(numServers); |
| 310 | Atomix client1 = createAtomixClient(); | 310 | Atomix client1 = createAtomixClient(); |
| 311 | Atomix client2 = createAtomixClient(); | 311 | Atomix client2 = createAtomixClient(); |
| 312 | - AtomixLeaderElector elector1 = client1.get("test-elector", AtomixLeaderElector.class).join(); | 312 | + AtomixLeaderElector elector1 = client1.getResource("test-elector", AtomixLeaderElector.class).join(); |
| 313 | - AtomixLeaderElector elector2 = client2.get("test-elector", AtomixLeaderElector.class).join(); | 313 | + AtomixLeaderElector elector2 = client2.getResource("test-elector", AtomixLeaderElector.class).join(); |
| 314 | elector1.run("foo", node1).join(); | 314 | elector1.run("foo", node1).join(); |
| 315 | elector2.run("foo", node2).join(); | 315 | elector2.run("foo", node2).join(); |
| 316 | elector2.run("bar", node2).join(); | 316 | elector2.run("bar", node2).join(); | ... | ... |
| ... | @@ -26,7 +26,6 @@ import io.atomix.copycat.server.CopycatServer; | ... | @@ -26,7 +26,6 @@ import io.atomix.copycat.server.CopycatServer; |
| 26 | import io.atomix.copycat.server.storage.Storage; | 26 | import io.atomix.copycat.server.storage.Storage; |
| 27 | import io.atomix.copycat.server.storage.StorageLevel; | 27 | import io.atomix.copycat.server.storage.StorageLevel; |
| 28 | import io.atomix.manager.state.ResourceManagerState; | 28 | import io.atomix.manager.state.ResourceManagerState; |
| 29 | -import io.atomix.resource.ResourceRegistry; | ||
| 30 | import io.atomix.resource.ResourceType; | 29 | import io.atomix.resource.ResourceType; |
| 31 | 30 | ||
| 32 | import java.io.File; | 31 | import java.io.File; |
| ... | @@ -90,7 +89,7 @@ public abstract class AtomixTestBase { | ... | @@ -90,7 +89,7 @@ public abstract class AtomixTestBase { |
| 90 | 89 | ||
| 91 | for (int i = 0; i < nodes; i++) { | 90 | for (int i = 0; i < nodes; i++) { |
| 92 | CopycatServer server = createCopycatServer(members.get(i)); | 91 | CopycatServer server = createCopycatServer(members.get(i)); |
| 93 | - server.open().thenRun(latch::countDown); | 92 | + server.start().thenRun(latch::countDown); |
| 94 | servers.add(server); | 93 | servers.add(server); |
| 95 | } | 94 | } |
| 96 | 95 | ||
| ... | @@ -103,15 +102,13 @@ public abstract class AtomixTestBase { | ... | @@ -103,15 +102,13 @@ public abstract class AtomixTestBase { |
| 103 | * Creates a Copycat server. | 102 | * Creates a Copycat server. |
| 104 | */ | 103 | */ |
| 105 | protected CopycatServer createCopycatServer(Address address) { | 104 | protected CopycatServer createCopycatServer(Address address) { |
| 106 | - ResourceRegistry resourceRegistry = new ResourceRegistry(); | ||
| 107 | - resourceRegistry.register(resourceType()); | ||
| 108 | CopycatServer server = CopycatServer.builder(address, members) | 105 | CopycatServer server = CopycatServer.builder(address, members) |
| 109 | .withTransport(new LocalTransport(registry)) | 106 | .withTransport(new LocalTransport(registry)) |
| 110 | .withStorage(Storage.builder() | 107 | .withStorage(Storage.builder() |
| 111 | .withStorageLevel(StorageLevel.DISK) | 108 | .withStorageLevel(StorageLevel.DISK) |
| 112 | .withDirectory(TEST_DIR + "/" + address.port()) | 109 | .withDirectory(TEST_DIR + "/" + address.port()) |
| 113 | .build()) | 110 | .build()) |
| 114 | - .withStateMachine(() -> new ResourceManagerState(resourceRegistry)) | 111 | + .withStateMachine(ResourceManagerState::new) |
| 115 | .withSerializer(serializer.clone()) | 112 | .withSerializer(serializer.clone()) |
| 116 | .withHeartbeatInterval(Duration.ofMillis(25)) | 113 | .withHeartbeatInterval(Duration.ofMillis(25)) |
| 117 | .withElectionTimeout(Duration.ofMillis(50)) | 114 | .withElectionTimeout(Duration.ofMillis(50)) |
| ... | @@ -134,7 +131,7 @@ public abstract class AtomixTestBase { | ... | @@ -134,7 +131,7 @@ public abstract class AtomixTestBase { |
| 134 | .toArray(CompletableFuture[]::new)); | 131 | .toArray(CompletableFuture[]::new)); |
| 135 | 132 | ||
| 136 | closeClients.thenCompose(v -> CompletableFuture.allOf(copycatServers.stream() | 133 | closeClients.thenCompose(v -> CompletableFuture.allOf(copycatServers.stream() |
| 137 | - .map(CopycatServer::close) | 134 | + .map(CopycatServer::stop) |
| 138 | .toArray(CompletableFuture[]::new))).join(); | 135 | .toArray(CompletableFuture[]::new))).join(); |
| 139 | 136 | ||
| 140 | deleteDirectory(TEST_DIR); | 137 | deleteDirectory(TEST_DIR); |
| ... | @@ -171,7 +168,6 @@ public abstract class AtomixTestBase { | ... | @@ -171,7 +168,6 @@ public abstract class AtomixTestBase { |
| 171 | Atomix client = AtomixClient.builder(members) | 168 | Atomix client = AtomixClient.builder(members) |
| 172 | .withTransport(new LocalTransport(registry)) | 169 | .withTransport(new LocalTransport(registry)) |
| 173 | .withSerializer(serializer.clone()) | 170 | .withSerializer(serializer.clone()) |
| 174 | - .withResourceResolver(r -> r.register(resourceType())) | ||
| 175 | .build(); | 171 | .build(); |
| 176 | client.open().thenRun(latch::countDown); | 172 | client.open().thenRun(latch::countDown); |
| 177 | atomixClients.add(client); | 173 | atomixClients.add(client); | ... | ... |
| ... | @@ -77,7 +77,7 @@ | ... | @@ -77,7 +77,7 @@ |
| 77 | <onos-build-conf.version>1.2</onos-build-conf.version> | 77 | <onos-build-conf.version>1.2</onos-build-conf.version> |
| 78 | <netty4.version>4.0.33.Final</netty4.version> | 78 | <netty4.version>4.0.33.Final</netty4.version> |
| 79 | <!-- TODO: replace with final release version when it is out --> | 79 | <!-- TODO: replace with final release version when it is out --> |
| 80 | - <atomix.version>1.0.0-rc2</atomix.version> | 80 | + <atomix.version>1.0.0-rc3</atomix.version> |
| 81 | <copycat.version>0.5.1.onos</copycat.version> | 81 | <copycat.version>0.5.1.onos</copycat.version> |
| 82 | <openflowj.version>0.9.2.onos</openflowj.version> | 82 | <openflowj.version>0.9.2.onos</openflowj.version> |
| 83 | <onos-maven-plugin.version>1.9</onos-maven-plugin.version> | 83 | <onos-maven-plugin.version>1.9</onos-maven-plugin.version> | ... | ... |
-
Please register or login to post a comment