From 56e5ed53757f932a24204656c32427ee1e851f1a Mon Sep 17 00:00:00 2001 From: f1v3-dev Date: Thu, 30 Apr 2026 11:09:26 +0900 Subject: [PATCH] CLEANUP: Improve code clarity and consistency in AsyncArcusCommands - Rename `verifyBKeyRange` to `verifyBKeyTypesMatch` for clarity - Remove redundant `result.set(true)` and update Javadoc in flush - Avoid redundant `arcusClientSupplier.get()` calls in constructor - Rename private `get` and `gets` to `getPerNode` and `getsPerNode` for clarity --- .../spy/memcached/v2/AsyncArcusCommands.java | 48 +++++++------------ .../memcached/v2/AsyncArcusCommandsIF.java | 4 +- 2 files changed, 19 insertions(+), 33 deletions(-) diff --git a/src/main/java/net/spy/memcached/v2/AsyncArcusCommands.java b/src/main/java/net/spy/memcached/v2/AsyncArcusCommands.java index 38bbc144f..893722c05 100644 --- a/src/main/java/net/spy/memcached/v2/AsyncArcusCommands.java +++ b/src/main/java/net/spy/memcached/v2/AsyncArcusCommands.java @@ -122,9 +122,10 @@ public class AsyncArcusCommands implements AsyncArcusCommandsIF { @SuppressWarnings("unchecked") public AsyncArcusCommands(Supplier arcusClientSupplier) { - this.tc = (Transcoder) arcusClientSupplier.get().getTranscoder(); - this.tcForCollection = (Transcoder) arcusClientSupplier.get().getCollectionTranscoder(); - this.keyValidator = arcusClientSupplier.get().getKeyValidator(); + ArcusClient client = arcusClientSupplier.get(); + this.tc = (Transcoder) client.getTranscoder(); + this.tcForCollection = (Transcoder) client.getCollectionTranscoder(); + this.keyValidator = client.getKeyValidator(); this.arcusClientSupplier = arcusClientSupplier; } @@ -401,7 +402,8 @@ public ArcusFuture> multiGet(List keys) { for (Map.Entry> entry : arrangedKeys) { MemcachedNode node = entry.getKey(); List keyList = entry.getValue(); - CompletableFuture> future = get(client, node, keyList).toCompletableFuture(); + CompletableFuture> future = getPerNode(client, node, keyList) + .toCompletableFuture(); futureToKeys.put(future, keyList); futures.add(future); } @@ -423,14 +425,8 @@ public ArcusFuture> multiGet(List keys) { }); } - /** - * Use only in multiGet method. - * - * @param keyList key list to get from single node - * @return ArcusFuture with results - */ - private ArcusFuture> get(ArcusClient client, MemcachedNode node, - List keyList) { + private ArcusFuture> getPerNode(ArcusClient client, MemcachedNode node, + List keyList) { AbstractArcusResult> result = new AbstractArcusResult<>((new AtomicReference<>(new HashMap<>()))); @SuppressWarnings("unchecked") @@ -482,7 +478,6 @@ public void complete() { return future; } - public ArcusFuture incr(String key, int delta) { return mutate(Mutator.incr, key, delta, -1L, 0); } @@ -562,7 +557,7 @@ public ArcusFuture>> multiGets(List keys) { MemcachedNode node = entry.getKey(); List keyList = entry.getValue(); CompletableFuture>> future - = gets(client, node, keyList).toCompletableFuture(); + = getsPerNode(client, node, keyList).toCompletableFuture(); futureToKeys.put(future, keyList); futures.add(future); } @@ -583,14 +578,8 @@ public ArcusFuture>> multiGets(List keys) { }); } - /** - * Use only in multiGets method. - * - * @param keyList key list to get from single node - * @return ArcusFuture with results. - */ - private ArcusFuture>> gets(ArcusClient client, MemcachedNode node, - List keyList) { + private ArcusFuture>> getsPerNode(ArcusClient client, MemcachedNode node, + List keyList) { AbstractArcusResult>> result = new AbstractArcusResult<>(new AtomicReference<>(new HashMap<>())); @@ -640,7 +629,6 @@ public void complete() { return future; } - public ArcusFuture delete(String key) { AbstractArcusResult result = new AbstractArcusResult<>(new AtomicReference<>()); ArcusFutureImpl future = new ArcusFutureImpl<>(result); @@ -1030,7 +1018,7 @@ private static BTreeGet createBTreeGet(BKey bKey, BopGetArgs args) { } public ArcusFuture> bopGet(String key, BKey from, BKey to, BopGetArgs args) { - verifyBKeyRange(from, to); + verifyBKeyTypesMatch(from, to); AbstractArcusResult> result = new AbstractArcusResult<>(new AtomicReference<>(new BTreeElements<>(new ArrayList<>()))); @@ -1098,7 +1086,7 @@ public ArcusFuture>> bopMultiGet(List keys, BopGetArgs args) { keyValidator.validateKey(keys); keyValidator.checkDupKey(keys); - verifyBKeyRange(from, to); + verifyBKeyTypesMatch(from, to); verifyPositiveCountArg(args, ArcusClient.MAX_GETBULK_ELEMENT_COUNT); ArcusClient client = arcusClientSupplier.get(); @@ -1226,7 +1214,7 @@ public void gotElement(String key, int flags, Object bKey, byte[] eFlag, byte[] return future; } - private static void verifyBKeyRange(BKey from, BKey to) { + private static void verifyBKeyTypesMatch(BKey from, BKey to) { if (from.getType() != to.getType()) { throw new IllegalArgumentException("Two BKey types(from, to) must be the same."); } @@ -1445,7 +1433,7 @@ public ArcusFuture> bopSortMergeGet(List keys, BKey fro boolean unique, BopGetArgs args) { keyValidator.validateKey(keys); keyValidator.checkDupKey(keys); - verifyBKeyRange(from, to); + verifyBKeyTypesMatch(from, to); verifyPositiveCountArg(args, ArcusClient.MAX_SMGET_COUNT); ArcusClient client = arcusClientSupplier.get(); @@ -1633,7 +1621,7 @@ public ArcusFuture bopDelete(String key, BKey bKey, BopDeleteArgs args) } public ArcusFuture bopDelete(String key, BKey from, BKey to, BopDeleteArgs args) { - verifyBKeyRange(from, to); + verifyBKeyTypesMatch(from, to); BTreeDelete delete = new BTreeDelete(from.toString(), to.toString(), args.getCount(), args.getEFlagFilter(), args.isDropIfEmpty(), false); return collectionDelete(key, delete); @@ -1681,7 +1669,7 @@ public void complete() { } public ArcusFuture bopCount(String key, BKey from, BKey to, ElementFlagFilter eFlagFilter) { - verifyBKeyRange(from, to); + verifyBKeyTypesMatch(from, to); AbstractArcusResult result = new AbstractArcusResult<>(new AtomicReference<>()); ArcusFutureImpl future = new ArcusFutureImpl<>(result); @@ -2152,7 +2140,6 @@ public ArcusFuture flush(int delay) { public void receivedStatus(OperationStatus status) { switch (status.getStatusCode()) { case SUCCESS: - result.set(true); break; case CANCELLED: future.internalCancel(); @@ -2231,7 +2218,6 @@ public void complete() { futures.add(future); } - return new ArcusMultiFuture<>(futures, () -> { for (CompletableFuture future : futures) { if (!future.isCompletedExceptionally() && Boolean.TRUE.equals(future.join())) { diff --git a/src/main/java/net/spy/memcached/v2/AsyncArcusCommandsIF.java b/src/main/java/net/spy/memcached/v2/AsyncArcusCommandsIF.java index 64e750bcc..d78372595 100644 --- a/src/main/java/net/spy/memcached/v2/AsyncArcusCommandsIF.java +++ b/src/main/java/net/spy/memcached/v2/AsyncArcusCommandsIF.java @@ -821,7 +821,7 @@ ArcusFuture mopCreate(String key, ElementValueType type, /** * Flush all items from all servers immediately. * - * @return {@code true} if all servers flushed successfully, {@code false} otherwise + * @return always {@code true} */ ArcusFuture flush(); @@ -829,7 +829,7 @@ ArcusFuture mopCreate(String key, ElementValueType type, * Flush all items from all servers after a given delay. * * @param delay delay in seconds before flushing. (≥ -1) - * @return {@code true} if all servers flushed successfully, {@code false} otherwise + * @return always {@code true} */ ArcusFuture flush(int delay);