Search in sources :

Example 1 with Code

use of org.apache.bookkeeper.api.kv.result.Code in project bookkeeper by apache.

the class TableStoreUtilsTest method testHandleCause.

@Test
public void testHandleCause() {
    StatusCode[] protoCodes = new StatusCode[] { StatusCode.SUCCESS, StatusCode.INTERNAL_SERVER_ERROR, StatusCode.BAD_REQUEST, StatusCode.BAD_REQUEST, StatusCode.UNEXPECTED, StatusCode.BAD_REVISION, StatusCode.BAD_REVISION, StatusCode.KEY_NOT_FOUND, StatusCode.KEY_EXISTS };
    Code[] codes = new Code[] { Code.OK, Code.INTERNAL_ERROR, Code.INVALID_ARGUMENT, Code.ILLEGAL_OP, Code.UNEXPECTED, Code.BAD_REVISION, Code.SMALLER_REVISION, Code.KEY_NOT_FOUND, Code.KEY_EXISTS };
    for (int i = 0; i < codes.length; i++) {
        Code code = codes[i];
        MVCCStoreException exception = new MVCCStoreException(code, "test-" + code);
        assertEquals(protoCodes[i], handleCause(exception));
    }
}
Also used : MVCCStoreException(org.apache.bookkeeper.statelib.api.exceptions.MVCCStoreException) StatusCode(org.apache.bookkeeper.stream.proto.storage.StatusCode) Code(org.apache.bookkeeper.api.kv.result.Code) StatusCode(org.apache.bookkeeper.stream.proto.storage.StatusCode) Test(org.junit.Test)

Example 2 with Code

use of org.apache.bookkeeper.api.kv.result.Code in project bookkeeper by apache.

the class MVCCAsyncStore method rDelete.

@Override
default CompletableFuture<KeyValue<K, V>> rDelete(K k, long expectedRevision) {
    TxnOp<K, V> op = getOpFactory().newTxn().If(newCompareModRevision(CompareResult.EQUAL, k, expectedRevision)).Then(getOpFactory().newDelete(k, Options.deleteAndGet())).build();
    return txn(op).thenCompose(result -> {
        try {
            Code code = result.code();
            if (Code.OK == code && !result.isSuccess()) {
                code = Code.BAD_REVISION;
            }
            if (Code.OK == code) {
                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);
                } else {
                    return FutureUtils.value(prevKvs.get(0));
                }
            } else {
                return failWithCode(code, "Failed to rDelete key " + k + " (mod_rev=" + expectedRevision + ") to store " + name());
            }
        } finally {
            result.close();
        }
    });
}
Also used : KeyValue(org.apache.bookkeeper.api.kv.result.KeyValue) Code(org.apache.bookkeeper.api.kv.result.Code) DeleteResult(org.apache.bookkeeper.api.kv.result.DeleteResult) DeleteResult(org.apache.bookkeeper.api.kv.result.DeleteResult) Result(org.apache.bookkeeper.api.kv.result.Result) RangeResult(org.apache.bookkeeper.api.kv.result.RangeResult) CompareResult(org.apache.bookkeeper.api.kv.op.CompareResult)

Example 3 with Code

use of org.apache.bookkeeper.api.kv.result.Code in project bookkeeper by apache.

the class MVCCAsyncStore method vDelete.

@Override
default CompletableFuture<KeyValue<K, V>> vDelete(K k, long expectedVersion) {
    TxnOp<K, V> op = getOpFactory().newTxn().If(newCompareVersion(CompareResult.EQUAL, k, expectedVersion)).Then(getOpFactory().newDelete(k, Options.deleteAndGet())).build();
    return txn(op).thenCompose(result -> {
        try {
            Code code = result.code();
            if (Code.OK == code && !result.isSuccess()) {
                code = Code.BAD_REVISION;
            }
            if (Code.OK == code) {
                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);
                } else {
                    return FutureUtils.value(prevKvs.get(0));
                }
            } else {
                return failWithCode(code, "Failed to vDelete key " + k + " (version=" + expectedVersion + ") to store " + name());
            }
        } finally {
            result.close();
        }
    });
}
Also used : KeyValue(org.apache.bookkeeper.api.kv.result.KeyValue) Code(org.apache.bookkeeper.api.kv.result.Code) DeleteResult(org.apache.bookkeeper.api.kv.result.DeleteResult) DeleteResult(org.apache.bookkeeper.api.kv.result.DeleteResult) Result(org.apache.bookkeeper.api.kv.result.Result) RangeResult(org.apache.bookkeeper.api.kv.result.RangeResult) CompareResult(org.apache.bookkeeper.api.kv.op.CompareResult)

Aggregations

Code (org.apache.bookkeeper.api.kv.result.Code)3 CompareResult (org.apache.bookkeeper.api.kv.op.CompareResult)2 DeleteResult (org.apache.bookkeeper.api.kv.result.DeleteResult)2 KeyValue (org.apache.bookkeeper.api.kv.result.KeyValue)2 RangeResult (org.apache.bookkeeper.api.kv.result.RangeResult)2 Result (org.apache.bookkeeper.api.kv.result.Result)2 MVCCStoreException (org.apache.bookkeeper.statelib.api.exceptions.MVCCStoreException)1 StatusCode (org.apache.bookkeeper.stream.proto.storage.StatusCode)1 Test (org.junit.Test)1