default CompletableFuture<List<KeyValue<K, V>>> deleteRange(K pKey, K lStartKey, K lEndKey) { DeleteOption<K> option = opFactory().optionFactory().newDeleteOption() .prevKv(true) .endKey(lEndKey) .build(); return delete(pKey, lStartKey, option) .thenApply(result -> { try { return result.getPrevKvsAndClear(); } finally { result.close(); } }) .whenComplete((v, cause) -> option.close()); }
default CompletableFuture<KeyValue<K, V>> rDelete(K key, long expectedRevision) { Txn<K, V> txn = txn(key); txn .If( opFactory().compareModRevision(CompareResult.EQUAL, key, expectedRevision)) .Then( opFactory().newDelete( key, Options.deleteAndGet())); return txn.commit() .thenCompose(result -> { try { if (result.isSuccess()) { DeleteResult<K, V> deleteResult = (DeleteResult<K, V>) result.results().get(0); if (deleteResult.prevKvs().isEmpty()) { return FutureUtils.value(null); } else { List<KeyValue<K, V>> prevKvs = deleteResult.getPrevKvsAndClear(); return FutureUtils.value(prevKvs.get(0)); } } else { return FutureUtils.exception( new KvApiException(Code.BAD_REVISION, "Failed to rDelete key " + key + " (mod_rev = " + expectedRevision + ")")); } } finally { result.close(); } }); }
default CompletableFuture<KeyValue<K, V>> rDelete(K pKey, K lKey, long expectedRevision) { Txn<K, V> txn = txn(pKey); txn .If( opFactory().compareModRevision(CompareResult.EQUAL, lKey, expectedRevision)) .Then( opFactory().newDelete( lKey, Options.deleteAndGet())); return txn.commit() .thenCompose(result -> { try { if (result.isSuccess()) { DeleteResult<K, V> deleteResult = (DeleteResult<K, V>) result.results().get(0); if (deleteResult.prevKvs().isEmpty()) { return FutureUtils.value(null); } else { List<KeyValue<K, V>> prevKvs = deleteResult.getPrevKvsAndClear(); return FutureUtils.value(prevKvs.get(0)); } } else { return FutureUtils.exception( new KvApiException(Code.BAD_REVISION, "Failed to rDelete key " + lKey + " (mod_rev = " + expectedRevision + ")")); } } finally { result.close(); } }); }
default CompletableFuture<KeyValue<K, V>> vDelete(K key, long expectedVersion) { Txn<K, V> txn = txn(key); txn .If( opFactory().compareVersion(CompareResult.EQUAL, key, expectedVersion)) .Then( opFactory().newDelete( key, Options.deleteAndGet())); return txn.commit() .thenCompose(result -> { try { if (result.isSuccess()) { DeleteResult<K, V> deleteResult = (DeleteResult<K, V>) result.results().get(0); if (deleteResult.prevKvs().isEmpty()) { return FutureUtils.value(null); } else { List<KeyValue<K, V>> prevKvs = deleteResult.getPrevKvsAndClear(); return FutureUtils.value(prevKvs.get(0)); } } else { return FutureUtils.exception( new KvApiException(Code.BAD_REVISION, "Failed to vDelete key " + key + " (version = " + expectedVersion + ")")); } } finally { result.close(); } }); }
default CompletableFuture<KeyValue<K, V>> vDelete(K pKey, K lKey, long expectedVersion) { Txn<K, V> txn = txn(pKey); txn .If( opFactory().compareVersion(CompareResult.EQUAL, lKey, expectedVersion)) .Then( opFactory().newDelete( lKey, Options.deleteAndGet())); return txn.commit() .thenCompose(result -> { try { if (result.isSuccess()) { DeleteResult<K, V> deleteResult = (DeleteResult<K, V>) result.results().get(0); if (deleteResult.prevKvs().isEmpty()) { return FutureUtils.value(null); } else { List<KeyValue<K, V>> prevKvs = deleteResult.getPrevKvsAndClear(); return FutureUtils.value(prevKvs.get(0)); } } else { return FutureUtils.exception( new KvApiException(Code.BAD_REVISION, "Failed to vDelete key " + lKey + " (version = " + expectedVersion + ")")); } } finally { result.close(); } }); }
List<Result<K, V>> subResults = result.results(); DeleteResult<K, V> deleteResult = (DeleteResult<K, V>) subResults.get(0); List<KeyValue<K, V>> prevKvs = deleteResult.getPrevKvsAndClear(); if (prevKvs.isEmpty()) { return FutureUtils.value(null);
List<Result<K, V>> subResults = result.results(); DeleteResult<K, V> deleteResult = (DeleteResult<K, V>) subResults.get(0); List<KeyValue<K, V>> prevKvs = deleteResult.getPrevKvsAndClear(); if (prevKvs.isEmpty()) { return FutureUtils.value(null);
@Override default CompletableFuture<List<KeyValue<K, V>>> deleteRange(K key, K endKey) { DeleteOp<K, V> op = getOpFactory().newDelete( key, getOpFactory().optionFactory().newDeleteOption() .endKey(endKey) .prevKv(true) .build()); return delete(op).thenCompose(result -> { try { if (Code.OK == result.code()) { List<KeyValue<K, V>> prevKvs = result.getPrevKvsAndClear(); return FutureUtils.value(prevKvs); } else { return failWithCode(result.code(), "Fail to delete key range [" + key + ", " + endKey + "] from store " + name()); } } finally { result.close(); } }); }