Committed by
Gerrit Code Review
minor name changes and javadoc
Change-Id: I43a05d75392efad9ac004867027a31adcc18c6f5
Showing
8 changed files
with
106 additions
and
45 deletions
| ... | @@ -58,4 +58,12 @@ public interface AsyncAtomicCounter { | ... | @@ -58,4 +58,12 @@ public interface AsyncAtomicCounter { |
| 58 | * @return current value | 58 | * @return current value |
| 59 | */ | 59 | */ |
| 60 | CompletableFuture<Long> get(); | 60 | CompletableFuture<Long> get(); |
| 61 | + | ||
| 62 | + | ||
| 63 | + /** | ||
| 64 | + * Atomically sets the given value to the current value. | ||
| 65 | + * | ||
| 66 | + * @return future void | ||
| 67 | + */ | ||
| 68 | + CompletableFuture<Void> set(long value); | ||
| 61 | } | 69 | } | ... | ... |
| ... | @@ -51,6 +51,14 @@ public interface AtomicCounter { | ... | @@ -51,6 +51,14 @@ public interface AtomicCounter { |
| 51 | long addAndGet(long delta); | 51 | long addAndGet(long delta); |
| 52 | 52 | ||
| 53 | /** | 53 | /** |
| 54 | + * Atomically sets the given value to the current value. | ||
| 55 | + * | ||
| 56 | + * @param value the value to set | ||
| 57 | + */ | ||
| 58 | + void set(long value); | ||
| 59 | + | ||
| 60 | + | ||
| 61 | + /** | ||
| 54 | * Returns the current value of the counter without modifying it. | 62 | * Returns the current value of the counter without modifying it. |
| 55 | * | 63 | * |
| 56 | * @return current value | 64 | * @return current value | ... | ... |
| ... | @@ -48,6 +48,11 @@ public final class TestAtomicCounter implements AtomicCounter { | ... | @@ -48,6 +48,11 @@ public final class TestAtomicCounter implements AtomicCounter { |
| 48 | } | 48 | } |
| 49 | 49 | ||
| 50 | @Override | 50 | @Override |
| 51 | + public void set(long value) { | ||
| 52 | + this.value.set(value); | ||
| 53 | + } | ||
| 54 | + | ||
| 55 | + @Override | ||
| 51 | public long get() { | 56 | public long get() { |
| 52 | return value.get(); | 57 | return value.get(); |
| 53 | } | 58 | } | ... | ... |
| ... | @@ -45,6 +45,7 @@ public interface DatabaseProxy<K, V> { | ... | @@ -45,6 +45,7 @@ public interface DatabaseProxy<K, V> { |
| 45 | 45 | ||
| 46 | /** | 46 | /** |
| 47 | * Returns the number of entries in map. | 47 | * Returns the number of entries in map. |
| 48 | + * | ||
| 48 | * @param mapName map name | 49 | * @param mapName map name |
| 49 | * @return A completable future to be completed with the result once complete. | 50 | * @return A completable future to be completed with the result once complete. |
| 50 | */ | 51 | */ |
| ... | @@ -62,7 +63,7 @@ public interface DatabaseProxy<K, V> { | ... | @@ -62,7 +63,7 @@ public interface DatabaseProxy<K, V> { |
| 62 | * Checks whether the map contains a key. | 63 | * Checks whether the map contains a key. |
| 63 | * | 64 | * |
| 64 | * @param mapName map name | 65 | * @param mapName map name |
| 65 | - * @param key key to check. | 66 | + * @param key key to check. |
| 66 | * @return A completable future to be completed with the result once complete. | 67 | * @return A completable future to be completed with the result once complete. |
| 67 | */ | 68 | */ |
| 68 | CompletableFuture<Boolean> mapContainsKey(String mapName, K key); | 69 | CompletableFuture<Boolean> mapContainsKey(String mapName, K key); |
| ... | @@ -71,7 +72,7 @@ public interface DatabaseProxy<K, V> { | ... | @@ -71,7 +72,7 @@ public interface DatabaseProxy<K, V> { |
| 71 | * Checks whether the map contains a value. | 72 | * Checks whether the map contains a value. |
| 72 | * | 73 | * |
| 73 | * @param mapName map name | 74 | * @param mapName map name |
| 74 | - * @param value The value to check. | 75 | + * @param value The value to check. |
| 75 | * @return A completable future to be completed with the result once complete. | 76 | * @return A completable future to be completed with the result once complete. |
| 76 | */ | 77 | */ |
| 77 | CompletableFuture<Boolean> mapContainsValue(String mapName, V value); | 78 | CompletableFuture<Boolean> mapContainsValue(String mapName, V value); |
| ... | @@ -80,7 +81,7 @@ public interface DatabaseProxy<K, V> { | ... | @@ -80,7 +81,7 @@ public interface DatabaseProxy<K, V> { |
| 80 | * Gets a value from the map. | 81 | * Gets a value from the map. |
| 81 | * | 82 | * |
| 82 | * @param mapName map name | 83 | * @param mapName map name |
| 83 | - * @param key The key to get. | 84 | + * @param key The key to get. |
| 84 | * @return A completable future to be completed with the result once complete. | 85 | * @return A completable future to be completed with the result once complete. |
| 85 | */ | 86 | */ |
| 86 | CompletableFuture<Versioned<V>> mapGet(String mapName, K key); | 87 | CompletableFuture<Versioned<V>> mapGet(String mapName, K key); |
| ... | @@ -88,11 +89,11 @@ public interface DatabaseProxy<K, V> { | ... | @@ -88,11 +89,11 @@ public interface DatabaseProxy<K, V> { |
| 88 | /** | 89 | /** |
| 89 | * Updates the map. | 90 | * Updates the map. |
| 90 | * | 91 | * |
| 91 | - * @param mapName map name | 92 | + * @param mapName map name |
| 92 | - * @param key The key to set | 93 | + * @param key The key to set |
| 93 | - * @param valueMatch match for checking existing value | 94 | + * @param valueMatch match for checking existing value |
| 94 | - * @param versionMatch match for checking existing version | 95 | + * @param versionMatch match for checking existing version |
| 95 | - * @param value new value | 96 | + * @param value new value |
| 96 | * @return A completable future to be completed with the result once complete | 97 | * @return A completable future to be completed with the result once complete |
| 97 | */ | 98 | */ |
| 98 | CompletableFuture<Result<UpdateResult<K, V>>> mapUpdate( | 99 | CompletableFuture<Result<UpdateResult<K, V>>> mapUpdate( |
| ... | @@ -130,11 +131,11 @@ public interface DatabaseProxy<K, V> { | ... | @@ -130,11 +131,11 @@ public interface DatabaseProxy<K, V> { |
| 130 | */ | 131 | */ |
| 131 | CompletableFuture<Set<Map.Entry<K, Versioned<V>>>> mapEntrySet(String mapName); | 132 | CompletableFuture<Set<Map.Entry<K, Versioned<V>>>> mapEntrySet(String mapName); |
| 132 | 133 | ||
| 133 | - /** | 134 | + /** |
| 134 | * Atomically add the given value to current value of the specified counter. | 135 | * Atomically add the given value to current value of the specified counter. |
| 135 | * | 136 | * |
| 136 | * @param counterName counter name | 137 | * @param counterName counter name |
| 137 | - * @param delta value to add | 138 | + * @param delta value to add |
| 138 | * @return updated value | 139 | * @return updated value |
| 139 | */ | 140 | */ |
| 140 | CompletableFuture<Long> counterAddAndGet(String counterName, long delta); | 141 | CompletableFuture<Long> counterAddAndGet(String counterName, long delta); |
| ... | @@ -143,11 +144,21 @@ public interface DatabaseProxy<K, V> { | ... | @@ -143,11 +144,21 @@ public interface DatabaseProxy<K, V> { |
| 143 | * Atomically add the given value to current value of the specified counter. | 144 | * Atomically add the given value to current value of the specified counter. |
| 144 | * | 145 | * |
| 145 | * @param counterName counter name | 146 | * @param counterName counter name |
| 146 | - * @param delta value to add | 147 | + * @param delta value to add |
| 147 | * @return previous value | 148 | * @return previous value |
| 148 | */ | 149 | */ |
| 149 | CompletableFuture<Long> counterGetAndAdd(String counterName, long delta); | 150 | CompletableFuture<Long> counterGetAndAdd(String counterName, long delta); |
| 150 | 151 | ||
| 152 | + | ||
| 153 | + /** | ||
| 154 | + * Atomically sets the given value to current value of the specified counter. | ||
| 155 | + * | ||
| 156 | + * @param counterName counter name | ||
| 157 | + * @param value value to set | ||
| 158 | + * @return void future | ||
| 159 | + */ | ||
| 160 | + CompletableFuture<Void> counterSet(String counterName, long value); | ||
| 161 | + | ||
| 151 | /** | 162 | /** |
| 152 | * Returns the current value of the specified atomic counter. | 163 | * Returns the current value of the specified atomic counter. |
| 153 | * | 164 | * |
| ... | @@ -158,6 +169,7 @@ public interface DatabaseProxy<K, V> { | ... | @@ -158,6 +169,7 @@ public interface DatabaseProxy<K, V> { |
| 158 | 169 | ||
| 159 | /** | 170 | /** |
| 160 | * Returns the size of queue. | 171 | * Returns the size of queue. |
| 172 | + * | ||
| 161 | * @param queueName queue name | 173 | * @param queueName queue name |
| 162 | * @return queue size | 174 | * @return queue size |
| 163 | */ | 175 | */ |
| ... | @@ -165,14 +177,16 @@ public interface DatabaseProxy<K, V> { | ... | @@ -165,14 +177,16 @@ public interface DatabaseProxy<K, V> { |
| 165 | 177 | ||
| 166 | /** | 178 | /** |
| 167 | * Inserts an entry into the queue. | 179 | * Inserts an entry into the queue. |
| 180 | + * | ||
| 168 | * @param queueName queue name | 181 | * @param queueName queue name |
| 169 | - * @param entry queue entry | 182 | + * @param entry queue entry |
| 170 | * @return void future | 183 | * @return void future |
| 171 | */ | 184 | */ |
| 172 | CompletableFuture<Void> queuePush(String queueName, byte[] entry); | 185 | CompletableFuture<Void> queuePush(String queueName, byte[] entry); |
| 173 | 186 | ||
| 174 | /** | 187 | /** |
| 175 | * Removes an entry from the queue if the queue is non-empty. | 188 | * Removes an entry from the queue if the queue is non-empty. |
| 189 | + * | ||
| 176 | * @param queueName queue name | 190 | * @param queueName queue name |
| 177 | * @return entry future. Can be completed with null if queue is empty | 191 | * @return entry future. Can be completed with null if queue is empty |
| 178 | */ | 192 | */ |
| ... | @@ -180,6 +194,7 @@ public interface DatabaseProxy<K, V> { | ... | @@ -180,6 +194,7 @@ public interface DatabaseProxy<K, V> { |
| 180 | 194 | ||
| 181 | /** | 195 | /** |
| 182 | * Returns but does not remove an entry from the queue. | 196 | * Returns but does not remove an entry from the queue. |
| 197 | + * | ||
| 183 | * @param queueName queue name | 198 | * @param queueName queue name |
| 184 | * @return entry. Can be null if queue is empty | 199 | * @return entry. Can be null if queue is empty |
| 185 | */ | 200 | */ | ... | ... |
| ... | @@ -18,6 +18,7 @@ package org.onosproject.store.consistent.impl; | ... | @@ -18,6 +18,7 @@ package org.onosproject.store.consistent.impl; |
| 18 | import org.onosproject.store.service.AsyncAtomicCounter; | 18 | import org.onosproject.store.service.AsyncAtomicCounter; |
| 19 | 19 | ||
| 20 | import java.util.concurrent.CompletableFuture; | 20 | import java.util.concurrent.CompletableFuture; |
| 21 | + | ||
| 21 | import static com.google.common.base.Preconditions.checkNotNull; | 22 | import static com.google.common.base.Preconditions.checkNotNull; |
| 22 | 23 | ||
| 23 | /** | 24 | /** |
| ... | @@ -38,6 +39,7 @@ public class DefaultAsyncAtomicCounter implements AsyncAtomicCounter { | ... | @@ -38,6 +39,7 @@ public class DefaultAsyncAtomicCounter implements AsyncAtomicCounter { |
| 38 | private static final String GET_AND_ADD = "getAndAdd"; | 39 | private static final String GET_AND_ADD = "getAndAdd"; |
| 39 | private static final String ADD_AND_GET = "addAndGet"; | 40 | private static final String ADD_AND_GET = "addAndGet"; |
| 40 | private static final String GET = "get"; | 41 | private static final String GET = "get"; |
| 42 | + private static final String SET = "set"; | ||
| 41 | 43 | ||
| 42 | public DefaultAsyncAtomicCounter(String name, | 44 | public DefaultAsyncAtomicCounter(String name, |
| 43 | Database database, | 45 | Database database, |
| ... | @@ -72,13 +74,20 @@ public class DefaultAsyncAtomicCounter implements AsyncAtomicCounter { | ... | @@ -72,13 +74,20 @@ public class DefaultAsyncAtomicCounter implements AsyncAtomicCounter { |
| 72 | public CompletableFuture<Long> getAndAdd(long delta) { | 74 | public CompletableFuture<Long> getAndAdd(long delta) { |
| 73 | final MeteringAgent.Context timer = monitor.startTimer(GET_AND_ADD); | 75 | final MeteringAgent.Context timer = monitor.startTimer(GET_AND_ADD); |
| 74 | return database.counterGetAndAdd(name, delta) | 76 | return database.counterGetAndAdd(name, delta) |
| 75 | - .whenComplete((r, e) -> timer.stop(e)); | 77 | + .whenComplete((r, e) -> timer.stop(e)); |
| 76 | } | 78 | } |
| 77 | 79 | ||
| 78 | @Override | 80 | @Override |
| 79 | public CompletableFuture<Long> addAndGet(long delta) { | 81 | public CompletableFuture<Long> addAndGet(long delta) { |
| 80 | final MeteringAgent.Context timer = monitor.startTimer(ADD_AND_GET); | 82 | final MeteringAgent.Context timer = monitor.startTimer(ADD_AND_GET); |
| 81 | return database.counterAddAndGet(name, delta) | 83 | return database.counterAddAndGet(name, delta) |
| 82 | - .whenComplete((r, e) -> timer.stop(e)); | 84 | + .whenComplete((r, e) -> timer.stop(e)); |
| 85 | + } | ||
| 86 | + | ||
| 87 | + @Override | ||
| 88 | + public CompletableFuture<Void> set(long value) { | ||
| 89 | + final MeteringAgent.Context timer = monitor.startTimer(SET); | ||
| 90 | + return database.counterSet(name, value) | ||
| 91 | + .whenComplete((r, e) -> timer.stop(e)); | ||
| 83 | } | 92 | } |
| 84 | } | 93 | } | ... | ... |
| ... | @@ -63,6 +63,11 @@ public class DefaultAtomicCounter implements AtomicCounter { | ... | @@ -63,6 +63,11 @@ public class DefaultAtomicCounter implements AtomicCounter { |
| 63 | } | 63 | } |
| 64 | 64 | ||
| 65 | @Override | 65 | @Override |
| 66 | + public void set(long value) { | ||
| 67 | + complete(asyncCounter.set(value)); | ||
| 68 | + } | ||
| 69 | + | ||
| 70 | + @Override | ||
| 66 | public long get() { | 71 | public long get() { |
| 67 | return complete(asyncCounter.get()); | 72 | return complete(asyncCounter.get()); |
| 68 | } | 73 | } | ... | ... |
| ... | @@ -44,13 +44,13 @@ public class DefaultDatabase extends AbstractResource<Database> implements Datab | ... | @@ -44,13 +44,13 @@ public class DefaultDatabase extends AbstractResource<Database> implements Datab |
| 44 | private final Set<Consumer<StateMachineUpdate>> consumers = Sets.newCopyOnWriteArraySet(); | 44 | private final Set<Consumer<StateMachineUpdate>> consumers = Sets.newCopyOnWriteArraySet(); |
| 45 | private final TriConsumer<String, Object, Object> watcher = new InternalStateMachineWatcher(); | 45 | private final TriConsumer<String, Object, Object> watcher = new InternalStateMachineWatcher(); |
| 46 | 46 | ||
| 47 | - @SuppressWarnings({ "unchecked", "rawtypes" }) | 47 | + @SuppressWarnings({"unchecked", "rawtypes"}) |
| 48 | public DefaultDatabase(ResourceManager context) { | 48 | public DefaultDatabase(ResourceManager context) { |
| 49 | super(context); | 49 | super(context); |
| 50 | this.stateMachine = new DefaultStateMachine(context, | 50 | this.stateMachine = new DefaultStateMachine(context, |
| 51 | - DatabaseState.class, | 51 | + DatabaseState.class, |
| 52 | - DefaultDatabaseState.class, | 52 | + DefaultDatabaseState.class, |
| 53 | - DefaultDatabase.class.getClassLoader()); | 53 | + DefaultDatabase.class.getClassLoader()); |
| 54 | this.stateMachine.addStartupTask(() -> { | 54 | this.stateMachine.addStartupTask(() -> { |
| 55 | stateMachine.registerWatcher(watcher); | 55 | stateMachine.registerWatcher(watcher); |
| 56 | return CompletableFuture.completedFuture(null); | 56 | return CompletableFuture.completedFuture(null); |
| ... | @@ -66,7 +66,7 @@ public class DefaultDatabase extends AbstractResource<Database> implements Datab | ... | @@ -66,7 +66,7 @@ public class DefaultDatabase extends AbstractResource<Database> implements Datab |
| 66 | * return the completed future result. | 66 | * return the completed future result. |
| 67 | * | 67 | * |
| 68 | * @param supplier The supplier to call if the database is open. | 68 | * @param supplier The supplier to call if the database is open. |
| 69 | - * @param <T> The future result type. | 69 | + * @param <T> The future result type. |
| 70 | * @return A completable future that if this database is closed is immediately failed. | 70 | * @return A completable future that if this database is closed is immediately failed. |
| 71 | */ | 71 | */ |
| 72 | protected <T> CompletableFuture<T> checkOpen(Supplier<CompletableFuture<T>> supplier) { | 72 | protected <T> CompletableFuture<T> checkOpen(Supplier<CompletableFuture<T>> supplier) { |
| ... | @@ -153,6 +153,11 @@ public class DefaultDatabase extends AbstractResource<Database> implements Datab | ... | @@ -153,6 +153,11 @@ public class DefaultDatabase extends AbstractResource<Database> implements Datab |
| 153 | } | 153 | } |
| 154 | 154 | ||
| 155 | @Override | 155 | @Override |
| 156 | + public CompletableFuture<Void> counterSet(String counterName, long value) { | ||
| 157 | + return checkOpen(() -> proxy.counterSet(counterName, value)); | ||
| 158 | + } | ||
| 159 | + | ||
| 160 | + @Override | ||
| 156 | public CompletableFuture<Long> queueSize(String queueName) { | 161 | public CompletableFuture<Long> queueSize(String queueName) { |
| 157 | return checkOpen(() -> proxy.queueSize(queueName)); | 162 | return checkOpen(() -> proxy.queueSize(queueName)); |
| 158 | } | 163 | } | ... | ... |
| ... | @@ -100,10 +100,10 @@ public class PartitionedDatabase implements Database { | ... | @@ -100,10 +100,10 @@ public class PartitionedDatabase implements Database { |
| 100 | return CompletableFuture.allOf(partitions | 100 | return CompletableFuture.allOf(partitions |
| 101 | .stream() | 101 | .stream() |
| 102 | .map(db -> db.counters() | 102 | .map(db -> db.counters() |
| 103 | - .thenApply(m -> { | 103 | + .thenApply(m -> { |
| 104 | - counters.putAll(m); | 104 | + counters.putAll(m); |
| 105 | - return null; | 105 | + return null; |
| 106 | - })) | 106 | + })) |
| 107 | .toArray(CompletableFuture[]::new)) | 107 | .toArray(CompletableFuture[]::new)) |
| 108 | .thenApply(v -> counters); | 108 | .thenApply(v -> counters); |
| 109 | } | 109 | } |
| ... | @@ -113,9 +113,9 @@ public class PartitionedDatabase implements Database { | ... | @@ -113,9 +113,9 @@ public class PartitionedDatabase implements Database { |
| 113 | checkState(isOpen.get(), DB_NOT_OPEN); | 113 | checkState(isOpen.get(), DB_NOT_OPEN); |
| 114 | AtomicInteger totalSize = new AtomicInteger(0); | 114 | AtomicInteger totalSize = new AtomicInteger(0); |
| 115 | return CompletableFuture.allOf(partitions | 115 | return CompletableFuture.allOf(partitions |
| 116 | - .stream() | 116 | + .stream() |
| 117 | - .map(p -> p.mapSize(mapName).thenApply(totalSize::addAndGet)) | 117 | + .map(p -> p.mapSize(mapName).thenApply(totalSize::addAndGet)) |
| 118 | - .toArray(CompletableFuture[]::new)) | 118 | + .toArray(CompletableFuture[]::new)) |
| 119 | .thenApply(v -> totalSize.get()); | 119 | .thenApply(v -> totalSize.get()); |
| 120 | } | 120 | } |
| 121 | 121 | ||
| ... | @@ -136,10 +136,10 @@ public class PartitionedDatabase implements Database { | ... | @@ -136,10 +136,10 @@ public class PartitionedDatabase implements Database { |
| 136 | checkState(isOpen.get(), DB_NOT_OPEN); | 136 | checkState(isOpen.get(), DB_NOT_OPEN); |
| 137 | AtomicBoolean containsValue = new AtomicBoolean(false); | 137 | AtomicBoolean containsValue = new AtomicBoolean(false); |
| 138 | return CompletableFuture.allOf(partitions | 138 | return CompletableFuture.allOf(partitions |
| 139 | - .stream() | 139 | + .stream() |
| 140 | - .map(p -> p.mapContainsValue(mapName, value) | 140 | + .map(p -> p.mapContainsValue(mapName, value) |
| 141 | - .thenApply(v -> containsValue.compareAndSet(false, v))) | 141 | + .thenApply(v -> containsValue.compareAndSet(false, v))) |
| 142 | - .toArray(CompletableFuture[]::new)) | 142 | + .toArray(CompletableFuture[]::new)) |
| 143 | .thenApply(v -> containsValue.get()); | 143 | .thenApply(v -> containsValue.get()); |
| 144 | } | 144 | } |
| 145 | 145 | ||
| ... | @@ -196,9 +196,9 @@ public class PartitionedDatabase implements Database { | ... | @@ -196,9 +196,9 @@ public class PartitionedDatabase implements Database { |
| 196 | checkState(isOpen.get(), DB_NOT_OPEN); | 196 | checkState(isOpen.get(), DB_NOT_OPEN); |
| 197 | Set<Entry<String, Versioned<byte[]>>> entrySet = Sets.newConcurrentHashSet(); | 197 | Set<Entry<String, Versioned<byte[]>>> entrySet = Sets.newConcurrentHashSet(); |
| 198 | return CompletableFuture.allOf(partitions | 198 | return CompletableFuture.allOf(partitions |
| 199 | - .stream() | 199 | + .stream() |
| 200 | - .map(p -> p.mapEntrySet(mapName).thenApply(entrySet::addAll)) | 200 | + .map(p -> p.mapEntrySet(mapName).thenApply(entrySet::addAll)) |
| 201 | - .toArray(CompletableFuture[]::new)) | 201 | + .toArray(CompletableFuture[]::new)) |
| 202 | .thenApply(v -> entrySet); | 202 | .thenApply(v -> entrySet); |
| 203 | } | 203 | } |
| 204 | 204 | ||
| ... | @@ -220,6 +220,11 @@ public class PartitionedDatabase implements Database { | ... | @@ -220,6 +220,11 @@ public class PartitionedDatabase implements Database { |
| 220 | return partitioner.getPartition(counterName, counterName).counterGetAndAdd(counterName, delta); | 220 | return partitioner.getPartition(counterName, counterName).counterGetAndAdd(counterName, delta); |
| 221 | } | 221 | } |
| 222 | 222 | ||
| 223 | + @Override | ||
| 224 | + public CompletableFuture<Void> counterSet(String counterName, long value) { | ||
| 225 | + checkState(isOpen.get(), DB_NOT_OPEN); | ||
| 226 | + return partitioner.getPartition(counterName, counterName).counterSet(counterName, value); | ||
| 227 | + } | ||
| 223 | 228 | ||
| 224 | @Override | 229 | @Override |
| 225 | public CompletableFuture<Long> queueSize(String queueName) { | 230 | public CompletableFuture<Long> queueSize(String queueName) { |
| ... | @@ -268,8 +273,8 @@ public class PartitionedDatabase implements Database { | ... | @@ -268,8 +273,8 @@ public class PartitionedDatabase implements Database { |
| 268 | AtomicBoolean status = new AtomicBoolean(true); | 273 | AtomicBoolean status = new AtomicBoolean(true); |
| 269 | return CompletableFuture.allOf(subTransactions.entrySet() | 274 | return CompletableFuture.allOf(subTransactions.entrySet() |
| 270 | .stream() | 275 | .stream() |
| 271 | - .map(entry -> entry | 276 | + .map(entry -> entry |
| 272 | - .getKey() | 277 | + .getKey() |
| 273 | .prepare(entry.getValue()) | 278 | .prepare(entry.getValue()) |
| 274 | .thenApply(v -> status.compareAndSet(true, v))) | 279 | .thenApply(v -> status.compareAndSet(true, v))) |
| 275 | .toArray(CompletableFuture[]::new)) | 280 | .toArray(CompletableFuture[]::new)) |
| ... | @@ -282,15 +287,15 @@ public class PartitionedDatabase implements Database { | ... | @@ -282,15 +287,15 @@ public class PartitionedDatabase implements Database { |
| 282 | AtomicBoolean success = new AtomicBoolean(true); | 287 | AtomicBoolean success = new AtomicBoolean(true); |
| 283 | List<UpdateResult<String, byte[]>> allUpdates = Lists.newArrayList(); | 288 | List<UpdateResult<String, byte[]>> allUpdates = Lists.newArrayList(); |
| 284 | return CompletableFuture.allOf(subTransactions.entrySet() | 289 | return CompletableFuture.allOf(subTransactions.entrySet() |
| 285 | - .stream() | 290 | + .stream() |
| 286 | - .map(entry -> entry.getKey().commit(entry.getValue()) | 291 | + .map(entry -> entry.getKey().commit(entry.getValue()) |
| 287 | - .thenAccept(response -> { | 292 | + .thenAccept(response -> { |
| 288 | - success.set(success.get() && response.success()); | 293 | + success.set(success.get() && response.success()); |
| 289 | - if (success.get()) { | 294 | + if (success.get()) { |
| 290 | - allUpdates.addAll(response.updates()); | 295 | + allUpdates.addAll(response.updates()); |
| 291 | - } | 296 | + } |
| 292 | - })) | 297 | + })) |
| 293 | - .toArray(CompletableFuture[]::new)) | 298 | + .toArray(CompletableFuture[]::new)) |
| 294 | .thenApply(v -> success.get() ? | 299 | .thenApply(v -> success.get() ? |
| 295 | CommitResponse.success(allUpdates) : CommitResponse.failure()); | 300 | CommitResponse.success(allUpdates) : CommitResponse.failure()); |
| 296 | } | 301 | } |
| ... | @@ -301,7 +306,7 @@ public class PartitionedDatabase implements Database { | ... | @@ -301,7 +306,7 @@ public class PartitionedDatabase implements Database { |
| 301 | return CompletableFuture.allOf(subTransactions.entrySet() | 306 | return CompletableFuture.allOf(subTransactions.entrySet() |
| 302 | .stream() | 307 | .stream() |
| 303 | .map(entry -> entry.getKey().rollback(entry.getValue())) | 308 | .map(entry -> entry.getKey().rollback(entry.getValue())) |
| 304 | - .toArray(CompletableFuture[]::new)) | 309 | + .toArray(CompletableFuture[]::new)) |
| 305 | .thenApply(v -> true); | 310 | .thenApply(v -> true); |
| 306 | } | 311 | } |
| 307 | 312 | ||
| ... | @@ -384,3 +389,4 @@ public class PartitionedDatabase implements Database { | ... | @@ -384,3 +389,4 @@ public class PartitionedDatabase implements Database { |
| 384 | partitions.forEach(p -> p.unregisterConsumer(consumer)); | 389 | partitions.forEach(p -> p.unregisterConsumer(consumer)); |
| 385 | } | 390 | } |
| 386 | } | 391 | } |
| 392 | + | ... | ... |
-
Please register or login to post a comment