Committed by
Gerrit Code Review
Migrating to latest Atomix
Change-Id: Ie636d1b2623b7f83572dca0d70bd56734379e61a
Showing
31 changed files
with
399 additions
and
676 deletions
| ... | @@ -39,9 +39,6 @@ import org.onosproject.store.service.LeaderElector; | ... | @@ -39,9 +39,6 @@ import org.onosproject.store.service.LeaderElector; |
| 39 | import org.onosproject.store.service.StorageService; | 39 | import org.onosproject.store.service.StorageService; |
| 40 | import org.slf4j.Logger; | 40 | import org.slf4j.Logger; |
| 41 | 41 | ||
| 42 | -import com.google.common.collect.ImmutableMap; | ||
| 43 | -import com.google.common.collect.Maps; | ||
| 44 | - | ||
| 45 | /** | 42 | /** |
| 46 | * Implementation of {@code LeadershipStore} that makes use of a {@link LeaderElector} | 43 | * Implementation of {@code LeadershipStore} that makes use of a {@link LeaderElector} |
| 47 | * primitive. | 44 | * primitive. |
| ... | @@ -62,13 +59,11 @@ public class NewDistributedLeadershipStore | ... | @@ -62,13 +59,11 @@ public class NewDistributedLeadershipStore |
| 62 | 59 | ||
| 63 | private NodeId localNodeId; | 60 | private NodeId localNodeId; |
| 64 | private LeaderElector leaderElector; | 61 | private LeaderElector leaderElector; |
| 65 | - private final Map<String, Leadership> leaderBoard = Maps.newConcurrentMap(); | ||
| 66 | 62 | ||
| 67 | private final Consumer<Change<Leadership>> leadershipChangeListener = | 63 | private final Consumer<Change<Leadership>> leadershipChangeListener = |
| 68 | change -> { | 64 | change -> { |
| 69 | Leadership oldValue = change.oldValue(); | 65 | Leadership oldValue = change.oldValue(); |
| 70 | Leadership newValue = change.newValue(); | 66 | Leadership newValue = change.newValue(); |
| 71 | - leaderBoard.put(newValue.topic(), newValue); | ||
| 72 | boolean leaderChanged = !Objects.equals(oldValue.leader(), newValue.leader()); | 67 | boolean leaderChanged = !Objects.equals(oldValue.leader(), newValue.leader()); |
| 73 | boolean candidatesChanged = !Objects.equals(oldValue.candidates(), newValue.candidates()); | 68 | boolean candidatesChanged = !Objects.equals(oldValue.candidates(), newValue.candidates()); |
| 74 | LeadershipEvent.Type eventType = null; | 69 | LeadershipEvent.Type eventType = null; |
| ... | @@ -92,7 +87,6 @@ public class NewDistributedLeadershipStore | ... | @@ -92,7 +87,6 @@ public class NewDistributedLeadershipStore |
| 92 | .build() | 87 | .build() |
| 93 | .asLeaderElector(); | 88 | .asLeaderElector(); |
| 94 | leaderElector.addChangeListener(leadershipChangeListener); | 89 | leaderElector.addChangeListener(leadershipChangeListener); |
| 95 | - leaderBoard.putAll(getLeaderships()); | ||
| 96 | log.info("Started"); | 90 | log.info("Started"); |
| 97 | } | 91 | } |
| 98 | 92 | ||
| ... | @@ -129,11 +123,11 @@ public class NewDistributedLeadershipStore | ... | @@ -129,11 +123,11 @@ public class NewDistributedLeadershipStore |
| 129 | 123 | ||
| 130 | @Override | 124 | @Override |
| 131 | public Leadership getLeadership(String topic) { | 125 | public Leadership getLeadership(String topic) { |
| 132 | - return leaderBoard.get(topic); | 126 | + return leaderElector.getLeadership(topic); |
| 133 | } | 127 | } |
| 134 | 128 | ||
| 135 | @Override | 129 | @Override |
| 136 | public Map<String, Leadership> getLeaderships() { | 130 | public Map<String, Leadership> getLeaderships() { |
| 137 | - return ImmutableMap.copyOf(leaderBoard); | 131 | + return leaderElector.getLeaderships(); |
| 138 | } | 132 | } |
| 139 | } | 133 | } | ... | ... |
| ... | @@ -3,29 +3,12 @@ COMPILE_DEPS = [ | ... | @@ -3,29 +3,12 @@ COMPILE_DEPS = [ |
| 3 | '//core/common:onos-core-common', | 3 | '//core/common:onos-core-common', |
| 4 | '//incubator/api:onos-incubator-api', | 4 | '//incubator/api:onos-incubator-api', |
| 5 | '//core/store/serializers:onos-core-serializers', | 5 | '//core/store/serializers:onos-core-serializers', |
| 6 | - '//lib:copycat-client', | ||
| 7 | - '//lib:copycat-server', | ||
| 8 | - '//lib:copycat-protocol', | ||
| 9 | - '//lib:copycat-core', | ||
| 10 | - '//lib:typesafe-config', | ||
| 11 | - '//lib:copycat-api', | ||
| 12 | - '//lib:copycat-state-machine', | ||
| 13 | - '//lib:copycat-state-log', | ||
| 14 | - '//lib:catalyst-transport', | ||
| 15 | - '//lib:catalyst-buffer', | ||
| 16 | - '//lib:catalyst-common', | ||
| 17 | - '//lib:catalyst-local', | ||
| 18 | - '//lib:catalyst-serializer', | ||
| 19 | '//lib:atomix', | 6 | '//lib:atomix', |
| 20 | - '//lib:atomix-resource', | ||
| 21 | - '//lib:atomix-variables', | ||
| 22 | - '//lib:atomix-resource-manager', | ||
| 23 | ] | 7 | ] |
| 24 | 8 | ||
| 25 | TEST_DEPS = [ | 9 | TEST_DEPS = [ |
| 26 | '//lib:TEST', | 10 | '//lib:TEST', |
| 27 | '//core/api:onos-api-tests', | 11 | '//core/api:onos-api-tests', |
| 28 | - '//lib:onos-atomix', | ||
| 29 | ] | 12 | ] |
| 30 | 13 | ||
| 31 | osgi_jar_with_tests ( | 14 | osgi_jar_with_tests ( | ... | ... |
| ... | @@ -70,9 +70,9 @@ | ... | @@ -70,9 +70,9 @@ |
| 70 | </dependency> | 70 | </dependency> |
| 71 | 71 | ||
| 72 | <dependency> | 72 | <dependency> |
| 73 | - <groupId>org.onosproject</groupId> | 73 | + <groupId>io.atomix</groupId> |
| 74 | <artifactId>atomix</artifactId> | 74 | <artifactId>atomix</artifactId> |
| 75 | - <version>1.0.onos-SNAPSHOT</version> | 75 | + <version>1.0.0-rc7</version> |
| 76 | </dependency> | 76 | </dependency> |
| 77 | </dependencies> | 77 | </dependencies> |
| 78 | </project> | 78 | </project> | ... | ... |
| ... | @@ -19,9 +19,8 @@ import java.util.Arrays; | ... | @@ -19,9 +19,8 @@ import java.util.Arrays; |
| 19 | 19 | ||
| 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; | ||
| 23 | import io.atomix.manager.util.ResourceManagerTypeResolver; | 22 | import io.atomix.manager.util.ResourceManagerTypeResolver; |
| 24 | -import io.atomix.variables.state.LongCommands; | 23 | +import io.atomix.variables.internal.LongCommands; |
| 25 | 24 | ||
| 26 | import org.onlab.util.Match; | 25 | import org.onlab.util.Match; |
| 27 | import org.onosproject.cluster.Leader; | 26 | import org.onosproject.cluster.Leader; |
| ... | @@ -63,8 +62,7 @@ public final class CatalystSerializers { | ... | @@ -63,8 +62,7 @@ public final class CatalystSerializers { |
| 63 | Transaction.State.class, | 62 | Transaction.State.class, |
| 64 | PrepareResult.class, | 63 | PrepareResult.class, |
| 65 | CommitResult.class, | 64 | CommitResult.class, |
| 66 | - RollbackResult.class, | 65 | + RollbackResult.class)); |
| 67 | - Query.ConsistencyLevel.class)); | ||
| 68 | // ONOS classes | 66 | // ONOS classes |
| 69 | serializer.register(Change.class, factory); | 67 | serializer.register(Change.class, factory); |
| 70 | serializer.register(Leader.class, factory); | 68 | serializer.register(Leader.class, factory); | ... | ... |
| ... | @@ -29,7 +29,7 @@ import com.google.common.collect.Sets; | ... | @@ -29,7 +29,7 @@ import com.google.common.collect.Sets; |
| 29 | import io.atomix.catalyst.transport.Address; | 29 | import io.atomix.catalyst.transport.Address; |
| 30 | import io.atomix.catalyst.transport.Client; | 30 | import io.atomix.catalyst.transport.Client; |
| 31 | import io.atomix.catalyst.transport.Connection; | 31 | import io.atomix.catalyst.transport.Connection; |
| 32 | -import io.atomix.catalyst.util.concurrent.ThreadContext; | 32 | +import io.atomix.catalyst.concurrent.ThreadContext; |
| 33 | 33 | ||
| 34 | /** | 34 | /** |
| 35 | * {@link Client} implementation for {@link CopycatTransport}. | 35 | * {@link Client} implementation for {@link CopycatTransport}. | ... | ... |
| ... | @@ -15,6 +15,18 @@ | ... | @@ -15,6 +15,18 @@ |
| 15 | */ | 15 | */ |
| 16 | package org.onosproject.store.primitives.impl; | 16 | package org.onosproject.store.primitives.impl; |
| 17 | 17 | ||
| 18 | +import static com.google.common.base.Preconditions.checkNotNull; | ||
| 19 | +import io.atomix.catalyst.concurrent.Listener; | ||
| 20 | +import io.atomix.catalyst.concurrent.Listeners; | ||
| 21 | +import io.atomix.catalyst.concurrent.ThreadContext; | ||
| 22 | +import io.atomix.catalyst.serializer.SerializationException; | ||
| 23 | +import io.atomix.catalyst.transport.Address; | ||
| 24 | +import io.atomix.catalyst.transport.Connection; | ||
| 25 | +import io.atomix.catalyst.transport.MessageHandler; | ||
| 26 | +import io.atomix.catalyst.transport.TransportException; | ||
| 27 | +import io.atomix.catalyst.util.Assert; | ||
| 28 | +import io.atomix.catalyst.util.reference.ReferenceCounted; | ||
| 29 | + | ||
| 18 | import java.io.ByteArrayInputStream; | 30 | import java.io.ByteArrayInputStream; |
| 19 | import java.io.ByteArrayOutputStream; | 31 | import java.io.ByteArrayOutputStream; |
| 20 | import java.io.DataInputStream; | 32 | import java.io.DataInputStream; |
| ... | @@ -26,8 +38,6 @@ import java.util.Objects; | ... | @@ -26,8 +38,6 @@ import java.util.Objects; |
| 26 | import java.util.concurrent.CompletableFuture; | 38 | import java.util.concurrent.CompletableFuture; |
| 27 | import java.util.function.Consumer; | 39 | import java.util.function.Consumer; |
| 28 | 40 | ||
| 29 | - | ||
| 30 | - | ||
| 31 | import org.apache.commons.io.IOUtils; | 41 | import org.apache.commons.io.IOUtils; |
| 32 | import org.onlab.util.Tools; | 42 | import org.onlab.util.Tools; |
| 33 | import org.onosproject.cluster.PartitionId; | 43 | import org.onosproject.cluster.PartitionId; |
| ... | @@ -38,18 +48,6 @@ import com.google.common.base.MoreObjects; | ... | @@ -38,18 +48,6 @@ import com.google.common.base.MoreObjects; |
| 38 | import com.google.common.base.Throwables; | 48 | import com.google.common.base.Throwables; |
| 39 | import com.google.common.collect.Maps; | 49 | import com.google.common.collect.Maps; |
| 40 | 50 | ||
| 41 | -import static com.google.common.base.Preconditions.checkNotNull; | ||
| 42 | -import io.atomix.catalyst.serializer.SerializationException; | ||
| 43 | -import io.atomix.catalyst.transport.Address; | ||
| 44 | -import io.atomix.catalyst.transport.Connection; | ||
| 45 | -import io.atomix.catalyst.transport.MessageHandler; | ||
| 46 | -import io.atomix.catalyst.transport.TransportException; | ||
| 47 | -import io.atomix.catalyst.util.Assert; | ||
| 48 | -import io.atomix.catalyst.util.Listener; | ||
| 49 | -import io.atomix.catalyst.util.Listeners; | ||
| 50 | -import io.atomix.catalyst.util.ReferenceCounted; | ||
| 51 | -import io.atomix.catalyst.util.concurrent.ThreadContext; | ||
| 52 | - | ||
| 53 | /** | 51 | /** |
| 54 | * {@link Connection} implementation for CopycatTransport. | 52 | * {@link Connection} implementation for CopycatTransport. |
| 55 | */ | 53 | */ | ... | ... |
| ... | @@ -17,6 +17,12 @@ package org.onosproject.store.primitives.impl; | ... | @@ -17,6 +17,12 @@ package org.onosproject.store.primitives.impl; |
| 17 | 17 | ||
| 18 | import static com.google.common.base.Preconditions.checkNotNull; | 18 | import static com.google.common.base.Preconditions.checkNotNull; |
| 19 | import static org.slf4j.LoggerFactory.getLogger; | 19 | import static org.slf4j.LoggerFactory.getLogger; |
| 20 | +import io.atomix.catalyst.concurrent.CatalystThreadFactory; | ||
| 21 | +import io.atomix.catalyst.concurrent.SingleThreadContext; | ||
| 22 | +import io.atomix.catalyst.concurrent.ThreadContext; | ||
| 23 | +import io.atomix.catalyst.transport.Address; | ||
| 24 | +import io.atomix.catalyst.transport.Connection; | ||
| 25 | +import io.atomix.catalyst.transport.Server; | ||
| 20 | 26 | ||
| 21 | import java.io.ByteArrayInputStream; | 27 | import java.io.ByteArrayInputStream; |
| 22 | import java.io.DataInputStream; | 28 | import java.io.DataInputStream; |
| ... | @@ -36,13 +42,6 @@ import org.slf4j.Logger; | ... | @@ -36,13 +42,6 @@ import org.slf4j.Logger; |
| 36 | 42 | ||
| 37 | import com.google.common.collect.Maps; | 43 | import com.google.common.collect.Maps; |
| 38 | 44 | ||
| 39 | -import io.atomix.catalyst.transport.Address; | ||
| 40 | -import io.atomix.catalyst.transport.Connection; | ||
| 41 | -import io.atomix.catalyst.transport.Server; | ||
| 42 | -import io.atomix.catalyst.util.concurrent.CatalystThreadFactory; | ||
| 43 | -import io.atomix.catalyst.util.concurrent.SingleThreadContext; | ||
| 44 | -import io.atomix.catalyst.util.concurrent.ThreadContext; | ||
| 45 | - | ||
| 46 | /** | 45 | /** |
| 47 | * {@link Server} implementation for {@link CopycatTransport}. | 46 | * {@link Server} implementation for {@link CopycatTransport}. |
| 48 | */ | 47 | */ | ... | ... |
| 1 | +/* | ||
| 2 | + * Copyright 2016-present 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.impl; | ||
| 17 | + | ||
| 18 | +import io.atomix.catalyst.concurrent.Listener; | ||
| 19 | +import io.atomix.catalyst.concurrent.ThreadContext; | ||
| 20 | +import io.atomix.catalyst.serializer.Serializer; | ||
| 21 | +import io.atomix.catalyst.transport.Address; | ||
| 22 | +import io.atomix.catalyst.transport.Transport; | ||
| 23 | +import io.atomix.copycat.Command; | ||
| 24 | +import io.atomix.copycat.Query; | ||
| 25 | +import io.atomix.copycat.client.CopycatClient; | ||
| 26 | +import io.atomix.copycat.session.Session; | ||
| 27 | + | ||
| 28 | +import java.util.Collection; | ||
| 29 | +import java.util.concurrent.CompletableFuture; | ||
| 30 | +import java.util.function.Consumer; | ||
| 31 | + | ||
| 32 | +/** | ||
| 33 | + * {@code CopycatClient} that merely delegates control to | ||
| 34 | + * another CopycatClient. | ||
| 35 | + */ | ||
| 36 | +public class DelegatingCopycatClient implements CopycatClient { | ||
| 37 | + | ||
| 38 | + protected final CopycatClient client; | ||
| 39 | + | ||
| 40 | + DelegatingCopycatClient(CopycatClient client) { | ||
| 41 | + this.client = client; | ||
| 42 | + } | ||
| 43 | + | ||
| 44 | + @Override | ||
| 45 | + public State state() { | ||
| 46 | + return client.state(); | ||
| 47 | + } | ||
| 48 | + | ||
| 49 | + @Override | ||
| 50 | + public Listener<State> onStateChange(Consumer<State> callback) { | ||
| 51 | + return client.onStateChange(callback); | ||
| 52 | + } | ||
| 53 | + | ||
| 54 | + @Override | ||
| 55 | + public ThreadContext context() { | ||
| 56 | + return client.context(); | ||
| 57 | + } | ||
| 58 | + | ||
| 59 | + @Override | ||
| 60 | + public Transport transport() { | ||
| 61 | + return client.transport(); | ||
| 62 | + } | ||
| 63 | + | ||
| 64 | + @Override | ||
| 65 | + public Serializer serializer() { | ||
| 66 | + return client.serializer(); | ||
| 67 | + } | ||
| 68 | + | ||
| 69 | + @Override | ||
| 70 | + public Session session() { | ||
| 71 | + return client.session(); | ||
| 72 | + } | ||
| 73 | + | ||
| 74 | + @Override | ||
| 75 | + public <T> CompletableFuture<T> submit(Command<T> command) { | ||
| 76 | + return client.submit(command); | ||
| 77 | + } | ||
| 78 | + | ||
| 79 | + @Override | ||
| 80 | + public <T> CompletableFuture<T> submit(Query<T> query) { | ||
| 81 | + return client.submit(query); | ||
| 82 | + } | ||
| 83 | + | ||
| 84 | + @Override | ||
| 85 | + public Listener<Void> onEvent(String event, Runnable callback) { | ||
| 86 | + return client.onEvent(event, callback); | ||
| 87 | + } | ||
| 88 | + | ||
| 89 | + @Override | ||
| 90 | + public <T> Listener<T> onEvent(String event, Consumer<T> callback) { | ||
| 91 | + return client.onEvent(event, callback); | ||
| 92 | + } | ||
| 93 | + | ||
| 94 | + @Override | ||
| 95 | + public CompletableFuture<CopycatClient> connect(Collection<Address> members) { | ||
| 96 | + return client.connect(members); | ||
| 97 | + } | ||
| 98 | + | ||
| 99 | + @Override | ||
| 100 | + public CompletableFuture<CopycatClient> recover() { | ||
| 101 | + return client.recover(); | ||
| 102 | + } | ||
| 103 | + | ||
| 104 | + @Override | ||
| 105 | + public CompletableFuture<Void> close() { | ||
| 106 | + return client.close(); | ||
| 107 | + } | ||
| 108 | +} | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
| 1 | +/* | ||
| 2 | + * Copyright 2016-present 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.impl; | ||
| 17 | + | ||
| 18 | +import static org.slf4j.LoggerFactory.getLogger; | ||
| 19 | + | ||
| 20 | +import java.net.ConnectException; | ||
| 21 | +import java.nio.channels.ClosedChannelException; | ||
| 22 | +import java.util.concurrent.CompletableFuture; | ||
| 23 | +import java.util.concurrent.Executors; | ||
| 24 | +import java.util.concurrent.ScheduledExecutorService; | ||
| 25 | +import java.util.concurrent.TimeUnit; | ||
| 26 | +import java.util.concurrent.TimeoutException; | ||
| 27 | +import java.util.function.Predicate; | ||
| 28 | + | ||
| 29 | +import org.slf4j.Logger; | ||
| 30 | + | ||
| 31 | +import com.google.common.base.Throwables; | ||
| 32 | + | ||
| 33 | +import io.atomix.catalyst.transport.TransportException; | ||
| 34 | +import io.atomix.copycat.Query; | ||
| 35 | +import io.atomix.copycat.client.CopycatClient; | ||
| 36 | +import io.atomix.copycat.error.QueryException; | ||
| 37 | +import io.atomix.copycat.error.UnknownSessionException; | ||
| 38 | +import io.atomix.copycat.session.ClosedSessionException; | ||
| 39 | + | ||
| 40 | +/** | ||
| 41 | + * {@code CopycatClient} that can retry when certain recoverable errors are encoutered. | ||
| 42 | + */ | ||
| 43 | +public class QueryRetryingCopycatClient extends DelegatingCopycatClient { | ||
| 44 | + | ||
| 45 | + private final int maxRetries; | ||
| 46 | + private final long delayBetweenRetriesMillis; | ||
| 47 | + private final ScheduledExecutorService executor; | ||
| 48 | + private final Logger log = getLogger(getClass()); | ||
| 49 | + | ||
| 50 | + private final Predicate<Throwable> retryableCheck = e -> e instanceof ConnectException | ||
| 51 | + || e instanceof TimeoutException | ||
| 52 | + || e instanceof TransportException | ||
| 53 | + || e instanceof ClosedChannelException | ||
| 54 | + || e instanceof QueryException | ||
| 55 | + || e instanceof UnknownSessionException | ||
| 56 | + || e instanceof ClosedSessionException; | ||
| 57 | + | ||
| 58 | + QueryRetryingCopycatClient(CopycatClient client, int maxRetries, long delayBetweenRetriesMillis) { | ||
| 59 | + super(client); | ||
| 60 | + this.maxRetries = maxRetries; | ||
| 61 | + this.delayBetweenRetriesMillis = delayBetweenRetriesMillis; | ||
| 62 | + this.executor = Executors.newSingleThreadScheduledExecutor(); | ||
| 63 | + } | ||
| 64 | + | ||
| 65 | + @Override | ||
| 66 | + public CompletableFuture<Void> close() { | ||
| 67 | + executor.shutdown(); | ||
| 68 | + return super.close(); | ||
| 69 | + } | ||
| 70 | + | ||
| 71 | + @Override | ||
| 72 | + public <T> CompletableFuture<T> submit(Query<T> query) { | ||
| 73 | + CompletableFuture<T> future = new CompletableFuture<>(); | ||
| 74 | + executor.submit(() -> submit(query, 1, future)); | ||
| 75 | + return future; | ||
| 76 | + } | ||
| 77 | + | ||
| 78 | + private <T> void submit(Query<T> query, int attemptIndex, CompletableFuture<T> future) { | ||
| 79 | + client.submit(query).whenComplete((r, e) -> { | ||
| 80 | + if (e != null) { | ||
| 81 | + if (attemptIndex < maxRetries + 1 && retryableCheck.test(Throwables.getRootCause(e))) { | ||
| 82 | + log.debug("Retry attempt ({} of {}). Failure due to {}", | ||
| 83 | + attemptIndex, maxRetries, Throwables.getRootCause(e).getClass()); | ||
| 84 | + executor.schedule(() -> | ||
| 85 | + submit(query, attemptIndex + 1, future), delayBetweenRetriesMillis, TimeUnit.MILLISECONDS); | ||
| 86 | + } else { | ||
| 87 | + future.completeExceptionally(e); | ||
| 88 | + } | ||
| 89 | + } else { | ||
| 90 | + future.complete(r); | ||
| 91 | + } | ||
| 92 | + }); | ||
| 93 | + } | ||
| 94 | +} |
| ... | @@ -16,22 +16,18 @@ | ... | @@ -16,22 +16,18 @@ |
| 16 | package org.onosproject.store.primitives.impl; | 16 | package org.onosproject.store.primitives.impl; |
| 17 | 17 | ||
| 18 | import static org.slf4j.LoggerFactory.getLogger; | 18 | import static org.slf4j.LoggerFactory.getLogger; |
| 19 | -import io.atomix.Atomix; | ||
| 20 | import io.atomix.AtomixClient; | 19 | import io.atomix.AtomixClient; |
| 21 | -import io.atomix.catalyst.transport.Address; | ||
| 22 | import io.atomix.catalyst.transport.Transport; | 20 | import io.atomix.catalyst.transport.Transport; |
| 23 | -import io.atomix.catalyst.util.concurrent.CatalystThreadFactory; | ||
| 24 | import io.atomix.copycat.client.ConnectionStrategies; | 21 | import io.atomix.copycat.client.ConnectionStrategies; |
| 25 | import io.atomix.copycat.client.CopycatClient; | 22 | import io.atomix.copycat.client.CopycatClient; |
| 26 | import io.atomix.copycat.client.CopycatClient.State; | 23 | import io.atomix.copycat.client.CopycatClient.State; |
| 27 | import io.atomix.copycat.client.RecoveryStrategies; | 24 | import io.atomix.copycat.client.RecoveryStrategies; |
| 28 | -import io.atomix.copycat.client.RetryStrategies; | ||
| 29 | import io.atomix.copycat.client.ServerSelectionStrategies; | 25 | import io.atomix.copycat.client.ServerSelectionStrategies; |
| 30 | import io.atomix.manager.ResourceClient; | 26 | import io.atomix.manager.ResourceClient; |
| 31 | -import io.atomix.manager.state.ResourceManagerException; | 27 | +import io.atomix.manager.ResourceManagerException; |
| 32 | import io.atomix.manager.util.ResourceManagerTypeResolver; | 28 | import io.atomix.manager.util.ResourceManagerTypeResolver; |
| 29 | +import io.atomix.resource.ResourceRegistry; | ||
| 33 | import io.atomix.resource.ResourceType; | 30 | import io.atomix.resource.ResourceType; |
| 34 | -import io.atomix.resource.util.ResourceRegistry; | ||
| 35 | import io.atomix.variables.DistributedLong; | 31 | import io.atomix.variables.DistributedLong; |
| 36 | 32 | ||
| 37 | import java.util.Collection; | 33 | import java.util.Collection; |
| ... | @@ -70,8 +66,8 @@ public class StoragePartitionClient implements DistributedPrimitiveCreator, Mana | ... | @@ -70,8 +66,8 @@ public class StoragePartitionClient implements DistributedPrimitiveCreator, Mana |
| 70 | private final StoragePartition partition; | 66 | private final StoragePartition partition; |
| 71 | private final Transport transport; | 67 | private final Transport transport; |
| 72 | private final io.atomix.catalyst.serializer.Serializer serializer; | 68 | private final io.atomix.catalyst.serializer.Serializer serializer; |
| 73 | - private Atomix client; | 69 | + private AtomixClient client; |
| 74 | - private CopycatClient copycatClient; | 70 | + private ResourceClient resourceClient; |
| 75 | private static final String ATOMIC_VALUES_CONSISTENT_MAP_NAME = "onos-atomic-values"; | 71 | private static final String ATOMIC_VALUES_CONSISTENT_MAP_NAME = "onos-atomic-values"; |
| 76 | private final Supplier<AsyncConsistentMap<String, byte[]>> onosAtomicValuesMap = | 72 | private final Supplier<AsyncConsistentMap<String, byte[]>> onosAtomicValuesMap = |
| 77 | Suppliers.memoize(() -> newAsyncConsistentMap(ATOMIC_VALUES_CONSISTENT_MAP_NAME, | 73 | Suppliers.memoize(() -> newAsyncConsistentMap(ATOMIC_VALUES_CONSISTENT_MAP_NAME, |
| ... | @@ -99,19 +95,15 @@ public class StoragePartitionClient implements DistributedPrimitiveCreator, Mana | ... | @@ -99,19 +95,15 @@ public class StoragePartitionClient implements DistributedPrimitiveCreator, Mana |
| 99 | 95 | ||
| 100 | @Override | 96 | @Override |
| 101 | public CompletableFuture<Void> open() { | 97 | public CompletableFuture<Void> open() { |
| 102 | - if (client != null && client.isOpen()) { | ||
| 103 | - return CompletableFuture.completedFuture(null); | ||
| 104 | - } | ||
| 105 | synchronized (StoragePartitionClient.this) { | 98 | synchronized (StoragePartitionClient.this) { |
| 106 | - copycatClient = newCopycatClient(partition.getMemberAddresses(), | 99 | + resourceClient = newResourceClient(transport, |
| 107 | - transport, | ||
| 108 | serializer.clone(), | 100 | serializer.clone(), |
| 109 | StoragePartition.RESOURCE_TYPES); | 101 | StoragePartition.RESOURCE_TYPES); |
| 110 | - copycatClient.onStateChange(state -> log.debug("Partition {} client state" | 102 | + resourceClient.client().onStateChange(state -> log.debug("Partition {} client state" |
| 111 | + " changed to {}", partition.getId(), state)); | 103 | + " changed to {}", partition.getId(), state)); |
| 112 | - client = new AtomixClient(new ResourceClient(copycatClient)); | 104 | + client = new AtomixClient(resourceClient); |
| 113 | } | 105 | } |
| 114 | - return client.open().whenComplete((r, e) -> { | 106 | + return client.connect(partition.getMemberAddresses()).whenComplete((r, e) -> { |
| 115 | if (e == null) { | 107 | if (e == null) { |
| 116 | log.info("Successfully started client for partition {}", partition.getId()); | 108 | log.info("Successfully started client for partition {}", partition.getId()); |
| 117 | } else { | 109 | } else { |
| ... | @@ -132,7 +124,7 @@ public class StoragePartitionClient implements DistributedPrimitiveCreator, Mana | ... | @@ -132,7 +124,7 @@ public class StoragePartitionClient implements DistributedPrimitiveCreator, Mana |
| 132 | atomixConsistentMap.statusChangeListeners() | 124 | atomixConsistentMap.statusChangeListeners() |
| 133 | .forEach(listener -> listener.accept(mapper.apply(state))); | 125 | .forEach(listener -> listener.accept(mapper.apply(state))); |
| 134 | }; | 126 | }; |
| 135 | - copycatClient.onStateChange(statusListener); | 127 | + resourceClient.client().onStateChange(statusListener); |
| 136 | AsyncConsistentMap<String, byte[]> rawMap = | 128 | AsyncConsistentMap<String, byte[]> rawMap = |
| 137 | new DelegatingAsyncConsistentMap<String, byte[]>(atomixConsistentMap) { | 129 | new DelegatingAsyncConsistentMap<String, byte[]>(atomixConsistentMap) { |
| 138 | @Override | 130 | @Override |
| ... | @@ -173,7 +165,15 @@ public class StoragePartitionClient implements DistributedPrimitiveCreator, Mana | ... | @@ -173,7 +165,15 @@ public class StoragePartitionClient implements DistributedPrimitiveCreator, Mana |
| 173 | 165 | ||
| 174 | @Override | 166 | @Override |
| 175 | public AsyncLeaderElector newAsyncLeaderElector(String name) { | 167 | public AsyncLeaderElector newAsyncLeaderElector(String name) { |
| 176 | - return client.getResource(name, AtomixLeaderElector.class).join(); | 168 | + AtomixLeaderElector leaderElector = client.getResource(name, AtomixLeaderElector.class) |
| 169 | + .thenCompose(AtomixLeaderElector::setupCache) | ||
| 170 | + .join(); | ||
| 171 | + Consumer<State> statusListener = state -> { | ||
| 172 | + leaderElector.statusChangeListeners() | ||
| 173 | + .forEach(listener -> listener.accept(mapper.apply(state))); | ||
| 174 | + }; | ||
| 175 | + resourceClient.client().onStateChange(statusListener); | ||
| 176 | + return leaderElector; | ||
| 177 | } | 177 | } |
| 178 | 178 | ||
| 179 | @Override | 179 | @Override |
| ... | @@ -188,7 +188,7 @@ public class StoragePartitionClient implements DistributedPrimitiveCreator, Mana | ... | @@ -188,7 +188,7 @@ public class StoragePartitionClient implements DistributedPrimitiveCreator, Mana |
| 188 | 188 | ||
| 189 | @Override | 189 | @Override |
| 190 | public boolean isOpen() { | 190 | public boolean isOpen() { |
| 191 | - return client.isOpen(); | 191 | + return resourceClient.client().state() != State.CLOSED; |
| 192 | } | 192 | } |
| 193 | 193 | ||
| 194 | /** | 194 | /** |
| ... | @@ -198,33 +198,33 @@ public class StoragePartitionClient implements DistributedPrimitiveCreator, Mana | ... | @@ -198,33 +198,33 @@ public class StoragePartitionClient implements DistributedPrimitiveCreator, Mana |
| 198 | public PartitionClientInfo clientInfo() { | 198 | public PartitionClientInfo clientInfo() { |
| 199 | return new PartitionClientInfo(partition.getId(), | 199 | return new PartitionClientInfo(partition.getId(), |
| 200 | partition.getMembers(), | 200 | partition.getMembers(), |
| 201 | - copycatClient.session().id(), | 201 | + resourceClient.client().session().id(), |
| 202 | - mapper.apply(copycatClient.state())); | 202 | + mapper.apply(resourceClient.client().state())); |
| 203 | } | 203 | } |
| 204 | 204 | ||
| 205 | - private CopycatClient newCopycatClient(Collection<Address> members, | 205 | + private ResourceClient newResourceClient(Transport transport, |
| 206 | - Transport transport, | ||
| 207 | io.atomix.catalyst.serializer.Serializer serializer, | 206 | io.atomix.catalyst.serializer.Serializer serializer, |
| 208 | Collection<ResourceType> resourceTypes) { | 207 | Collection<ResourceType> resourceTypes) { |
| 209 | ResourceRegistry registry = new ResourceRegistry(); | 208 | ResourceRegistry registry = new ResourceRegistry(); |
| 210 | resourceTypes.forEach(registry::register); | 209 | resourceTypes.forEach(registry::register); |
| 211 | - CopycatClient client = CopycatClient.builder(members) | 210 | + CopycatClient copycatClient = CopycatClient.builder() |
| 212 | .withServerSelectionStrategy(ServerSelectionStrategies.ANY) | 211 | .withServerSelectionStrategy(ServerSelectionStrategies.ANY) |
| 213 | .withConnectionStrategy(ConnectionStrategies.FIBONACCI_BACKOFF) | 212 | .withConnectionStrategy(ConnectionStrategies.FIBONACCI_BACKOFF) |
| 214 | .withRecoveryStrategy(RecoveryStrategies.RECOVER) | 213 | .withRecoveryStrategy(RecoveryStrategies.RECOVER) |
| 215 | - .withRetryStrategy(RetryStrategies.FIBONACCI_BACKOFF) | ||
| 216 | .withTransport(transport) | 214 | .withTransport(transport) |
| 217 | .withSerializer(serializer) | 215 | .withSerializer(serializer) |
| 218 | - .withThreadFactory(new CatalystThreadFactory(String.format("copycat-client-%s", partition.getId()))) | ||
| 219 | .build(); | 216 | .build(); |
| 220 | - client.serializer().resolve(new ResourceManagerTypeResolver()); | 217 | + copycatClient.serializer().resolve(new ResourceManagerTypeResolver()); |
| 221 | for (ResourceType type : registry.types()) { | 218 | for (ResourceType type : registry.types()) { |
| 222 | try { | 219 | try { |
| 223 | - type.factory().newInstance().createSerializableTypeResolver().resolve(client.serializer().registry()); | 220 | + type.factory() |
| 221 | + .newInstance() | ||
| 222 | + .createSerializableTypeResolver() | ||
| 223 | + .resolve(copycatClient.serializer().registry()); | ||
| 224 | } catch (InstantiationException | IllegalAccessException e) { | 224 | } catch (InstantiationException | IllegalAccessException e) { |
| 225 | throw new ResourceManagerException(e); | 225 | throw new ResourceManagerException(e); |
| 226 | } | 226 | } |
| 227 | } | 227 | } |
| 228 | - return client; | 228 | + return new ResourceClient(new QueryRetryingCopycatClient(copycatClient, 2, 100)); |
| 229 | } | 229 | } |
| 230 | } | 230 | } | ... | ... |
| ... | @@ -22,7 +22,7 @@ import io.atomix.catalyst.transport.Transport; | ... | @@ -22,7 +22,7 @@ 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.state.ResourceManagerState; | 25 | +import io.atomix.manager.internal.ResourceManagerState; |
| 26 | import io.atomix.manager.util.ResourceManagerTypeResolver; | 26 | import io.atomix.manager.util.ResourceManagerTypeResolver; |
| 27 | 27 | ||
| 28 | import java.io.File; | 28 | import java.io.File; |
| ... | @@ -68,9 +68,9 @@ public class StoragePartitionServer implements Managed<StoragePartitionServer> { | ... | @@ -68,9 +68,9 @@ public class StoragePartitionServer implements Managed<StoragePartitionServer> { |
| 68 | return CompletableFuture.completedFuture(null); | 68 | return CompletableFuture.completedFuture(null); |
| 69 | } | 69 | } |
| 70 | synchronized (this) { | 70 | synchronized (this) { |
| 71 | - server = buildServer(partition.getMemberAddresses()); | 71 | + server = buildServer(); |
| 72 | } | 72 | } |
| 73 | - serverOpenFuture = server.start(); | 73 | + serverOpenFuture = server.bootstrap(partition.getMemberAddresses()); |
| 74 | } else { | 74 | } else { |
| 75 | serverOpenFuture = CompletableFuture.completedFuture(null); | 75 | serverOpenFuture = CompletableFuture.completedFuture(null); |
| 76 | } | 76 | } |
| ... | @@ -85,11 +85,7 @@ public class StoragePartitionServer implements Managed<StoragePartitionServer> { | ... | @@ -85,11 +85,7 @@ public class StoragePartitionServer implements Managed<StoragePartitionServer> { |
| 85 | 85 | ||
| 86 | @Override | 86 | @Override |
| 87 | public CompletableFuture<Void> close() { | 87 | public CompletableFuture<Void> close() { |
| 88 | - /** | 88 | + return server.shutdown(); |
| 89 | - * CopycatServer#kill just shuts down the server and does not result | ||
| 90 | - * in any cluster membership changes. | ||
| 91 | - */ | ||
| 92 | - return server.kill(); | ||
| 93 | } | 89 | } |
| 94 | 90 | ||
| 95 | /** | 91 | /** |
| ... | @@ -97,11 +93,11 @@ public class StoragePartitionServer implements Managed<StoragePartitionServer> { | ... | @@ -97,11 +93,11 @@ public class StoragePartitionServer implements Managed<StoragePartitionServer> { |
| 97 | * @return future that is completed when the operation is complete | 93 | * @return future that is completed when the operation is complete |
| 98 | */ | 94 | */ |
| 99 | public CompletableFuture<Void> closeAndExit() { | 95 | public CompletableFuture<Void> closeAndExit() { |
| 100 | - return server.stop(); | 96 | + return server.leave(); |
| 101 | } | 97 | } |
| 102 | 98 | ||
| 103 | - private CopycatServer buildServer(Collection<Address> clusterMembers) { | 99 | + private CopycatServer buildServer() { |
| 104 | - CopycatServer server = CopycatServer.builder(localAddress, clusterMembers) | 100 | + CopycatServer server = CopycatServer.builder(localAddress) |
| 105 | .withName("partition-" + partition.getId()) | 101 | .withName("partition-" + partition.getId()) |
| 106 | .withSerializer(serializer.clone()) | 102 | .withSerializer(serializer.clone()) |
| 107 | .withTransport(transport.get()) | 103 | .withTransport(transport.get()) |
| ... | @@ -118,9 +114,8 @@ public class StoragePartitionServer implements Managed<StoragePartitionServer> { | ... | @@ -118,9 +114,8 @@ public class StoragePartitionServer implements Managed<StoragePartitionServer> { |
| 118 | } | 114 | } |
| 119 | 115 | ||
| 120 | public CompletableFuture<Void> join(Collection<Address> otherMembers) { | 116 | public CompletableFuture<Void> join(Collection<Address> otherMembers) { |
| 121 | - server = buildServer(otherMembers); | 117 | + server = buildServer(); |
| 122 | - | 118 | + return server.join(otherMembers).whenComplete((r, e) -> { |
| 123 | - return server.start().whenComplete((r, e) -> { | ||
| 124 | if (e == null) { | 119 | if (e == null) { |
| 125 | log.info("Successfully joined partition {}", partition.getId()); | 120 | log.info("Successfully joined partition {}", partition.getId()); |
| 126 | } else { | 121 | } else { | ... | ... |
| ... | @@ -48,10 +48,6 @@ public final class AsyncConsistentMultimapCommands { | ... | @@ -48,10 +48,6 @@ public final class AsyncConsistentMultimapCommands { |
| 48 | @SuppressWarnings("serial") | 48 | @SuppressWarnings("serial") |
| 49 | public abstract static class MultimapCommand<V> implements Command<V>, | 49 | public abstract static class MultimapCommand<V> implements Command<V>, |
| 50 | CatalystSerializable { | 50 | CatalystSerializable { |
| 51 | - @Override | ||
| 52 | - public ConsistencyLevel consistency() { | ||
| 53 | - return ConsistencyLevel.SEQUENTIAL; | ||
| 54 | - } | ||
| 55 | 51 | ||
| 56 | @Override | 52 | @Override |
| 57 | public String toString() { | 53 | public String toString() { | ... | ... |
| ... | @@ -70,95 +70,90 @@ public class AsyncConsistentSetMultimap | ... | @@ -70,95 +70,90 @@ public class AsyncConsistentSetMultimap |
| 70 | 70 | ||
| 71 | @Override | 71 | @Override |
| 72 | public CompletableFuture<Integer> size() { | 72 | public CompletableFuture<Integer> size() { |
| 73 | - return submit(new Size()); | 73 | + return client.submit(new Size()); |
| 74 | } | 74 | } |
| 75 | 75 | ||
| 76 | @Override | 76 | @Override |
| 77 | public CompletableFuture<Boolean> isEmpty() { | 77 | public CompletableFuture<Boolean> isEmpty() { |
| 78 | - return submit(new IsEmpty()); | 78 | + return client.submit(new IsEmpty()); |
| 79 | } | 79 | } |
| 80 | 80 | ||
| 81 | @Override | 81 | @Override |
| 82 | public CompletableFuture<Boolean> containsKey(String key) { | 82 | public CompletableFuture<Boolean> containsKey(String key) { |
| 83 | - return submit(new ContainsKey(key)); | 83 | + return client.submit(new ContainsKey(key)); |
| 84 | } | 84 | } |
| 85 | 85 | ||
| 86 | @Override | 86 | @Override |
| 87 | public CompletableFuture<Boolean> containsValue(byte[] value) { | 87 | public CompletableFuture<Boolean> containsValue(byte[] value) { |
| 88 | - return submit(new ContainsValue(value)); | 88 | + return client.submit(new ContainsValue(value)); |
| 89 | } | 89 | } |
| 90 | 90 | ||
| 91 | @Override | 91 | @Override |
| 92 | public CompletableFuture<Boolean> containsEntry(String key, byte[] value) { | 92 | public CompletableFuture<Boolean> containsEntry(String key, byte[] value) { |
| 93 | - return submit(new ContainsEntry(key, value)); | 93 | + return client.submit(new ContainsEntry(key, value)); |
| 94 | } | 94 | } |
| 95 | 95 | ||
| 96 | @Override | 96 | @Override |
| 97 | public CompletableFuture<Boolean> put(String key, byte[] value) { | 97 | public CompletableFuture<Boolean> put(String key, byte[] value) { |
| 98 | - return submit(new Put(key, Lists.newArrayList(value), null)); | 98 | + return client.submit(new Put(key, Lists.newArrayList(value), null)); |
| 99 | } | 99 | } |
| 100 | 100 | ||
| 101 | @Override | 101 | @Override |
| 102 | public CompletableFuture<Boolean> remove(String key, byte[] value) { | 102 | public CompletableFuture<Boolean> remove(String key, byte[] value) { |
| 103 | - return submit(new MultiRemove(key, | 103 | + return client.submit(new MultiRemove(key, |
| 104 | - Lists.newArrayList(value), | 104 | + Lists.newArrayList(value), |
| 105 | - null)); | 105 | + null)); |
| 106 | } | 106 | } |
| 107 | 107 | ||
| 108 | @Override | 108 | @Override |
| 109 | - public CompletableFuture<Boolean> removeAll( | 109 | + public CompletableFuture<Boolean> removeAll(String key, Collection<? extends byte[]> values) { |
| 110 | - String key, Collection<? extends byte[]> values) { | 110 | + return client.submit(new MultiRemove(key, (Collection<byte[]>) values, null)); |
| 111 | - return submit(new MultiRemove(key, (Collection<byte[]>) values, null)); | ||
| 112 | } | 111 | } |
| 113 | 112 | ||
| 114 | @Override | 113 | @Override |
| 115 | - public CompletableFuture< | 114 | + public CompletableFuture<Versioned<Collection<? extends byte[]>>> removeAll(String key) { |
| 116 | - Versioned<Collection<? extends byte[]>>> removeAll(String key) { | 115 | + return client.submit(new RemoveAll(key, null)); |
| 117 | - return submit(new RemoveAll(key, null)); | ||
| 118 | } | 116 | } |
| 119 | 117 | ||
| 120 | @Override | 118 | @Override |
| 121 | public CompletableFuture<Boolean> putAll( | 119 | public CompletableFuture<Boolean> putAll( |
| 122 | String key, Collection<? extends byte[]> values) { | 120 | String key, Collection<? extends byte[]> values) { |
| 123 | - return submit(new Put(key, values, null)); | 121 | + return client.submit(new Put(key, values, null)); |
| 124 | } | 122 | } |
| 125 | 123 | ||
| 126 | @Override | 124 | @Override |
| 127 | - public CompletableFuture< | 125 | + public CompletableFuture<Versioned<Collection<? extends byte[]>>> replaceValues( |
| 128 | - Versioned<Collection<? extends byte[]>>> replaceValues( | ||
| 129 | String key, Collection<byte[]> values) { | 126 | String key, Collection<byte[]> values) { |
| 130 | - return submit(new Replace(key, values, null)); | 127 | + return client.submit(new Replace(key, values, null)); |
| 131 | } | 128 | } |
| 132 | 129 | ||
| 133 | @Override | 130 | @Override |
| 134 | public CompletableFuture<Void> clear() { | 131 | public CompletableFuture<Void> clear() { |
| 135 | - return submit(new Clear()); | 132 | + return client.submit(new Clear()); |
| 136 | } | 133 | } |
| 137 | 134 | ||
| 138 | @Override | 135 | @Override |
| 139 | - public CompletableFuture< | 136 | + public CompletableFuture<Versioned<Collection<? extends byte[]>>> get(String key) { |
| 140 | - Versioned<Collection<? extends byte[]>>> get(String key) { | 137 | + return client.submit(new Get(key)); |
| 141 | - return submit(new Get(key)); | ||
| 142 | } | 138 | } |
| 143 | 139 | ||
| 144 | @Override | 140 | @Override |
| 145 | public CompletableFuture<Set<String>> keySet() { | 141 | public CompletableFuture<Set<String>> keySet() { |
| 146 | - return submit(new KeySet()); | 142 | + return client.submit(new KeySet()); |
| 147 | } | 143 | } |
| 148 | 144 | ||
| 149 | @Override | 145 | @Override |
| 150 | public CompletableFuture<Multiset<String>> keys() { | 146 | public CompletableFuture<Multiset<String>> keys() { |
| 151 | - return submit(new Keys()); | 147 | + return client.submit(new Keys()); |
| 152 | } | 148 | } |
| 153 | 149 | ||
| 154 | - @Override | ||
| 155 | public CompletableFuture<Multiset<byte[]>> values() { | 150 | public CompletableFuture<Multiset<byte[]>> values() { |
| 156 | - return submit(new Values()); | 151 | + return client.submit(new Values()); |
| 157 | } | 152 | } |
| 158 | 153 | ||
| 159 | @Override | 154 | @Override |
| 160 | public CompletableFuture<Collection<Map.Entry<String, byte[]>>> entries() { | 155 | public CompletableFuture<Collection<Map.Entry<String, byte[]>>> entries() { |
| 161 | - return submit(new Entries()); | 156 | + return client.submit(new Entries()); |
| 162 | } | 157 | } |
| 163 | 158 | ||
| 164 | @Override | 159 | @Override | ... | ... |
| ... | @@ -97,48 +97,48 @@ public class AtomixConsistentMap extends AbstractResource<AtomixConsistentMap> | ... | @@ -97,48 +97,48 @@ public class AtomixConsistentMap extends AbstractResource<AtomixConsistentMap> |
| 97 | 97 | ||
| 98 | @Override | 98 | @Override |
| 99 | public CompletableFuture<Boolean> isEmpty() { | 99 | public CompletableFuture<Boolean> isEmpty() { |
| 100 | - return submit(new IsEmpty()); | 100 | + return client.submit(new IsEmpty()); |
| 101 | } | 101 | } |
| 102 | 102 | ||
| 103 | @Override | 103 | @Override |
| 104 | public CompletableFuture<Integer> size() { | 104 | public CompletableFuture<Integer> size() { |
| 105 | - return submit(new Size()); | 105 | + return client.submit(new Size()); |
| 106 | } | 106 | } |
| 107 | 107 | ||
| 108 | @Override | 108 | @Override |
| 109 | public CompletableFuture<Boolean> containsKey(String key) { | 109 | public CompletableFuture<Boolean> containsKey(String key) { |
| 110 | - return submit(new ContainsKey(key)); | 110 | + return client.submit(new ContainsKey(key)); |
| 111 | } | 111 | } |
| 112 | 112 | ||
| 113 | @Override | 113 | @Override |
| 114 | public CompletableFuture<Boolean> containsValue(byte[] value) { | 114 | public CompletableFuture<Boolean> containsValue(byte[] value) { |
| 115 | - return submit(new ContainsValue(value)); | 115 | + return client.submit(new ContainsValue(value)); |
| 116 | } | 116 | } |
| 117 | 117 | ||
| 118 | @Override | 118 | @Override |
| 119 | public CompletableFuture<Versioned<byte[]>> get(String key) { | 119 | public CompletableFuture<Versioned<byte[]>> get(String key) { |
| 120 | - return submit(new Get(key)); | 120 | + return client.submit(new Get(key)); |
| 121 | } | 121 | } |
| 122 | 122 | ||
| 123 | @Override | 123 | @Override |
| 124 | public CompletableFuture<Set<String>> keySet() { | 124 | public CompletableFuture<Set<String>> keySet() { |
| 125 | - return submit(new KeySet()); | 125 | + return client.submit(new KeySet()); |
| 126 | } | 126 | } |
| 127 | 127 | ||
| 128 | @Override | 128 | @Override |
| 129 | public CompletableFuture<Collection<Versioned<byte[]>>> values() { | 129 | public CompletableFuture<Collection<Versioned<byte[]>>> values() { |
| 130 | - return submit(new Values()); | 130 | + return client.submit(new Values()); |
| 131 | } | 131 | } |
| 132 | 132 | ||
| 133 | @Override | 133 | @Override |
| 134 | public CompletableFuture<Set<Entry<String, Versioned<byte[]>>>> entrySet() { | 134 | public CompletableFuture<Set<Entry<String, Versioned<byte[]>>>> entrySet() { |
| 135 | - return submit(new EntrySet()); | 135 | + return client.submit(new EntrySet()); |
| 136 | } | 136 | } |
| 137 | 137 | ||
| 138 | @Override | 138 | @Override |
| 139 | @SuppressWarnings("unchecked") | 139 | @SuppressWarnings("unchecked") |
| 140 | public CompletableFuture<Versioned<byte[]>> put(String key, byte[] value) { | 140 | public CompletableFuture<Versioned<byte[]>> put(String key, byte[] value) { |
| 141 | - return submit(new UpdateAndGet(key, value, Match.ANY, Match.ANY)) | 141 | + return client.submit(new UpdateAndGet(key, value, Match.ANY, Match.ANY)) |
| 142 | .whenComplete((r, e) -> throwIfLocked(r.status())) | 142 | .whenComplete((r, e) -> throwIfLocked(r.status())) |
| 143 | .thenApply(v -> v.oldValue()); | 143 | .thenApply(v -> v.oldValue()); |
| 144 | } | 144 | } |
| ... | @@ -146,7 +146,7 @@ public class AtomixConsistentMap extends AbstractResource<AtomixConsistentMap> | ... | @@ -146,7 +146,7 @@ public class AtomixConsistentMap extends AbstractResource<AtomixConsistentMap> |
| 146 | @Override | 146 | @Override |
| 147 | @SuppressWarnings("unchecked") | 147 | @SuppressWarnings("unchecked") |
| 148 | public CompletableFuture<Versioned<byte[]>> putAndGet(String key, byte[] value) { | 148 | public CompletableFuture<Versioned<byte[]>> putAndGet(String key, byte[] value) { |
| 149 | - return submit(new UpdateAndGet(key, value, Match.ANY, Match.ANY)) | 149 | + return client.submit(new UpdateAndGet(key, value, Match.ANY, Match.ANY)) |
| 150 | .whenComplete((r, e) -> throwIfLocked(r.status())) | 150 | .whenComplete((r, e) -> throwIfLocked(r.status())) |
| 151 | .thenApply(v -> v.newValue()); | 151 | .thenApply(v -> v.newValue()); |
| 152 | } | 152 | } |
| ... | @@ -154,14 +154,14 @@ public class AtomixConsistentMap extends AbstractResource<AtomixConsistentMap> | ... | @@ -154,14 +154,14 @@ public class AtomixConsistentMap extends AbstractResource<AtomixConsistentMap> |
| 154 | @Override | 154 | @Override |
| 155 | @SuppressWarnings("unchecked") | 155 | @SuppressWarnings("unchecked") |
| 156 | public CompletableFuture<Versioned<byte[]>> putIfAbsent(String key, byte[] value) { | 156 | public CompletableFuture<Versioned<byte[]>> putIfAbsent(String key, byte[] value) { |
| 157 | - return submit(new UpdateAndGet(key, value, Match.NULL, Match.ANY)) | 157 | + return client.submit(new UpdateAndGet(key, value, Match.NULL, Match.ANY)) |
| 158 | .whenComplete((r, e) -> throwIfLocked(r.status())) | 158 | .whenComplete((r, e) -> throwIfLocked(r.status())) |
| 159 | .thenApply(v -> v.oldValue()); | 159 | .thenApply(v -> v.oldValue()); |
| 160 | } | 160 | } |
| 161 | @Override | 161 | @Override |
| 162 | @SuppressWarnings("unchecked") | 162 | @SuppressWarnings("unchecked") |
| 163 | public CompletableFuture<Versioned<byte[]>> remove(String key) { | 163 | public CompletableFuture<Versioned<byte[]>> remove(String key) { |
| 164 | - return submit(new UpdateAndGet(key, null, Match.ANY, Match.ANY)) | 164 | + return client.submit(new UpdateAndGet(key, null, Match.ANY, Match.ANY)) |
| 165 | .whenComplete((r, e) -> throwIfLocked(r.status())) | 165 | .whenComplete((r, e) -> throwIfLocked(r.status())) |
| 166 | .thenApply(v -> v.oldValue()); | 166 | .thenApply(v -> v.oldValue()); |
| 167 | } | 167 | } |
| ... | @@ -169,7 +169,7 @@ public class AtomixConsistentMap extends AbstractResource<AtomixConsistentMap> | ... | @@ -169,7 +169,7 @@ public class AtomixConsistentMap extends AbstractResource<AtomixConsistentMap> |
| 169 | @Override | 169 | @Override |
| 170 | @SuppressWarnings("unchecked") | 170 | @SuppressWarnings("unchecked") |
| 171 | public CompletableFuture<Boolean> remove(String key, byte[] value) { | 171 | public CompletableFuture<Boolean> remove(String key, byte[] value) { |
| 172 | - return submit(new UpdateAndGet(key, null, Match.ifValue(value), Match.ANY)) | 172 | + return client.submit(new UpdateAndGet(key, null, Match.ifValue(value), Match.ANY)) |
| 173 | .whenComplete((r, e) -> throwIfLocked(r.status())) | 173 | .whenComplete((r, e) -> throwIfLocked(r.status())) |
| 174 | .thenApply(v -> v.updated()); | 174 | .thenApply(v -> v.updated()); |
| 175 | } | 175 | } |
| ... | @@ -177,7 +177,7 @@ public class AtomixConsistentMap extends AbstractResource<AtomixConsistentMap> | ... | @@ -177,7 +177,7 @@ public class AtomixConsistentMap extends AbstractResource<AtomixConsistentMap> |
| 177 | @Override | 177 | @Override |
| 178 | @SuppressWarnings("unchecked") | 178 | @SuppressWarnings("unchecked") |
| 179 | public CompletableFuture<Boolean> remove(String key, long version) { | 179 | public CompletableFuture<Boolean> remove(String key, long version) { |
| 180 | - return submit(new UpdateAndGet(key, null, Match.ANY, Match.ifValue(version))) | 180 | + return client.submit(new UpdateAndGet(key, null, Match.ANY, Match.ifValue(version))) |
| 181 | .whenComplete((r, e) -> throwIfLocked(r.status())) | 181 | .whenComplete((r, e) -> throwIfLocked(r.status())) |
| 182 | .thenApply(v -> v.updated()); | 182 | .thenApply(v -> v.updated()); |
| 183 | } | 183 | } |
| ... | @@ -185,7 +185,7 @@ public class AtomixConsistentMap extends AbstractResource<AtomixConsistentMap> | ... | @@ -185,7 +185,7 @@ public class AtomixConsistentMap extends AbstractResource<AtomixConsistentMap> |
| 185 | @Override | 185 | @Override |
| 186 | @SuppressWarnings("unchecked") | 186 | @SuppressWarnings("unchecked") |
| 187 | public CompletableFuture<Versioned<byte[]>> replace(String key, byte[] value) { | 187 | public CompletableFuture<Versioned<byte[]>> replace(String key, byte[] value) { |
| 188 | - return submit(new UpdateAndGet(key, value, Match.NOT_NULL, Match.ANY)) | 188 | + return client.submit(new UpdateAndGet(key, value, Match.NOT_NULL, Match.ANY)) |
| 189 | .whenComplete((r, e) -> throwIfLocked(r.status())) | 189 | .whenComplete((r, e) -> throwIfLocked(r.status())) |
| 190 | .thenApply(v -> v.oldValue()); | 190 | .thenApply(v -> v.oldValue()); |
| 191 | } | 191 | } |
| ... | @@ -193,10 +193,7 @@ public class AtomixConsistentMap extends AbstractResource<AtomixConsistentMap> | ... | @@ -193,10 +193,7 @@ public class AtomixConsistentMap extends AbstractResource<AtomixConsistentMap> |
| 193 | @Override | 193 | @Override |
| 194 | @SuppressWarnings("unchecked") | 194 | @SuppressWarnings("unchecked") |
| 195 | public CompletableFuture<Boolean> replace(String key, byte[] oldValue, byte[] newValue) { | 195 | public CompletableFuture<Boolean> replace(String key, byte[] oldValue, byte[] newValue) { |
| 196 | - return submit(new UpdateAndGet(key, | 196 | + return client.submit(new UpdateAndGet(key, newValue, Match.ifValue(oldValue), Match.ANY)) |
| 197 | - newValue, | ||
| 198 | - Match.ifValue(oldValue), | ||
| 199 | - Match.ANY)) | ||
| 200 | .whenComplete((r, e) -> throwIfLocked(r.status())) | 197 | .whenComplete((r, e) -> throwIfLocked(r.status())) |
| 201 | .thenApply(v -> v.updated()); | 198 | .thenApply(v -> v.updated()); |
| 202 | } | 199 | } |
| ... | @@ -204,17 +201,14 @@ public class AtomixConsistentMap extends AbstractResource<AtomixConsistentMap> | ... | @@ -204,17 +201,14 @@ public class AtomixConsistentMap extends AbstractResource<AtomixConsistentMap> |
| 204 | @Override | 201 | @Override |
| 205 | @SuppressWarnings("unchecked") | 202 | @SuppressWarnings("unchecked") |
| 206 | public CompletableFuture<Boolean> replace(String key, long oldVersion, byte[] newValue) { | 203 | public CompletableFuture<Boolean> replace(String key, long oldVersion, byte[] newValue) { |
| 207 | - return submit(new UpdateAndGet(key, | 204 | + return client.submit(new UpdateAndGet(key, newValue, Match.ANY, Match.ifValue(oldVersion))) |
| 208 | - newValue, | ||
| 209 | - Match.ANY, | ||
| 210 | - Match.ifValue(oldVersion))) | ||
| 211 | .whenComplete((r, e) -> throwIfLocked(r.status())) | 205 | .whenComplete((r, e) -> throwIfLocked(r.status())) |
| 212 | .thenApply(v -> v.updated()); | 206 | .thenApply(v -> v.updated()); |
| 213 | } | 207 | } |
| 214 | 208 | ||
| 215 | @Override | 209 | @Override |
| 216 | public CompletableFuture<Void> clear() { | 210 | public CompletableFuture<Void> clear() { |
| 217 | - return submit(new Clear()) | 211 | + return client.submit(new Clear()) |
| 218 | .whenComplete((r, e) -> throwIfLocked(r)) | 212 | .whenComplete((r, e) -> throwIfLocked(r)) |
| 219 | .thenApply(v -> null); | 213 | .thenApply(v -> null); |
| 220 | } | 214 | } |
| ... | @@ -245,7 +239,7 @@ public class AtomixConsistentMap extends AbstractResource<AtomixConsistentMap> | ... | @@ -245,7 +239,7 @@ public class AtomixConsistentMap extends AbstractResource<AtomixConsistentMap> |
| 245 | } | 239 | } |
| 246 | Match<byte[]> valueMatch = r1 == null ? Match.NULL : Match.ANY; | 240 | Match<byte[]> valueMatch = r1 == null ? Match.NULL : Match.ANY; |
| 247 | Match<Long> versionMatch = r1 == null ? Match.ANY : Match.ifValue(r1.version()); | 241 | Match<Long> versionMatch = r1 == null ? Match.ANY : Match.ifValue(r1.version()); |
| 248 | - return submit(new UpdateAndGet(key, | 242 | + return client.submit(new UpdateAndGet(key, |
| 249 | computedValue.get(), | 243 | computedValue.get(), |
| 250 | valueMatch, | 244 | valueMatch, |
| 251 | versionMatch)) | 245 | versionMatch)) |
| ... | @@ -258,7 +252,7 @@ public class AtomixConsistentMap extends AbstractResource<AtomixConsistentMap> | ... | @@ -258,7 +252,7 @@ public class AtomixConsistentMap extends AbstractResource<AtomixConsistentMap> |
| 258 | public synchronized CompletableFuture<Void> addListener(MapEventListener<String, byte[]> listener, | 252 | public synchronized CompletableFuture<Void> addListener(MapEventListener<String, byte[]> listener, |
| 259 | Executor executor) { | 253 | Executor executor) { |
| 260 | if (mapEventListeners.isEmpty()) { | 254 | if (mapEventListeners.isEmpty()) { |
| 261 | - return submit(new Listen()).thenRun(() -> mapEventListeners.putIfAbsent(listener, executor)); | 255 | + return client.submit(new Listen()).thenRun(() -> mapEventListeners.putIfAbsent(listener, executor)); |
| 262 | } else { | 256 | } else { |
| 263 | mapEventListeners.put(listener, executor); | 257 | mapEventListeners.put(listener, executor); |
| 264 | return CompletableFuture.completedFuture(null); | 258 | return CompletableFuture.completedFuture(null); |
| ... | @@ -268,7 +262,7 @@ public class AtomixConsistentMap extends AbstractResource<AtomixConsistentMap> | ... | @@ -268,7 +262,7 @@ public class AtomixConsistentMap extends AbstractResource<AtomixConsistentMap> |
| 268 | @Override | 262 | @Override |
| 269 | public synchronized CompletableFuture<Void> removeListener(MapEventListener<String, byte[]> listener) { | 263 | public synchronized CompletableFuture<Void> removeListener(MapEventListener<String, byte[]> listener) { |
| 270 | if (mapEventListeners.remove(listener) != null && mapEventListeners.isEmpty()) { | 264 | if (mapEventListeners.remove(listener) != null && mapEventListeners.isEmpty()) { |
| 271 | - return submit(new Unlisten()).thenApply(v -> null); | 265 | + return client.submit(new Unlisten()).thenApply(v -> null); |
| 272 | } | 266 | } |
| 273 | return CompletableFuture.completedFuture(null); | 267 | return CompletableFuture.completedFuture(null); |
| 274 | } | 268 | } |
| ... | @@ -281,23 +275,23 @@ public class AtomixConsistentMap extends AbstractResource<AtomixConsistentMap> | ... | @@ -281,23 +275,23 @@ public class AtomixConsistentMap extends AbstractResource<AtomixConsistentMap> |
| 281 | 275 | ||
| 282 | @Override | 276 | @Override |
| 283 | public CompletableFuture<Boolean> prepare(MapTransaction<String, byte[]> transaction) { | 277 | public CompletableFuture<Boolean> prepare(MapTransaction<String, byte[]> transaction) { |
| 284 | - return submit(new TransactionPrepare(transaction)).thenApply(v -> v == PrepareResult.OK); | 278 | + return client.submit(new TransactionPrepare(transaction)).thenApply(v -> v == PrepareResult.OK); |
| 285 | } | 279 | } |
| 286 | 280 | ||
| 287 | @Override | 281 | @Override |
| 288 | public CompletableFuture<Void> commit(TransactionId transactionId) { | 282 | public CompletableFuture<Void> commit(TransactionId transactionId) { |
| 289 | - return submit(new TransactionCommit(transactionId)).thenApply(v -> null); | 283 | + return client.submit(new TransactionCommit(transactionId)).thenApply(v -> null); |
| 290 | } | 284 | } |
| 291 | 285 | ||
| 292 | @Override | 286 | @Override |
| 293 | public CompletableFuture<Void> rollback(TransactionId transactionId) { | 287 | public CompletableFuture<Void> rollback(TransactionId transactionId) { |
| 294 | - return submit(new TransactionRollback(transactionId)) | 288 | + return client.submit(new TransactionRollback(transactionId)) |
| 295 | .thenApply(v -> null); | 289 | .thenApply(v -> null); |
| 296 | } | 290 | } |
| 297 | 291 | ||
| 298 | @Override | 292 | @Override |
| 299 | public CompletableFuture<Boolean> prepareAndCommit(MapTransaction<String, byte[]> transaction) { | 293 | public CompletableFuture<Boolean> prepareAndCommit(MapTransaction<String, byte[]> transaction) { |
| 300 | - return submit(new TransactionPrepareAndCommit(transaction)).thenApply(v -> v == PrepareResult.OK); | 294 | + return client.submit(new TransactionPrepareAndCommit(transaction)).thenApply(v -> v == PrepareResult.OK); |
| 301 | } | 295 | } |
| 302 | 296 | ||
| 303 | @Override | 297 | @Override | ... | ... |
| ... | @@ -51,11 +51,6 @@ public final class AtomixConsistentMapCommands { | ... | @@ -51,11 +51,6 @@ public final class AtomixConsistentMapCommands { |
| 51 | public abstract static class MapCommand<V> implements Command<V>, CatalystSerializable { | 51 | public abstract static class MapCommand<V> implements Command<V>, CatalystSerializable { |
| 52 | 52 | ||
| 53 | @Override | 53 | @Override |
| 54 | - public ConsistencyLevel consistency() { | ||
| 55 | - return ConsistencyLevel.SEQUENTIAL; | ||
| 56 | - } | ||
| 57 | - | ||
| 58 | - @Override | ||
| 59 | public String toString() { | 54 | public String toString() { |
| 60 | return MoreObjects.toStringHelper(getClass()) | 55 | return MoreObjects.toStringHelper(getClass()) |
| 61 | .toString(); | 56 | .toString(); | ... | ... |
| ... | @@ -42,6 +42,9 @@ import org.onosproject.store.primitives.resources.impl.AtomixLeaderElectorComman | ... | @@ -42,6 +42,9 @@ import org.onosproject.store.primitives.resources.impl.AtomixLeaderElectorComman |
| 42 | import org.onosproject.store.service.AsyncLeaderElector; | 42 | import org.onosproject.store.service.AsyncLeaderElector; |
| 43 | 43 | ||
| 44 | import com.google.common.collect.ImmutableSet; | 44 | import com.google.common.collect.ImmutableSet; |
| 45 | +import com.google.common.cache.CacheBuilder; | ||
| 46 | +import com.google.common.cache.CacheLoader; | ||
| 47 | +import com.google.common.cache.LoadingCache; | ||
| 45 | import com.google.common.collect.Sets; | 48 | import com.google.common.collect.Sets; |
| 46 | 49 | ||
| 47 | /** | 50 | /** |
| ... | @@ -54,11 +57,34 @@ public class AtomixLeaderElector extends AbstractResource<AtomixLeaderElector> | ... | @@ -54,11 +57,34 @@ public class AtomixLeaderElector extends AbstractResource<AtomixLeaderElector> |
| 54 | Sets.newCopyOnWriteArraySet(); | 57 | Sets.newCopyOnWriteArraySet(); |
| 55 | private final Set<Consumer<Change<Leadership>>> leadershipChangeListeners = | 58 | private final Set<Consumer<Change<Leadership>>> leadershipChangeListeners = |
| 56 | Sets.newCopyOnWriteArraySet(); | 59 | Sets.newCopyOnWriteArraySet(); |
| 60 | + private final Consumer<Change<Leadership>> cacheUpdater; | ||
| 61 | + private final Consumer<Status> statusListener; | ||
| 57 | 62 | ||
| 58 | public static final String CHANGE_SUBJECT = "leadershipChangeEvents"; | 63 | public static final String CHANGE_SUBJECT = "leadershipChangeEvents"; |
| 64 | + private final LoadingCache<String, CompletableFuture<Leadership>> cache; | ||
| 59 | 65 | ||
| 60 | public AtomixLeaderElector(CopycatClient client, Properties properties) { | 66 | public AtomixLeaderElector(CopycatClient client, Properties properties) { |
| 61 | super(client, properties); | 67 | super(client, properties); |
| 68 | + cache = CacheBuilder.newBuilder() | ||
| 69 | + .maximumSize(1000) | ||
| 70 | + .build(CacheLoader.from(topic -> this.client.submit(new GetLeadership(topic)))); | ||
| 71 | + | ||
| 72 | + cacheUpdater = change -> { | ||
| 73 | + Leadership leadership = change.newValue(); | ||
| 74 | + cache.put(leadership.topic(), CompletableFuture.completedFuture(leadership)); | ||
| 75 | + }; | ||
| 76 | + statusListener = status -> { | ||
| 77 | + if (status == Status.SUSPENDED || status == Status.INACTIVE) { | ||
| 78 | + cache.invalidateAll(); | ||
| 79 | + } | ||
| 80 | + }; | ||
| 81 | + addStatusChangeListener(statusListener); | ||
| 82 | + } | ||
| 83 | + | ||
| 84 | + @Override | ||
| 85 | + public CompletableFuture<Void> destroy() { | ||
| 86 | + removeStatusChangeListener(statusListener); | ||
| 87 | + return removeChangeListener(cacheUpdater); | ||
| 62 | } | 88 | } |
| 63 | 89 | ||
| 64 | @Override | 90 | @Override |
| ... | @@ -74,53 +100,57 @@ public class AtomixLeaderElector extends AbstractResource<AtomixLeaderElector> | ... | @@ -74,53 +100,57 @@ public class AtomixLeaderElector extends AbstractResource<AtomixLeaderElector> |
| 74 | }); | 100 | }); |
| 75 | } | 101 | } |
| 76 | 102 | ||
| 103 | + public CompletableFuture<AtomixLeaderElector> setupCache() { | ||
| 104 | + return addChangeListener(cacheUpdater).thenApply(v -> this); | ||
| 105 | + } | ||
| 106 | + | ||
| 77 | private void handleEvent(List<Change<Leadership>> changes) { | 107 | private void handleEvent(List<Change<Leadership>> changes) { |
| 78 | changes.forEach(change -> leadershipChangeListeners.forEach(l -> l.accept(change))); | 108 | changes.forEach(change -> leadershipChangeListeners.forEach(l -> l.accept(change))); |
| 79 | } | 109 | } |
| 80 | 110 | ||
| 81 | @Override | 111 | @Override |
| 82 | public CompletableFuture<Leadership> run(String topic, NodeId nodeId) { | 112 | public CompletableFuture<Leadership> run(String topic, NodeId nodeId) { |
| 83 | - return submit(new Run(topic, nodeId)); | 113 | + return client.submit(new Run(topic, nodeId)).whenComplete((r, e) -> cache.invalidate(topic)); |
| 84 | } | 114 | } |
| 85 | 115 | ||
| 86 | @Override | 116 | @Override |
| 87 | public CompletableFuture<Void> withdraw(String topic) { | 117 | public CompletableFuture<Void> withdraw(String topic) { |
| 88 | - return submit(new Withdraw(topic)); | 118 | + return client.submit(new Withdraw(topic)).whenComplete((r, e) -> cache.invalidate(topic)); |
| 89 | } | 119 | } |
| 90 | 120 | ||
| 91 | @Override | 121 | @Override |
| 92 | public CompletableFuture<Boolean> anoint(String topic, NodeId nodeId) { | 122 | public CompletableFuture<Boolean> anoint(String topic, NodeId nodeId) { |
| 93 | - return submit(new Anoint(topic, nodeId)); | 123 | + return client.submit(new Anoint(topic, nodeId)).whenComplete((r, e) -> cache.invalidate(topic)); |
| 94 | } | 124 | } |
| 95 | 125 | ||
| 96 | @Override | 126 | @Override |
| 97 | public CompletableFuture<Boolean> promote(String topic, NodeId nodeId) { | 127 | public CompletableFuture<Boolean> promote(String topic, NodeId nodeId) { |
| 98 | - return submit(new Promote(topic, nodeId)); | 128 | + return client.submit(new Promote(topic, nodeId)).whenComplete((r, e) -> cache.invalidate(topic)); |
| 99 | } | 129 | } |
| 100 | 130 | ||
| 101 | @Override | 131 | @Override |
| 102 | public CompletableFuture<Void> evict(NodeId nodeId) { | 132 | public CompletableFuture<Void> evict(NodeId nodeId) { |
| 103 | - return submit(new AtomixLeaderElectorCommands.Evict(nodeId)); | 133 | + return client.submit(new AtomixLeaderElectorCommands.Evict(nodeId)); |
| 104 | } | 134 | } |
| 105 | 135 | ||
| 106 | @Override | 136 | @Override |
| 107 | public CompletableFuture<Leadership> getLeadership(String topic) { | 137 | public CompletableFuture<Leadership> getLeadership(String topic) { |
| 108 | - return submit(new GetLeadership(topic)); | 138 | + return cache.getUnchecked(topic); |
| 109 | } | 139 | } |
| 110 | 140 | ||
| 111 | @Override | 141 | @Override |
| 112 | public CompletableFuture<Map<String, Leadership>> getLeaderships() { | 142 | public CompletableFuture<Map<String, Leadership>> getLeaderships() { |
| 113 | - return submit(new GetAllLeaderships()); | 143 | + return client.submit(new GetAllLeaderships()); |
| 114 | } | 144 | } |
| 115 | 145 | ||
| 116 | public CompletableFuture<Set<String>> getElectedTopics(NodeId nodeId) { | 146 | public CompletableFuture<Set<String>> getElectedTopics(NodeId nodeId) { |
| 117 | - return submit(new GetElectedTopics(nodeId)); | 147 | + return client.submit(new GetElectedTopics(nodeId)); |
| 118 | } | 148 | } |
| 119 | 149 | ||
| 120 | @Override | 150 | @Override |
| 121 | public synchronized CompletableFuture<Void> addChangeListener(Consumer<Change<Leadership>> consumer) { | 151 | public synchronized CompletableFuture<Void> addChangeListener(Consumer<Change<Leadership>> consumer) { |
| 122 | if (leadershipChangeListeners.isEmpty()) { | 152 | if (leadershipChangeListeners.isEmpty()) { |
| 123 | - return submit(new Listen()).thenRun(() -> leadershipChangeListeners.add(consumer)); | 153 | + return client.submit(new Listen()).thenRun(() -> leadershipChangeListeners.add(consumer)); |
| 124 | } else { | 154 | } else { |
| 125 | leadershipChangeListeners.add(consumer); | 155 | leadershipChangeListeners.add(consumer); |
| 126 | return CompletableFuture.completedFuture(null); | 156 | return CompletableFuture.completedFuture(null); |
| ... | @@ -130,7 +160,7 @@ public class AtomixLeaderElector extends AbstractResource<AtomixLeaderElector> | ... | @@ -130,7 +160,7 @@ public class AtomixLeaderElector extends AbstractResource<AtomixLeaderElector> |
| 130 | @Override | 160 | @Override |
| 131 | public synchronized CompletableFuture<Void> removeChangeListener(Consumer<Change<Leadership>> consumer) { | 161 | public synchronized CompletableFuture<Void> removeChangeListener(Consumer<Change<Leadership>> consumer) { |
| 132 | if (leadershipChangeListeners.remove(consumer) && leadershipChangeListeners.isEmpty()) { | 162 | if (leadershipChangeListeners.remove(consumer) && leadershipChangeListeners.isEmpty()) { |
| 133 | - return submit(new Unlisten()).thenApply(v -> null); | 163 | + return client.submit(new Unlisten()).thenApply(v -> null); |
| 134 | } | 164 | } |
| 135 | return CompletableFuture.completedFuture(null); | 165 | return CompletableFuture.completedFuture(null); |
| 136 | } | 166 | } | ... | ... |
| ... | @@ -50,11 +50,6 @@ public final class AtomixLeaderElectorCommands { | ... | @@ -50,11 +50,6 @@ public final class AtomixLeaderElectorCommands { |
| 50 | public abstract static class ElectionQuery<V> implements Query<V>, CatalystSerializable { | 50 | public abstract static class ElectionQuery<V> implements Query<V>, CatalystSerializable { |
| 51 | 51 | ||
| 52 | @Override | 52 | @Override |
| 53 | - public ConsistencyLevel consistency() { | ||
| 54 | - return ConsistencyLevel.BOUNDED_LINEARIZABLE; | ||
| 55 | - } | ||
| 56 | - | ||
| 57 | - @Override | ||
| 58 | public void writeObject(BufferOutput<?> buffer, Serializer serializer) { | 53 | public void writeObject(BufferOutput<?> buffer, Serializer serializer) { |
| 59 | } | 54 | } |
| 60 | 55 | ||
| ... | @@ -103,11 +98,6 @@ public final class AtomixLeaderElectorCommands { | ... | @@ -103,11 +98,6 @@ public final class AtomixLeaderElectorCommands { |
| 103 | public abstract static class ElectionCommand<V> implements Command<V>, CatalystSerializable { | 98 | public abstract static class ElectionCommand<V> implements Command<V>, CatalystSerializable { |
| 104 | 99 | ||
| 105 | @Override | 100 | @Override |
| 106 | - public ConsistencyLevel consistency() { | ||
| 107 | - return ConsistencyLevel.LINEARIZABLE; | ||
| 108 | - } | ||
| 109 | - | ||
| 110 | - @Override | ||
| 111 | public void writeObject(BufferOutput<?> buffer, Serializer serializer) { | 101 | public void writeObject(BufferOutput<?> buffer, Serializer serializer) { |
| 112 | } | 102 | } |
| 113 | 103 | ... | ... |
| ... | @@ -302,8 +302,10 @@ public class AtomixLeaderElectorState extends ResourceStateMachine | ... | @@ -302,8 +302,10 @@ public class AtomixLeaderElectorState extends ResourceStateMachine |
| 302 | * @return topic to leader mapping | 302 | * @return topic to leader mapping |
| 303 | */ | 303 | */ |
| 304 | public Map<String, Leadership> allLeaderships(Commit<? extends GetAllLeaderships> commit) { | 304 | public Map<String, Leadership> allLeaderships(Commit<? extends GetAllLeaderships> commit) { |
| 305 | + Map<String, Leadership> result = new HashMap<>(); | ||
| 305 | try { | 306 | try { |
| 306 | - return Maps.transformEntries(elections, (k, v) -> leadership(k)); | 307 | + result.putAll(Maps.transformEntries(elections, (k, v) -> leadership(k))); |
| 308 | + return result; | ||
| 307 | } finally { | 309 | } finally { |
| 308 | commit.close(); | 310 | commit.close(); |
| 309 | } | 311 | } |
| ... | @@ -539,7 +541,7 @@ public class AtomixLeaderElectorState extends ResourceStateMachine | ... | @@ -539,7 +541,7 @@ public class AtomixLeaderElectorState extends ResourceStateMachine |
| 539 | byte[] encodedElections = serializer.encode(elections); | 541 | byte[] encodedElections = serializer.encode(elections); |
| 540 | writer.writeInt(encodedElections.length); | 542 | writer.writeInt(encodedElections.length); |
| 541 | writer.write(encodedElections); | 543 | writer.write(encodedElections); |
| 542 | - log.info("Took state machine snapshot"); | 544 | + log.debug("Took state machine snapshot"); |
| 543 | } | 545 | } |
| 544 | 546 | ||
| 545 | @Override | 547 | @Override |
| ... | @@ -552,7 +554,7 @@ public class AtomixLeaderElectorState extends ResourceStateMachine | ... | @@ -552,7 +554,7 @@ public class AtomixLeaderElectorState extends ResourceStateMachine |
| 552 | byte[] encodedElections = new byte[encodedElectionsSize]; | 554 | byte[] encodedElections = new byte[encodedElectionsSize]; |
| 553 | reader.read(encodedElections); | 555 | reader.read(encodedElections); |
| 554 | elections = serializer.decode(encodedElections); | 556 | elections = serializer.decode(encodedElections); |
| 555 | - log.info("Reinstated state machine from snapshot"); | 557 | + log.debug("Reinstated state machine from snapshot"); |
| 556 | } | 558 | } |
| 557 | 559 | ||
| 558 | private AtomicLong termCounter(String topic) { | 560 | private AtomicLong termCounter(String topic) { | ... | ... |
| ... | @@ -20,13 +20,15 @@ import com.google.common.collect.Lists; | ... | @@ -20,13 +20,15 @@ import com.google.common.collect.Lists; |
| 20 | import com.google.common.collect.Multiset; | 20 | import com.google.common.collect.Multiset; |
| 21 | import com.google.common.collect.TreeMultiset; | 21 | import com.google.common.collect.TreeMultiset; |
| 22 | import com.google.common.io.Files; | 22 | import com.google.common.io.Files; |
| 23 | + | ||
| 23 | import io.atomix.catalyst.transport.Address; | 24 | import io.atomix.catalyst.transport.Address; |
| 24 | -import io.atomix.catalyst.transport.LocalTransport; | 25 | +import io.atomix.catalyst.transport.local.LocalTransport; |
| 25 | import io.atomix.copycat.server.CopycatServer; | 26 | import io.atomix.copycat.server.CopycatServer; |
| 26 | import io.atomix.copycat.server.storage.Storage; | 27 | import io.atomix.copycat.server.storage.Storage; |
| 27 | import io.atomix.copycat.server.storage.StorageLevel; | 28 | import io.atomix.copycat.server.storage.StorageLevel; |
| 28 | -import io.atomix.manager.state.ResourceManagerState; | 29 | +import io.atomix.manager.internal.ResourceManagerState; |
| 29 | import io.atomix.resource.ResourceType; | 30 | import io.atomix.resource.ResourceType; |
| 31 | + | ||
| 30 | import org.apache.commons.collections.keyvalue.DefaultMapEntry; | 32 | import org.apache.commons.collections.keyvalue.DefaultMapEntry; |
| 31 | import org.junit.Ignore; | 33 | import org.junit.Ignore; |
| 32 | import org.junit.Test; | 34 | import org.junit.Test; |
| ... | @@ -427,7 +429,7 @@ public class AsyncConsistentSetMultimapTest extends AtomixTestBase { | ... | @@ -427,7 +429,7 @@ public class AsyncConsistentSetMultimapTest extends AtomixTestBase { |
| 427 | 429 | ||
| 428 | @Override | 430 | @Override |
| 429 | protected CopycatServer createCopycatServer(Address address) { | 431 | protected CopycatServer createCopycatServer(Address address) { |
| 430 | - CopycatServer server = CopycatServer.builder(address, members) | 432 | + CopycatServer server = CopycatServer.builder(address) |
| 431 | .withTransport(new LocalTransport(registry)) | 433 | .withTransport(new LocalTransport(registry)) |
| 432 | .withStorage(Storage.builder() | 434 | .withStorage(Storage.builder() |
| 433 | .withStorageLevel(StorageLevel.MEMORY) | 435 | .withStorageLevel(StorageLevel.MEMORY) |
| ... | @@ -440,7 +442,8 @@ public class AsyncConsistentSetMultimapTest extends AtomixTestBase { | ... | @@ -440,7 +442,8 @@ public class AsyncConsistentSetMultimapTest extends AtomixTestBase { |
| 440 | .withSessionTimeout(Duration.ofMillis(100)) | 442 | .withSessionTimeout(Duration.ofMillis(100)) |
| 441 | .build(); | 443 | .build(); |
| 442 | copycatServers.add(server); | 444 | copycatServers.add(server); |
| 443 | - return server; } | 445 | + return server; |
| 446 | + } | ||
| 444 | 447 | ||
| 445 | /** | 448 | /** |
| 446 | * Returns two arrays contain the same set of elements, | 449 | * Returns two arrays contain the same set of elements, | ... | ... |
| ... | @@ -16,7 +16,6 @@ | ... | @@ -16,7 +16,6 @@ |
| 16 | package org.onosproject.store.primitives.resources.impl; | 16 | package org.onosproject.store.primitives.resources.impl; |
| 17 | 17 | ||
| 18 | import io.atomix.resource.ResourceType; | 18 | import io.atomix.resource.ResourceType; |
| 19 | - | ||
| 20 | import static org.hamcrest.Matchers.*; | 19 | import static org.hamcrest.Matchers.*; |
| 21 | import static org.junit.Assert.*; | 20 | import static org.junit.Assert.*; |
| 22 | 21 | ||
| ... | @@ -28,7 +27,6 @@ import java.util.concurrent.BlockingQueue; | ... | @@ -28,7 +27,6 @@ import java.util.concurrent.BlockingQueue; |
| 28 | import java.util.concurrent.CompletionException; | 27 | import java.util.concurrent.CompletionException; |
| 29 | import java.util.stream.Collectors; | 28 | import java.util.stream.Collectors; |
| 30 | 29 | ||
| 31 | -import org.junit.Ignore; | ||
| 32 | import org.junit.Test; | 30 | import org.junit.Test; |
| 33 | import org.onlab.util.Tools; | 31 | import org.onlab.util.Tools; |
| 34 | import org.onosproject.store.primitives.MapUpdate; | 32 | import org.onosproject.store.primitives.MapUpdate; |
| ... | @@ -44,7 +42,6 @@ import com.google.common.collect.Sets; | ... | @@ -44,7 +42,6 @@ import com.google.common.collect.Sets; |
| 44 | /** | 42 | /** |
| 45 | * Unit tests for {@link AtomixConsistentMap}. | 43 | * Unit tests for {@link AtomixConsistentMap}. |
| 46 | */ | 44 | */ |
| 47 | -@Ignore | ||
| 48 | public class AtomixConsistentMapTest extends AtomixTestBase { | 45 | public class AtomixConsistentMapTest extends AtomixTestBase { |
| 49 | 46 | ||
| 50 | @Override | 47 | @Override |
| ... | @@ -57,10 +54,6 @@ public class AtomixConsistentMapTest extends AtomixTestBase { | ... | @@ -57,10 +54,6 @@ public class AtomixConsistentMapTest extends AtomixTestBase { |
| 57 | */ | 54 | */ |
| 58 | @Test | 55 | @Test |
| 59 | public void testBasicMapOperations() throws Throwable { | 56 | public void testBasicMapOperations() throws Throwable { |
| 60 | - basicMapOperationTests(1); | ||
| 61 | - clearTests(); | ||
| 62 | - basicMapOperationTests(2); | ||
| 63 | - clearTests(); | ||
| 64 | basicMapOperationTests(3); | 57 | basicMapOperationTests(3); |
| 65 | } | 58 | } |
| 66 | 59 | ||
| ... | @@ -69,10 +62,6 @@ public class AtomixConsistentMapTest extends AtomixTestBase { | ... | @@ -69,10 +62,6 @@ public class AtomixConsistentMapTest extends AtomixTestBase { |
| 69 | */ | 62 | */ |
| 70 | @Test | 63 | @Test |
| 71 | public void testMapComputeOperations() throws Throwable { | 64 | public void testMapComputeOperations() throws Throwable { |
| 72 | - mapComputeOperationTests(1); | ||
| 73 | - clearTests(); | ||
| 74 | - mapComputeOperationTests(2); | ||
| 75 | - clearTests(); | ||
| 76 | mapComputeOperationTests(3); | 65 | mapComputeOperationTests(3); |
| 77 | } | 66 | } |
| 78 | 67 | ||
| ... | @@ -81,10 +70,6 @@ public class AtomixConsistentMapTest extends AtomixTestBase { | ... | @@ -81,10 +70,6 @@ public class AtomixConsistentMapTest extends AtomixTestBase { |
| 81 | */ | 70 | */ |
| 82 | @Test | 71 | @Test |
| 83 | public void testMapListeners() throws Throwable { | 72 | public void testMapListeners() throws Throwable { |
| 84 | - mapListenerTests(1); | ||
| 85 | - clearTests(); | ||
| 86 | - mapListenerTests(2); | ||
| 87 | - clearTests(); | ||
| 88 | mapListenerTests(3); | 73 | mapListenerTests(3); |
| 89 | } | 74 | } |
| 90 | 75 | ||
| ... | @@ -93,10 +78,6 @@ public class AtomixConsistentMapTest extends AtomixTestBase { | ... | @@ -93,10 +78,6 @@ public class AtomixConsistentMapTest extends AtomixTestBase { |
| 93 | */ | 78 | */ |
| 94 | @Test | 79 | @Test |
| 95 | public void testTransactionCommit() throws Throwable { | 80 | public void testTransactionCommit() throws Throwable { |
| 96 | - transactionCommitTests(1); | ||
| 97 | - clearTests(); | ||
| 98 | - transactionCommitTests(2); | ||
| 99 | - clearTests(); | ||
| 100 | transactionCommitTests(3); | 81 | transactionCommitTests(3); |
| 101 | } | 82 | } |
| 102 | 83 | ||
| ... | @@ -105,10 +86,6 @@ public class AtomixConsistentMapTest extends AtomixTestBase { | ... | @@ -105,10 +86,6 @@ public class AtomixConsistentMapTest extends AtomixTestBase { |
| 105 | */ | 86 | */ |
| 106 | @Test | 87 | @Test |
| 107 | public void testTransactionRollback() throws Throwable { | 88 | public void testTransactionRollback() throws Throwable { |
| 108 | - transactionRollbackTests(1); | ||
| 109 | - clearTests(); | ||
| 110 | - transactionRollbackTests(2); | ||
| 111 | - clearTests(); | ||
| 112 | transactionRollbackTests(3); | 89 | transactionRollbackTests(3); |
| 113 | } | 90 | } |
| 114 | 91 | ... | ... |
| ... | @@ -20,7 +20,6 @@ import java.util.Queue; | ... | @@ -20,7 +20,6 @@ import java.util.Queue; |
| 20 | import java.util.concurrent.CompletableFuture; | 20 | import java.util.concurrent.CompletableFuture; |
| 21 | import java.util.function.Consumer; | 21 | import java.util.function.Consumer; |
| 22 | 22 | ||
| 23 | -import org.junit.Ignore; | ||
| 24 | import org.junit.Test; | 23 | import org.junit.Test; |
| 25 | 24 | ||
| 26 | import static org.junit.Assert.*; | 25 | import static org.junit.Assert.*; |
| ... | @@ -30,12 +29,12 @@ import org.onosproject.cluster.NodeId; | ... | @@ -30,12 +29,12 @@ import org.onosproject.cluster.NodeId; |
| 30 | import org.onosproject.event.Change; | 29 | import org.onosproject.event.Change; |
| 31 | 30 | ||
| 32 | import io.atomix.Atomix; | 31 | import io.atomix.Atomix; |
| 32 | +import io.atomix.AtomixClient; | ||
| 33 | import io.atomix.resource.ResourceType; | 33 | import io.atomix.resource.ResourceType; |
| 34 | 34 | ||
| 35 | /** | 35 | /** |
| 36 | * Unit tests for {@link AtomixLeaderElector}. | 36 | * Unit tests for {@link AtomixLeaderElector}. |
| 37 | */ | 37 | */ |
| 38 | -@Ignore | ||
| 39 | public class AtomixLeaderElectorTest extends AtomixTestBase { | 38 | public class AtomixLeaderElectorTest extends AtomixTestBase { |
| 40 | 39 | ||
| 41 | NodeId node1 = new NodeId("node1"); | 40 | NodeId node1 = new NodeId("node1"); |
| ... | @@ -49,12 +48,7 @@ public class AtomixLeaderElectorTest extends AtomixTestBase { | ... | @@ -49,12 +48,7 @@ public class AtomixLeaderElectorTest extends AtomixTestBase { |
| 49 | 48 | ||
| 50 | @Test | 49 | @Test |
| 51 | public void testRun() throws Throwable { | 50 | public void testRun() throws Throwable { |
| 52 | - leaderElectorRunTests(1); | ||
| 53 | - clearTests(); | ||
| 54 | - leaderElectorRunTests(2); | ||
| 55 | - clearTests(); | ||
| 56 | leaderElectorRunTests(3); | 51 | leaderElectorRunTests(3); |
| 57 | - clearTests(); | ||
| 58 | } | 52 | } |
| 59 | 53 | ||
| 60 | private void leaderElectorRunTests(int numServers) throws Throwable { | 54 | private void leaderElectorRunTests(int numServers) throws Throwable { |
| ... | @@ -80,12 +74,7 @@ public class AtomixLeaderElectorTest extends AtomixTestBase { | ... | @@ -80,12 +74,7 @@ public class AtomixLeaderElectorTest extends AtomixTestBase { |
| 80 | 74 | ||
| 81 | @Test | 75 | @Test |
| 82 | public void testWithdraw() throws Throwable { | 76 | public void testWithdraw() throws Throwable { |
| 83 | - leaderElectorWithdrawTests(1); | ||
| 84 | - clearTests(); | ||
| 85 | - leaderElectorWithdrawTests(2); | ||
| 86 | - clearTests(); | ||
| 87 | leaderElectorWithdrawTests(3); | 77 | leaderElectorWithdrawTests(3); |
| 88 | - clearTests(); | ||
| 89 | } | 78 | } |
| 90 | 79 | ||
| 91 | private void leaderElectorWithdrawTests(int numServers) throws Throwable { | 80 | private void leaderElectorWithdrawTests(int numServers) throws Throwable { |
| ... | @@ -122,12 +111,7 @@ public class AtomixLeaderElectorTest extends AtomixTestBase { | ... | @@ -122,12 +111,7 @@ public class AtomixLeaderElectorTest extends AtomixTestBase { |
| 122 | 111 | ||
| 123 | @Test | 112 | @Test |
| 124 | public void testAnoint() throws Throwable { | 113 | public void testAnoint() throws Throwable { |
| 125 | - leaderElectorAnointTests(1); | ||
| 126 | - clearTests(); | ||
| 127 | - leaderElectorAnointTests(2); | ||
| 128 | - clearTests(); | ||
| 129 | leaderElectorAnointTests(3); | 114 | leaderElectorAnointTests(3); |
| 130 | - clearTests(); | ||
| 131 | } | 115 | } |
| 132 | 116 | ||
| 133 | private void leaderElectorAnointTests(int numServers) throws Throwable { | 117 | private void leaderElectorAnointTests(int numServers) throws Throwable { |
| ... | @@ -158,9 +142,6 @@ public class AtomixLeaderElectorTest extends AtomixTestBase { | ... | @@ -158,9 +142,6 @@ public class AtomixLeaderElectorTest extends AtomixTestBase { |
| 158 | elector3.anoint("foo", node2).thenAccept(result -> { | 142 | elector3.anoint("foo", node2).thenAccept(result -> { |
| 159 | assertTrue(result); | 143 | assertTrue(result); |
| 160 | }).join(); | 144 | }).join(); |
| 161 | - assertTrue(listener1.hasEvent()); | ||
| 162 | - assertTrue(listener2.hasEvent()); | ||
| 163 | - assertTrue(listener3.hasEvent()); | ||
| 164 | 145 | ||
| 165 | listener1.nextEvent().thenAccept(result -> { | 146 | listener1.nextEvent().thenAccept(result -> { |
| 166 | assertEquals(node2, result.newValue().leaderNodeId()); | 147 | assertEquals(node2, result.newValue().leaderNodeId()); |
| ... | @@ -184,21 +165,16 @@ public class AtomixLeaderElectorTest extends AtomixTestBase { | ... | @@ -184,21 +165,16 @@ public class AtomixLeaderElectorTest extends AtomixTestBase { |
| 184 | 165 | ||
| 185 | @Test | 166 | @Test |
| 186 | public void testPromote() throws Throwable { | 167 | public void testPromote() throws Throwable { |
| 187 | - leaderElectorPromoteTests(1); | ||
| 188 | - clearTests(); | ||
| 189 | - leaderElectorPromoteTests(2); | ||
| 190 | - clearTests(); | ||
| 191 | leaderElectorPromoteTests(3); | 168 | leaderElectorPromoteTests(3); |
| 192 | - clearTests(); | ||
| 193 | } | 169 | } |
| 194 | 170 | ||
| 195 | private void leaderElectorPromoteTests(int numServers) throws Throwable { | 171 | private void leaderElectorPromoteTests(int numServers) throws Throwable { |
| 196 | createCopycatServers(numServers); | 172 | createCopycatServers(numServers); |
| 197 | - Atomix client1 = createAtomixClient(); | 173 | + AtomixClient client1 = createAtomixClient(); |
| 198 | AtomixLeaderElector elector1 = client1.getResource("test-elector", AtomixLeaderElector.class).join(); | 174 | AtomixLeaderElector elector1 = client1.getResource("test-elector", AtomixLeaderElector.class).join(); |
| 199 | - Atomix client2 = createAtomixClient(); | 175 | + AtomixClient client2 = createAtomixClient(); |
| 200 | AtomixLeaderElector elector2 = client2.getResource("test-elector", AtomixLeaderElector.class).join(); | 176 | AtomixLeaderElector elector2 = client2.getResource("test-elector", AtomixLeaderElector.class).join(); |
| 201 | - Atomix client3 = createAtomixClient(); | 177 | + AtomixClient client3 = createAtomixClient(); |
| 202 | AtomixLeaderElector elector3 = client3.getResource("test-elector", AtomixLeaderElector.class).join(); | 178 | AtomixLeaderElector elector3 = client3.getResource("test-elector", AtomixLeaderElector.class).join(); |
| 203 | elector1.run("foo", node1).join(); | 179 | elector1.run("foo", node1).join(); |
| 204 | elector2.run("foo", node2).join(); | 180 | elector2.run("foo", node2).join(); |
| ... | @@ -220,9 +196,15 @@ public class AtomixLeaderElectorTest extends AtomixTestBase { | ... | @@ -220,9 +196,15 @@ public class AtomixLeaderElectorTest extends AtomixTestBase { |
| 220 | 196 | ||
| 221 | elector3.run("foo", node3).join(); | 197 | elector3.run("foo", node3).join(); |
| 222 | 198 | ||
| 223 | - listener1.clearEvents(); | 199 | + listener1.nextEvent().thenAccept(result -> { |
| 224 | - listener2.clearEvents(); | 200 | + assertEquals(node3, result.newValue().candidates().get(2)); |
| 225 | - listener3.clearEvents(); | 201 | + }).join(); |
| 202 | + listener2.nextEvent().thenAccept(result -> { | ||
| 203 | + assertEquals(node3, result.newValue().candidates().get(2)); | ||
| 204 | + }).join(); | ||
| 205 | + listener3.nextEvent().thenAccept(result -> { | ||
| 206 | + assertEquals(node3, result.newValue().candidates().get(2)); | ||
| 207 | + }).join(); | ||
| 226 | 208 | ||
| 227 | elector3.promote("foo", node3).thenAccept(result -> { | 209 | elector3.promote("foo", node3).thenAccept(result -> { |
| 228 | assertTrue(result); | 210 | assertTrue(result); |
| ... | @@ -241,17 +223,12 @@ public class AtomixLeaderElectorTest extends AtomixTestBase { | ... | @@ -241,17 +223,12 @@ public class AtomixLeaderElectorTest extends AtomixTestBase { |
| 241 | 223 | ||
| 242 | @Test | 224 | @Test |
| 243 | public void testLeaderSessionClose() throws Throwable { | 225 | public void testLeaderSessionClose() throws Throwable { |
| 244 | - leaderElectorLeaderSessionCloseTests(1); | ||
| 245 | - clearTests(); | ||
| 246 | - leaderElectorLeaderSessionCloseTests(2); | ||
| 247 | - clearTests(); | ||
| 248 | leaderElectorLeaderSessionCloseTests(3); | 226 | leaderElectorLeaderSessionCloseTests(3); |
| 249 | - clearTests(); | ||
| 250 | } | 227 | } |
| 251 | 228 | ||
| 252 | private void leaderElectorLeaderSessionCloseTests(int numServers) throws Throwable { | 229 | private void leaderElectorLeaderSessionCloseTests(int numServers) throws Throwable { |
| 253 | createCopycatServers(numServers); | 230 | createCopycatServers(numServers); |
| 254 | - Atomix client1 = createAtomixClient(); | 231 | + AtomixClient client1 = createAtomixClient(); |
| 255 | AtomixLeaderElector elector1 = client1.getResource("test-elector", AtomixLeaderElector.class).join(); | 232 | AtomixLeaderElector elector1 = client1.getResource("test-elector", AtomixLeaderElector.class).join(); |
| 256 | elector1.run("foo", node1).join(); | 233 | elector1.run("foo", node1).join(); |
| 257 | Atomix client2 = createAtomixClient(); | 234 | Atomix client2 = createAtomixClient(); |
| ... | @@ -269,12 +246,7 @@ public class AtomixLeaderElectorTest extends AtomixTestBase { | ... | @@ -269,12 +246,7 @@ public class AtomixLeaderElectorTest extends AtomixTestBase { |
| 269 | 246 | ||
| 270 | @Test | 247 | @Test |
| 271 | public void testNonLeaderSessionClose() throws Throwable { | 248 | public void testNonLeaderSessionClose() throws Throwable { |
| 272 | - leaderElectorNonLeaderSessionCloseTests(1); | ||
| 273 | - clearTests(); | ||
| 274 | - leaderElectorNonLeaderSessionCloseTests(2); | ||
| 275 | - clearTests(); | ||
| 276 | leaderElectorNonLeaderSessionCloseTests(3); | 249 | leaderElectorNonLeaderSessionCloseTests(3); |
| 277 | - clearTests(); | ||
| 278 | } | 250 | } |
| 279 | 251 | ||
| 280 | private void leaderElectorNonLeaderSessionCloseTests(int numServers) throws Throwable { | 252 | private void leaderElectorNonLeaderSessionCloseTests(int numServers) throws Throwable { |
| ... | @@ -282,7 +254,7 @@ public class AtomixLeaderElectorTest extends AtomixTestBase { | ... | @@ -282,7 +254,7 @@ public class AtomixLeaderElectorTest extends AtomixTestBase { |
| 282 | Atomix client1 = createAtomixClient(); | 254 | Atomix client1 = createAtomixClient(); |
| 283 | AtomixLeaderElector elector1 = client1.getResource("test-elector", AtomixLeaderElector.class).join(); | 255 | AtomixLeaderElector elector1 = client1.getResource("test-elector", AtomixLeaderElector.class).join(); |
| 284 | elector1.run("foo", node1).join(); | 256 | elector1.run("foo", node1).join(); |
| 285 | - Atomix client2 = createAtomixClient(); | 257 | + AtomixClient client2 = createAtomixClient(); |
| 286 | AtomixLeaderElector elector2 = client2.getResource("test-elector", AtomixLeaderElector.class).join(); | 258 | AtomixLeaderElector elector2 = client2.getResource("test-elector", AtomixLeaderElector.class).join(); |
| 287 | LeaderEventListener listener = new LeaderEventListener(); | 259 | LeaderEventListener listener = new LeaderEventListener(); |
| 288 | elector2.run("foo", node2).join(); | 260 | elector2.run("foo", node2).join(); |
| ... | @@ -297,12 +269,7 @@ public class AtomixLeaderElectorTest extends AtomixTestBase { | ... | @@ -297,12 +269,7 @@ public class AtomixLeaderElectorTest extends AtomixTestBase { |
| 297 | 269 | ||
| 298 | @Test | 270 | @Test |
| 299 | public void testQueries() throws Throwable { | 271 | public void testQueries() throws Throwable { |
| 300 | - leaderElectorQueryTests(1); | ||
| 301 | - clearTests(); | ||
| 302 | - leaderElectorQueryTests(2); | ||
| 303 | - clearTests(); | ||
| 304 | leaderElectorQueryTests(3); | 272 | leaderElectorQueryTests(3); |
| 305 | - clearTests(); | ||
| 306 | } | 273 | } |
| 307 | 274 | ||
| 308 | private void leaderElectorQueryTests(int numServers) throws Throwable { | 275 | private void leaderElectorQueryTests(int numServers) throws Throwable { | ... | ... |
| ... | @@ -17,7 +17,6 @@ package org.onosproject.store.primitives.resources.impl; | ... | @@ -17,7 +17,6 @@ package org.onosproject.store.primitives.resources.impl; |
| 17 | 17 | ||
| 18 | import static org.junit.Assert.*; | 18 | import static org.junit.Assert.*; |
| 19 | 19 | ||
| 20 | -import org.junit.Ignore; | ||
| 21 | import org.junit.Test; | 20 | import org.junit.Test; |
| 22 | 21 | ||
| 23 | import io.atomix.Atomix; | 22 | import io.atomix.Atomix; |
| ... | @@ -27,7 +26,6 @@ import io.atomix.variables.DistributedLong; | ... | @@ -27,7 +26,6 @@ import io.atomix.variables.DistributedLong; |
| 27 | /** | 26 | /** |
| 28 | * Unit tests for {@link AtomixCounter}. | 27 | * Unit tests for {@link AtomixCounter}. |
| 29 | */ | 28 | */ |
| 30 | -@Ignore | ||
| 31 | public class AtomixLongTest extends AtomixTestBase { | 29 | public class AtomixLongTest extends AtomixTestBase { |
| 32 | 30 | ||
| 33 | @Override | 31 | @Override |
| ... | @@ -37,12 +35,7 @@ public class AtomixLongTest extends AtomixTestBase { | ... | @@ -37,12 +35,7 @@ public class AtomixLongTest extends AtomixTestBase { |
| 37 | 35 | ||
| 38 | @Test | 36 | @Test |
| 39 | public void testBasicOperations() throws Throwable { | 37 | public void testBasicOperations() throws Throwable { |
| 40 | - basicOperationsTest(1); | ||
| 41 | - clearTests(); | ||
| 42 | - basicOperationsTest(2); | ||
| 43 | - clearTests(); | ||
| 44 | basicOperationsTest(3); | 38 | basicOperationsTest(3); |
| 45 | - clearTests(); | ||
| 46 | } | 39 | } |
| 47 | 40 | ||
| 48 | protected void basicOperationsTest(int clusterSize) throws Throwable { | 41 | protected void basicOperationsTest(int clusterSize) throws Throwable { | ... | ... |
| ... | @@ -15,17 +15,16 @@ | ... | @@ -15,17 +15,16 @@ |
| 15 | */ | 15 | */ |
| 16 | package org.onosproject.store.primitives.resources.impl; | 16 | package org.onosproject.store.primitives.resources.impl; |
| 17 | 17 | ||
| 18 | -import io.atomix.Atomix; | ||
| 19 | import io.atomix.AtomixClient; | 18 | import io.atomix.AtomixClient; |
| 20 | import io.atomix.catalyst.serializer.Serializer; | 19 | import io.atomix.catalyst.serializer.Serializer; |
| 21 | import io.atomix.catalyst.transport.Address; | 20 | import io.atomix.catalyst.transport.Address; |
| 22 | -import io.atomix.catalyst.transport.LocalServerRegistry; | 21 | +import io.atomix.catalyst.transport.local.LocalServerRegistry; |
| 23 | -import io.atomix.catalyst.transport.LocalTransport; | 22 | +import io.atomix.catalyst.transport.local.LocalTransport; |
| 24 | import io.atomix.copycat.client.CopycatClient; | 23 | import io.atomix.copycat.client.CopycatClient; |
| 25 | import io.atomix.copycat.server.CopycatServer; | 24 | import io.atomix.copycat.server.CopycatServer; |
| 26 | import io.atomix.copycat.server.storage.Storage; | 25 | import io.atomix.copycat.server.storage.Storage; |
| 27 | import io.atomix.copycat.server.storage.StorageLevel; | 26 | import io.atomix.copycat.server.storage.StorageLevel; |
| 28 | -import io.atomix.manager.state.ResourceManagerState; | 27 | +import io.atomix.manager.internal.ResourceManagerState; |
| 29 | import io.atomix.resource.ResourceType; | 28 | import io.atomix.resource.ResourceType; |
| 30 | 29 | ||
| 31 | import java.io.File; | 30 | import java.io.File; |
| ... | @@ -53,7 +52,7 @@ public abstract class AtomixTestBase { | ... | @@ -53,7 +52,7 @@ public abstract class AtomixTestBase { |
| 53 | protected List<Address> members; | 52 | protected List<Address> members; |
| 54 | protected List<CopycatClient> copycatClients = new ArrayList<>(); | 53 | protected List<CopycatClient> copycatClients = new ArrayList<>(); |
| 55 | protected List<CopycatServer> copycatServers = new ArrayList<>(); | 54 | protected List<CopycatServer> copycatServers = new ArrayList<>(); |
| 56 | - protected List<Atomix> atomixClients = new ArrayList<>(); | 55 | + protected List<AtomixClient> atomixClients = new ArrayList<>(); |
| 57 | protected List<CopycatServer> atomixServers = new ArrayList<>(); | 56 | protected List<CopycatServer> atomixServers = new ArrayList<>(); |
| 58 | protected Serializer serializer = CatalystSerializers.getSerializer(); | 57 | protected Serializer serializer = CatalystSerializers.getSerializer(); |
| 59 | 58 | ||
| ... | @@ -89,7 +88,7 @@ public abstract class AtomixTestBase { | ... | @@ -89,7 +88,7 @@ public abstract class AtomixTestBase { |
| 89 | 88 | ||
| 90 | for (int i = 0; i < nodes; i++) { | 89 | for (int i = 0; i < nodes; i++) { |
| 91 | CopycatServer server = createCopycatServer(members.get(i)); | 90 | CopycatServer server = createCopycatServer(members.get(i)); |
| 92 | - server.start().thenRun(latch::countDown); | 91 | + server.bootstrap(members).thenRun(latch::countDown); |
| 93 | servers.add(server); | 92 | servers.add(server); |
| 94 | } | 93 | } |
| 95 | 94 | ||
| ... | @@ -102,7 +101,7 @@ public abstract class AtomixTestBase { | ... | @@ -102,7 +101,7 @@ public abstract class AtomixTestBase { |
| 102 | * Creates a Copycat server. | 101 | * Creates a Copycat server. |
| 103 | */ | 102 | */ |
| 104 | protected CopycatServer createCopycatServer(Address address) { | 103 | protected CopycatServer createCopycatServer(Address address) { |
| 105 | - CopycatServer server = CopycatServer.builder(address, members) | 104 | + CopycatServer server = CopycatServer.builder(address) |
| 106 | .withTransport(new LocalTransport(registry)) | 105 | .withTransport(new LocalTransport(registry)) |
| 107 | .withStorage(Storage.builder() | 106 | .withStorage(Storage.builder() |
| 108 | .withStorageLevel(StorageLevel.DISK) | 107 | .withStorageLevel(StorageLevel.DISK) |
| ... | @@ -127,11 +126,11 @@ public abstract class AtomixTestBase { | ... | @@ -127,11 +126,11 @@ public abstract class AtomixTestBase { |
| 127 | 126 | ||
| 128 | CompletableFuture<Void> closeClients = | 127 | CompletableFuture<Void> closeClients = |
| 129 | CompletableFuture.allOf(atomixClients.stream() | 128 | CompletableFuture.allOf(atomixClients.stream() |
| 130 | - .map(Atomix::close) | 129 | + .map(AtomixClient::close) |
| 131 | .toArray(CompletableFuture[]::new)); | 130 | .toArray(CompletableFuture[]::new)); |
| 132 | 131 | ||
| 133 | closeClients.thenCompose(v -> CompletableFuture.allOf(copycatServers.stream() | 132 | closeClients.thenCompose(v -> CompletableFuture.allOf(copycatServers.stream() |
| 134 | - .map(CopycatServer::stop) | 133 | + .map(CopycatServer::shutdown) |
| 135 | .toArray(CompletableFuture[]::new))).join(); | 134 | .toArray(CompletableFuture[]::new))).join(); |
| 136 | 135 | ||
| 137 | deleteDirectory(TEST_DIR); | 136 | deleteDirectory(TEST_DIR); |
| ... | @@ -163,13 +162,13 @@ public abstract class AtomixTestBase { | ... | @@ -163,13 +162,13 @@ public abstract class AtomixTestBase { |
| 163 | /** | 162 | /** |
| 164 | * Creates a Atomix client. | 163 | * Creates a Atomix client. |
| 165 | */ | 164 | */ |
| 166 | - protected Atomix createAtomixClient() { | 165 | + protected AtomixClient createAtomixClient() { |
| 167 | CountDownLatch latch = new CountDownLatch(1); | 166 | CountDownLatch latch = new CountDownLatch(1); |
| 168 | - Atomix client = AtomixClient.builder(members) | 167 | + AtomixClient client = AtomixClient.builder() |
| 169 | .withTransport(new LocalTransport(registry)) | 168 | .withTransport(new LocalTransport(registry)) |
| 170 | .withSerializer(serializer.clone()) | 169 | .withSerializer(serializer.clone()) |
| 171 | .build(); | 170 | .build(); |
| 172 | - client.open().thenRun(latch::countDown); | 171 | + client.connect(members).thenRun(latch::countDown); |
| 173 | atomixClients.add(client); | 172 | atomixClients.add(client); |
| 174 | Uninterruptibles.awaitUninterruptibly(latch); | 173 | Uninterruptibles.awaitUninterruptibly(latch); |
| 175 | return client; | 174 | return client; | ... | ... |
| ... | @@ -3,6 +3,7 @@ osgi_feature ( | ... | @@ -3,6 +3,7 @@ osgi_feature ( |
| 3 | title="ONOS 3rd party dependencies", | 3 | title="ONOS 3rd party dependencies", |
| 4 | required_features = [], | 4 | required_features = [], |
| 5 | included_bundles = [ | 5 | included_bundles = [ |
| 6 | + '//lib:atomix', | ||
| 6 | '//lib:commons-lang', | 7 | '//lib:commons-lang', |
| 7 | '//lib:commons-lang3', | 8 | '//lib:commons-lang3', |
| 8 | '//lib:commons-configuration', | 9 | '//lib:commons-configuration', |
| ... | @@ -33,7 +34,6 @@ osgi_feature ( | ... | @@ -33,7 +34,6 @@ osgi_feature ( |
| 33 | '//lib:typesafe-config', | 34 | '//lib:typesafe-config', |
| 34 | '//lib:concurrent-trees', | 35 | '//lib:concurrent-trees', |
| 35 | '//lib:commons-io', | 36 | '//lib:commons-io', |
| 36 | - '//lib:onos-atomix', | ||
| 37 | '//lib:jersey-client', | 37 | '//lib:jersey-client', |
| 38 | '//lib:mapdb', | 38 | '//lib:mapdb', |
| 39 | ] | 39 | ] | ... | ... |
| ... | @@ -56,7 +56,7 @@ | ... | @@ -56,7 +56,7 @@ |
| 56 | <bundle>mvn:com.typesafe/config/1.2.1</bundle> | 56 | <bundle>mvn:com.typesafe/config/1.2.1</bundle> |
| 57 | <bundle>wrap:mvn:com.googlecode.concurrent-trees/concurrent-trees/2.4.0$Bundle-SymbolicName=concurrent-trees&Bundle-Version=2.4.0</bundle> | 57 | <bundle>wrap:mvn:com.googlecode.concurrent-trees/concurrent-trees/2.4.0$Bundle-SymbolicName=concurrent-trees&Bundle-Version=2.4.0</bundle> |
| 58 | <bundle>mvn:commons-io/commons-io/2.4</bundle> | 58 | <bundle>mvn:commons-io/commons-io/2.4</bundle> |
| 59 | - <bundle>mvn:org.onosproject/atomix/1.0.1.onos-SNAPSHOT</bundle> | 59 | + <bundle>mvn:io.atomix/atomix-all/1.0.0-rc7</bundle> |
| 60 | 60 | ||
| 61 | <bundle>mvn:org.glassfish.jersey.core/jersey-client/2.22.2</bundle> | 61 | <bundle>mvn:org.glassfish.jersey.core/jersey-client/2.22.2</bundle> |
| 62 | 62 | ... | ... |
| 1 | -# ***** This file was auto-generated at Wed May 18 17:55:44 PDT 2016. Do not edit this file manually. ***** | 1 | +# ***** This file was auto-generated at Fri May 27 10:14:26 PDT 2016. Do not edit this file manually. ***** |
| 2 | osgi_feature_group( | 2 | osgi_feature_group( |
| 3 | name = 'COMPILE', | 3 | name = 'COMPILE', |
| 4 | visibility = ['PUBLIC'], | 4 | visibility = ['PUBLIC'], |
| ... | @@ -133,109 +133,10 @@ remote_jar ( | ... | @@ -133,109 +133,10 @@ remote_jar ( |
| 133 | 133 | ||
| 134 | remote_jar ( | 134 | remote_jar ( |
| 135 | name = 'atomix', | 135 | name = 'atomix', |
| 136 | - out = 'atomix-1.0.0-rc3.jar', | 136 | + out = 'atomix-all-1.0.0-rc7.jar', |
| 137 | - url = 'mvn:io.atomix:atomix:jar:1.0.0-rc3', | 137 | + url = 'mvn:io.atomix:atomix-all:jar:1.0.0-rc7', |
| 138 | - sha1 = 'a572aa9cd069b2d43481901dc901429d0b43332f', | 138 | + sha1 = 'ad103065adbf02971b6072719a02d6a93753125b', |
| 139 | - maven_coords = 'io.atomix:atomix:1.0.0-rc3', | 139 | + maven_coords = 'io.atomix:atomix-all:1.0.0-rc7', |
| 140 | - visibility = [ 'PUBLIC' ], | ||
| 141 | -) | ||
| 142 | - | ||
| 143 | -remote_jar ( | ||
| 144 | - name = 'atomix-collections', | ||
| 145 | - out = 'atomix-collections-1.0.0-rc3.jar', | ||
| 146 | - url = 'mvn:io.atomix:atomix-collections:jar:1.0.0-rc3', | ||
| 147 | - sha1 = '161dbfd046cefabe7e6c972e70823c11f7abe65e', | ||
| 148 | - maven_coords = 'io.atomix:atomix-collections:1.0.0-rc3', | ||
| 149 | - visibility = [ 'PUBLIC' ], | ||
| 150 | -) | ||
| 151 | - | ||
| 152 | -remote_jar ( | ||
| 153 | - name = 'atomix-messaging', | ||
| 154 | - out = 'atomix-messaging-1.0.0-rc3.jar', | ||
| 155 | - url = 'mvn:io.atomix:atomix-messaging:jar:1.0.0-rc3', | ||
| 156 | - sha1 = '58b570d8e3e76a0d0c649b97f3ee0a6e3885958a', | ||
| 157 | - maven_coords = 'io.atomix:atomix-messaging:1.0.0-rc3', | ||
| 158 | - visibility = [ 'PUBLIC' ], | ||
| 159 | -) | ||
| 160 | - | ||
| 161 | -remote_jar ( | ||
| 162 | - name = 'atomix-resource', | ||
| 163 | - out = 'atomix-resource-1.0.0-rc3.jar', | ||
| 164 | - url = 'mvn:io.atomix:atomix-resource:jar:1.0.0-rc3', | ||
| 165 | - sha1 = 'e47a40d38e6241544ec75df0e6906c209190aebf', | ||
| 166 | - maven_coords = 'io.atomix:atomix-resource:1.0.0-rc3', | ||
| 167 | - visibility = [ 'PUBLIC' ], | ||
| 168 | -) | ||
| 169 | - | ||
| 170 | -remote_jar ( | ||
| 171 | - name = 'atomix-resource-manager', | ||
| 172 | - out = 'atomix-resource-manager-1.0.0-rc3.jar', | ||
| 173 | - url = 'mvn:io.atomix:atomix-resource-manager:jar:1.0.0-rc3', | ||
| 174 | - sha1 = '41a4cf53c27df12efb04832e1314a81c09c857cb', | ||
| 175 | - maven_coords = 'io.atomix:atomix-resource-manager:1.0.0-rc3', | ||
| 176 | - visibility = [ 'PUBLIC' ], | ||
| 177 | -) | ||
| 178 | - | ||
| 179 | -remote_jar ( | ||
| 180 | - name = 'atomix-variables', | ||
| 181 | - out = 'atomix-variables-1.0.0-rc3.jar', | ||
| 182 | - url = 'mvn:io.atomix:atomix-variables:jar:1.0.0-rc3', | ||
| 183 | - sha1 = 'dd0ca3c0d211b17b291877e21f0ef10f2aa4a9bd', | ||
| 184 | - maven_coords = 'io.atomix:atomix-variables:1.0.0-rc3', | ||
| 185 | - visibility = [ 'PUBLIC' ], | ||
| 186 | -) | ||
| 187 | - | ||
| 188 | -remote_jar ( | ||
| 189 | - name = 'onos-atomix', | ||
| 190 | - out = 'atomix-1.0.0.onos.jar', | ||
| 191 | - url = 'mvn:org.onosproject:atomix:jar:1.0.0.onos', | ||
| 192 | - sha1 = '3d1a645b783a61b673aa71dbcc71a1bdd3afdaa2', | ||
| 193 | - maven_coords = 'org.onosproject:atomix:1.0.0.onos', | ||
| 194 | - visibility = [ 'PUBLIC' ], | ||
| 195 | -) | ||
| 196 | - | ||
| 197 | -remote_jar ( | ||
| 198 | - name = 'catalyst-buffer', | ||
| 199 | - out = 'catalyst-buffer-1.0.4.jar', | ||
| 200 | - url = 'mvn:io.atomix.catalyst:catalyst-buffer:jar:1.0.4', | ||
| 201 | - sha1 = '00fb023ebd860d44385750790328aa26a529c75f', | ||
| 202 | - maven_coords = 'io.atomix.catalyst:catalyst-buffer:1.0.4', | ||
| 203 | - visibility = [ 'PUBLIC' ], | ||
| 204 | -) | ||
| 205 | - | ||
| 206 | -remote_jar ( | ||
| 207 | - name = 'catalyst-common', | ||
| 208 | - out = 'catalyst-common-1.0.4.jar', | ||
| 209 | - url = 'mvn:io.atomix.catalyst:catalyst-common:jar:1.0.4', | ||
| 210 | - sha1 = '69d50a64ecf9f63de430aead9dc4b743d29f0195', | ||
| 211 | - maven_coords = 'io.atomix.catalyst:catalyst-common:jar:NON-OSGI:1.0.4', | ||
| 212 | - visibility = [ 'PUBLIC' ], | ||
| 213 | -) | ||
| 214 | - | ||
| 215 | -remote_jar ( | ||
| 216 | - name = 'catalyst-local', | ||
| 217 | - out = 'catalyst-local-1.0.4.jar', | ||
| 218 | - url = 'mvn:io.atomix.catalyst:catalyst-local:jar:1.0.4', | ||
| 219 | - sha1 = 'cbee759c63ce9127c979f4f399d327551644270f', | ||
| 220 | - maven_coords = 'io.atomix.catalyst:catalyst-local:1.0.4', | ||
| 221 | - visibility = [ 'PUBLIC' ], | ||
| 222 | -) | ||
| 223 | - | ||
| 224 | -remote_jar ( | ||
| 225 | - name = 'catalyst-serializer', | ||
| 226 | - out = 'catalyst-serializer-1.0.4.jar', | ||
| 227 | - url = 'mvn:io.atomix.catalyst:catalyst-serializer:jar:1.0.4', | ||
| 228 | - sha1 = 'e86352776cf4fa17eabf4e1d90fe0587ced4f788', | ||
| 229 | - maven_coords = 'io.atomix.catalyst:catalyst-serializer:1.0.4', | ||
| 230 | - visibility = [ 'PUBLIC' ], | ||
| 231 | -) | ||
| 232 | - | ||
| 233 | -remote_jar ( | ||
| 234 | - name = 'catalyst-transport', | ||
| 235 | - out = 'catalyst-transport-1.0.4.jar', | ||
| 236 | - url = 'mvn:io.atomix.catalyst:catalyst-transport:jar:1.0.4', | ||
| 237 | - sha1 = 'f36600add086a8848290cad9d6d117634b5bf069', | ||
| 238 | - maven_coords = 'io.atomix.catalyst:catalyst-transport:jar:NON-OSGI:1.0.4', | ||
| 239 | visibility = [ 'PUBLIC' ], | 140 | visibility = [ 'PUBLIC' ], |
| 240 | ) | 141 | ) |
| 241 | 142 | ||
| ... | @@ -339,87 +240,6 @@ remote_jar ( | ... | @@ -339,87 +240,6 @@ remote_jar ( |
| 339 | ) | 240 | ) |
| 340 | 241 | ||
| 341 | remote_jar ( | 242 | remote_jar ( |
| 342 | - name = 'copycat-api', | ||
| 343 | - out = 'copycat-api-0.5.1.onos.jar', | ||
| 344 | - url = 'mvn:org.onosproject:copycat-api:jar:0.5.1.onos', | ||
| 345 | - sha1 = 'b947348875485814e2a175a0435cdae4138452fc', | ||
| 346 | - maven_coords = 'org.onosproject:copycat-api:jar:NON-OSGI:0.5.1.onos', | ||
| 347 | - visibility = [ 'PUBLIC' ], | ||
| 348 | -) | ||
| 349 | - | ||
| 350 | -remote_jar ( | ||
| 351 | - name = 'copycat-client', | ||
| 352 | - out = 'copycat-client-1.0.0-rc4.jar', | ||
| 353 | - url = 'mvn:io.atomix.copycat:copycat-client:jar:1.0.0-rc4', | ||
| 354 | - sha1 = '9373c8920a57356b78896d791296a74a2eb868b4', | ||
| 355 | - maven_coords = 'io.atomix.copycat:copycat-client:1.0.0-rc4', | ||
| 356 | - visibility = [ 'PUBLIC' ], | ||
| 357 | -) | ||
| 358 | - | ||
| 359 | -remote_jar ( | ||
| 360 | - name = 'copycat-core', | ||
| 361 | - out = 'copycat-core-0.5.1.onos.jar', | ||
| 362 | - url = 'mvn:org.onosproject:copycat-core:jar:0.5.1.onos', | ||
| 363 | - sha1 = 'b268f3cbdd57f28244b21b2b8fc08116f63d736d', | ||
| 364 | - maven_coords = 'org.onosproject:copycat-core:jar:NON-OSGI:0.5.1.onos', | ||
| 365 | - visibility = [ 'PUBLIC' ], | ||
| 366 | -) | ||
| 367 | - | ||
| 368 | -remote_jar ( | ||
| 369 | - name = 'copycat-event-log', | ||
| 370 | - out = 'copycat-event-log-0.5.1.onos.jar', | ||
| 371 | - url = 'mvn:org.onosproject:copycat-event-log:jar:0.5.1.onos', | ||
| 372 | - sha1 = 'a9e32b13e6500c66113202e7d123e7184b726054', | ||
| 373 | - maven_coords = 'org.onosproject:copycat-event-log:jar:NON-OSGI:0.5.1.onos', | ||
| 374 | - visibility = [ 'PUBLIC' ], | ||
| 375 | -) | ||
| 376 | - | ||
| 377 | -remote_jar ( | ||
| 378 | - name = 'copycat-leader-election', | ||
| 379 | - out = 'copycat-leader-election-0.5.1.onos.jar', | ||
| 380 | - url = 'mvn:org.onosproject:copycat-leader-election:jar:0.5.1.onos', | ||
| 381 | - sha1 = 'a33617e98caf4e909d7ac744e1f6cdd1ba4b1698', | ||
| 382 | - maven_coords = 'org.onosproject:copycat-leader-election:jar:NON-OSGI:0.5.1.onos', | ||
| 383 | - visibility = [ 'PUBLIC' ], | ||
| 384 | -) | ||
| 385 | - | ||
| 386 | -remote_jar ( | ||
| 387 | - name = 'copycat-protocol', | ||
| 388 | - out = 'copycat-protocol-1.0.0-rc4.jar', | ||
| 389 | - url = 'mvn:io.atomix.copycat:copycat-protocol:jar:1.0.0-rc4', | ||
| 390 | - sha1 = 'cea774c2e4ce7021a6bfca64fd885e875f01f4dc', | ||
| 391 | - maven_coords = 'io.atomix.copycat:copycat-protocol:1.0.0-rc4', | ||
| 392 | - visibility = [ 'PUBLIC' ], | ||
| 393 | -) | ||
| 394 | - | ||
| 395 | -remote_jar ( | ||
| 396 | - name = 'copycat-server', | ||
| 397 | - out = 'copycat-server-1.0.0-rc4.jar', | ||
| 398 | - url = 'mvn:io.atomix.copycat:copycat-server:jar:1.0.0-rc4', | ||
| 399 | - sha1 = 'e2b6603dbd299d7b21685211df509dd4fbd2f0e9', | ||
| 400 | - maven_coords = 'io.atomix.copycat:copycat-server:1.0.0-rc4', | ||
| 401 | - visibility = [ 'PUBLIC' ], | ||
| 402 | -) | ||
| 403 | - | ||
| 404 | -remote_jar ( | ||
| 405 | - name = 'copycat-state-log', | ||
| 406 | - out = 'copycat-state-log-0.5.1.onos.jar', | ||
| 407 | - url = 'mvn:org.onosproject:copycat-state-log:jar:0.5.1.onos', | ||
| 408 | - sha1 = '1dfa2b4c6da1cdc453fd3740cd506b9570f118ea', | ||
| 409 | - maven_coords = 'org.onosproject:copycat-state-log:jar:NON-OSGI:0.5.1.onos', | ||
| 410 | - visibility = [ 'PUBLIC' ], | ||
| 411 | -) | ||
| 412 | - | ||
| 413 | -remote_jar ( | ||
| 414 | - name = 'copycat-state-machine', | ||
| 415 | - out = 'copycat-state-machine-0.5.1.onos.jar', | ||
| 416 | - url = 'mvn:org.onosproject:copycat-state-machine:jar:0.5.1.onos', | ||
| 417 | - sha1 = '03f924b5c818c0684bdfa6c502e5fff8e07d6b77', | ||
| 418 | - maven_coords = 'org.onosproject:copycat-state-machine:jar:NON-OSGI:0.5.1.onos', | ||
| 419 | - visibility = [ 'PUBLIC' ], | ||
| 420 | -) | ||
| 421 | - | ||
| 422 | -remote_jar ( | ||
| 423 | name = 'easymock', | 243 | name = 'easymock', |
| 424 | out = 'easymock-3.4.jar', | 244 | out = 'easymock-3.4.jar', |
| 425 | url = 'mvn:org.easymock:easymock:jar:3.4', | 245 | url = 'mvn:org.easymock:easymock:jar:3.4', | ... | ... |
| ... | @@ -86,19 +86,7 @@ | ... | @@ -86,19 +86,7 @@ |
| 86 | "gmetric4j": "mvn:info.ganglia.gmetric4j:gmetric4j:1.0.10", | 86 | "gmetric4j": "mvn:info.ganglia.gmetric4j:gmetric4j:1.0.10", |
| 87 | "aopalliance-repackaged": "mvn:org.glassfish.hk2.external:aopalliance-repackaged:2.4.0-b34", | 87 | "aopalliance-repackaged": "mvn:org.glassfish.hk2.external:aopalliance-repackaged:2.4.0-b34", |
| 88 | "asm": "mvn:org.ow2.asm:asm:5.0.3", | 88 | "asm": "mvn:org.ow2.asm:asm:5.0.3", |
| 89 | - "atomix": "mvn:io.atomix:atomix:1.0.0-rc3", | 89 | + "atomix": "mvn:io.atomix:atomix-all:1.0.0-rc7", |
| 90 | - "atomix-collections": "mvn:io.atomix:atomix-collections:1.0.0-rc3", | ||
| 91 | - "atomix-messaging": "mvn:io.atomix:atomix-messaging:1.0.0-rc3", | ||
| 92 | - "atomix-resource": "mvn:io.atomix:atomix-resource:1.0.0-rc3", | ||
| 93 | - "atomix-resource-manager": "mvn:io.atomix:atomix-resource-manager:1.0.0-rc3", | ||
| 94 | - "atomix-variables": "mvn:io.atomix:atomix-variables:1.0.0-rc3", | ||
| 95 | - "onos-atomix": "mvn:org.onosproject:atomix:1.0.0.onos", | ||
| 96 | - "catalyst-buffer": "mvn:io.atomix.catalyst:catalyst-buffer:1.0.4", | ||
| 97 | - "catalyst-common": "mvn:io.atomix.catalyst:catalyst-common:1.0.4", | ||
| 98 | - "catalyst-local": "mvn:io.atomix.catalyst:catalyst-local:1.0.4", | ||
| 99 | - "catalyst-serializer": "mvn:io.atomix.catalyst:catalyst-serializer:1.0.4", | ||
| 100 | - "catalyst-transport": "mvn:io.atomix.catalyst:catalyst-transport:1.0.4", | ||
| 101 | - "catalyst-transport": "mvn:io.atomix.catalyst:catalyst-transport:1.0.4", | ||
| 102 | "commons-codec": "mvn:commons-codec:commons-codec:1.10", | 90 | "commons-codec": "mvn:commons-codec:commons-codec:1.10", |
| 103 | "commons-collections": "mvn:commons-collections:commons-collections:3.2.2", | 91 | "commons-collections": "mvn:commons-collections:commons-collections:3.2.2", |
| 104 | "commons-configuration": "mvn:commons-configuration:commons-configuration:1.10", | 92 | "commons-configuration": "mvn:commons-configuration:commons-configuration:1.10", |
| ... | @@ -110,15 +98,6 @@ | ... | @@ -110,15 +98,6 @@ |
| 110 | "commons-pool": "mvn:commons-pool:commons-pool:1.6", | 98 | "commons-pool": "mvn:commons-pool:commons-pool:1.6", |
| 111 | "commons-beanutils": "mvn:commons-beanutils:commons-beanutils:1.9.2", | 99 | "commons-beanutils": "mvn:commons-beanutils:commons-beanutils:1.9.2", |
| 112 | "concurrent-trees": "mvn:com.googlecode.concurrent-trees:concurrent-trees:2.4.0", | 100 | "concurrent-trees": "mvn:com.googlecode.concurrent-trees:concurrent-trees:2.4.0", |
| 113 | - "copycat-api": "mvn:org.onosproject:copycat-api:0.5.1.onos", | ||
| 114 | - "copycat-client": "mvn:io.atomix.copycat:copycat-client:1.0.0-rc4", | ||
| 115 | - "copycat-core": "mvn:org.onosproject:copycat-core:0.5.1.onos", | ||
| 116 | - "copycat-event-log": "mvn:org.onosproject:copycat-event-log:0.5.1.onos", | ||
| 117 | - "copycat-leader-election": "mvn:org.onosproject:copycat-leader-election:0.5.1.onos", | ||
| 118 | - "copycat-protocol": "mvn:io.atomix.copycat:copycat-protocol:1.0.0-rc4", | ||
| 119 | - "copycat-server": "mvn:io.atomix.copycat:copycat-server:1.0.0-rc4", | ||
| 120 | - "copycat-state-log": "mvn:org.onosproject:copycat-state-log:0.5.1.onos", | ||
| 121 | - "copycat-state-machine": "mvn:org.onosproject:copycat-state-machine:0.5.1.onos", | ||
| 122 | "easymock": "mvn:org.easymock:easymock:3.4", | 101 | "easymock": "mvn:org.easymock:easymock:3.4", |
| 123 | "antlr": "mvn:antlr:antlr:2.7.7", | 102 | "antlr": "mvn:antlr:antlr:2.7.7", |
| 124 | "error_prone_annotations": "mvn:com.google.errorprone:error_prone_annotations:2.0.2", | 103 | "error_prone_annotations": "mvn:com.google.errorprone:error_prone_annotations:2.0.2", | ... | ... |
utils/atomix/pom.xml
deleted
100644 → 0
| 1 | -<?xml version="1.0" encoding="UTF-8"?> | ||
| 2 | -<!-- | ||
| 3 | - ~ Copyright 2016-present Open Networking Laboratory | ||
| 4 | - ~ | ||
| 5 | - ~ Licensed under the Apache License, Version 2.0 (the "License"); | ||
| 6 | - ~ you may not use this file except in compliance with the License. | ||
| 7 | - ~ You may obtain a copy of the License at | ||
| 8 | - ~ | ||
| 9 | - ~ http://www.apache.org/licenses/LICENSE-2.0 | ||
| 10 | - ~ | ||
| 11 | - ~ Unless required by applicable law or agreed to in writing, software | ||
| 12 | - ~ distributed under the License is distributed on an "AS IS" BASIS, | ||
| 13 | - ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
| 14 | - ~ See the License for the specific language governing permissions and | ||
| 15 | - ~ limitations under the License. | ||
| 16 | - --> | ||
| 17 | -<project xmlns="http://maven.apache.org/POM/4.0.0" | ||
| 18 | - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||
| 19 | - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> | ||
| 20 | - <modelVersion>4.0.0</modelVersion> | ||
| 21 | - | ||
| 22 | - <parent> | ||
| 23 | - <groupId>org.onosproject</groupId> | ||
| 24 | - <artifactId>onos-base</artifactId> | ||
| 25 | - <version>1</version> | ||
| 26 | - <relativePath/> | ||
| 27 | - </parent> | ||
| 28 | - | ||
| 29 | - <groupId>org.onosproject</groupId> | ||
| 30 | - <artifactId>atomix</artifactId> | ||
| 31 | - <packaging>bundle</packaging> | ||
| 32 | - <version>1.0.1.onos-SNAPSHOT</version> | ||
| 33 | - | ||
| 34 | - <description>Atomix shaded OSGi JAR</description> | ||
| 35 | - <url>http://onosproject.org/</url> | ||
| 36 | - | ||
| 37 | - <scm> | ||
| 38 | - <connection>scm:git:https://gerrit.onosproject.org/onos</connection> | ||
| 39 | - <developerConnection>scm:git:https://gerrit.onosproject.org/onos | ||
| 40 | - </developerConnection> | ||
| 41 | - <url>http://gerrit.onosproject.org/</url> | ||
| 42 | - </scm> | ||
| 43 | - | ||
| 44 | - <licenses> | ||
| 45 | - <license> | ||
| 46 | - <name>Apache License, Version 2.0</name> | ||
| 47 | - <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url> | ||
| 48 | - </license> | ||
| 49 | - </licenses> | ||
| 50 | - | ||
| 51 | - <properties> | ||
| 52 | - <!-- TODO: replace with final release version when it is out --> | ||
| 53 | - <catalyst.version>1.0.6</catalyst.version> | ||
| 54 | - <atomix.version>1.0.0-rc3</atomix.version> | ||
| 55 | - <copycat.version>1.0.0-rc6</copycat.version> | ||
| 56 | - </properties> | ||
| 57 | - | ||
| 58 | - <dependencies> | ||
| 59 | - <dependency> | ||
| 60 | - <groupId>io.atomix.catalyst</groupId> | ||
| 61 | - <artifactId>catalyst-transport</artifactId> | ||
| 62 | - <version>${catalyst.version}</version> | ||
| 63 | - </dependency> | ||
| 64 | - | ||
| 65 | - <dependency> | ||
| 66 | - <groupId>io.atomix.catalyst</groupId> | ||
| 67 | - <artifactId>catalyst-serializer</artifactId> | ||
| 68 | - <version>${catalyst.version}</version> | ||
| 69 | - </dependency> | ||
| 70 | - | ||
| 71 | - <dependency> | ||
| 72 | - <groupId>io.atomix</groupId> | ||
| 73 | - <artifactId>atomix</artifactId> | ||
| 74 | - <version>${atomix.version}</version> | ||
| 75 | - </dependency> | ||
| 76 | - | ||
| 77 | - <dependency> | ||
| 78 | - <groupId>io.atomix.copycat</groupId> | ||
| 79 | - <artifactId>copycat-client</artifactId> | ||
| 80 | - <version>${copycat.version}</version> | ||
| 81 | - </dependency> | ||
| 82 | - | ||
| 83 | - <dependency> | ||
| 84 | - <groupId>io.atomix.copycat</groupId> | ||
| 85 | - <artifactId>copycat-server</artifactId> | ||
| 86 | - <version>${copycat.version}</version> | ||
| 87 | - </dependency> | ||
| 88 | - | ||
| 89 | - </dependencies> | ||
| 90 | - | ||
| 91 | - <build> | ||
| 92 | - <plugins> | ||
| 93 | - <plugin> | ||
| 94 | - <groupId>org.apache.maven.plugins</groupId> | ||
| 95 | - <artifactId>maven-compiler-plugin</artifactId> | ||
| 96 | - <!-- TODO: update once following issue is fixed. --> | ||
| 97 | - <!-- https://jira.codehaus.org/browse/MCOMPILER-205 --> | ||
| 98 | - <version>2.5.1</version> | ||
| 99 | - <configuration> | ||
| 100 | - <source>1.8</source> | ||
| 101 | - <target>1.8</target> | ||
| 102 | - </configuration> | ||
| 103 | - </plugin> | ||
| 104 | - | ||
| 105 | - <plugin> | ||
| 106 | - <groupId>org.apache.maven.plugins</groupId> | ||
| 107 | - <artifactId>maven-shade-plugin</artifactId> | ||
| 108 | - <version>2.4.2</version> | ||
| 109 | - <configuration> | ||
| 110 | - <createSourcesJar>true</createSourcesJar> | ||
| 111 | - <artifactSet> | ||
| 112 | - <excludes> | ||
| 113 | - <!-- exclude OSGi-ready transitive dependencies --> | ||
| 114 | - <exclude>com.google.guava:guava</exclude> | ||
| 115 | - <exclude>com.esotericsoftware:*</exclude> | ||
| 116 | - <exclude>org.ow2.asm:asm</exclude> | ||
| 117 | - <exclude>org.objenesis:objenesis</exclude> | ||
| 118 | - <exclude>io.netty:*</exclude> | ||
| 119 | - <exclude>commons-io:commons-io</exclude> | ||
| 120 | - </excludes> | ||
| 121 | - </artifactSet> | ||
| 122 | - <filters> | ||
| 123 | - <filter> | ||
| 124 | - <artifact>io.atomix:atomix-all</artifact> | ||
| 125 | - <includes> | ||
| 126 | - <include>**</include> | ||
| 127 | - </includes> | ||
| 128 | - </filter> | ||
| 129 | - </filters> | ||
| 130 | - </configuration> | ||
| 131 | - <executions> | ||
| 132 | - <execution> | ||
| 133 | - <phase>package</phase> | ||
| 134 | - <goals> | ||
| 135 | - <goal>shade</goal> | ||
| 136 | - </goals> | ||
| 137 | - </execution> | ||
| 138 | - </executions> | ||
| 139 | - </plugin> | ||
| 140 | - <plugin> | ||
| 141 | - <groupId>org.apache.felix</groupId> | ||
| 142 | - <artifactId>maven-bundle-plugin</artifactId> | ||
| 143 | - <version>3.0.1</version> | ||
| 144 | - <extensions>true</extensions> | ||
| 145 | - <configuration> | ||
| 146 | - <instructions> | ||
| 147 | - <Export-Package> | ||
| 148 | - io.atomix.* | ||
| 149 | - </Export-Package> | ||
| 150 | - <Import-Package> | ||
| 151 | - !sun.nio.ch,!sun.misc,* | ||
| 152 | - </Import-Package> | ||
| 153 | - </instructions> | ||
| 154 | - </configuration> | ||
| 155 | - </plugin> | ||
| 156 | - </plugins> | ||
| 157 | - </build> | ||
| 158 | - | ||
| 159 | -</project> |
| 1 | -/* | ||
| 2 | - * Copyright 2016-present 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.onlab.atomix; | ||
| 17 | - | ||
| 18 | -/** | ||
| 19 | - * Empty class required to get the atomix module to build properly. | ||
| 20 | - * | ||
| 21 | - * NOTE Required for shade plugin to operate. | ||
| 22 | - */ | ||
| 23 | -public class AtomixShaded { | ||
| 24 | - | ||
| 25 | -} |
| ... | @@ -32,7 +32,6 @@ | ... | @@ -32,7 +32,6 @@ |
| 32 | <description>Domain agnostic ON.Lab utilities</description> | 32 | <description>Domain agnostic ON.Lab utilities</description> |
| 33 | 33 | ||
| 34 | <modules> | 34 | <modules> |
| 35 | - <module>atomix</module> | ||
| 36 | <module>junit</module> | 35 | <module>junit</module> |
| 37 | <module>misc</module> | 36 | <module>misc</module> |
| 38 | <module>yangutils</module> | 37 | <module>yangutils</module> | ... | ... |
-
Please register or login to post a comment