Search in sources :

Example 1 with StreamConfiguration

use of org.apache.bookkeeper.stream.proto.StreamConfiguration in project bookkeeper by apache.

the class StorageAdminClientTest method testStreamAPI.

@Test
public void testStreamAPI() throws Exception {
    // Create a namespace
    String nsName = testName.getMethodName() + "_ns";
    NamespaceConfiguration colConf = NamespaceConfiguration.newBuilder().setDefaultStreamConf(DEFAULT_STREAM_CONF).build();
    NamespaceProperties colProps = FutureUtils.result(adminClient.createNamespace(nsName, colConf));
    assertEquals(nsName, colProps.getNamespaceName());
    assertEquals(colConf.getDefaultStreamConf(), colProps.getDefaultStreamConf());
    // Create a stream
    String streamName = testName.getMethodName() + "_stream";
    StreamConfiguration streamConf = StreamConfiguration.newBuilder(DEFAULT_STREAM_CONF).build();
    StreamProperties streamProps = FutureUtils.result(adminClient.createStream(nsName, streamName, streamConf));
    assertEquals(streamName, streamProps.getStreamName());
    assertEquals(StreamConfiguration.newBuilder(streamConf).setBackendServiceUrl(defaultBackendUri.toString()).build(), streamProps.getStreamConf());
    // create a duplicated stream
    try {
        FutureUtils.result(adminClient.createStream(nsName, streamName, streamConf));
        fail("Should fail on creation if stream " + streamName + " already exists");
    } catch (StreamExistsException cee) {
    // expected
    } catch (ClientException ce) {
        // TODO: currently it throws InternalServerError for stream exists case
        assertTrue(ce.getMessage().endsWith("code = " + StatusCode.INTERNAL_SERVER_ERROR));
    }
    String notFoundStreamName = testName.getMethodName() + "_notfound";
    // get a not-found stream
    try {
        FutureUtils.result(adminClient.getStream(nsName, notFoundStreamName));
        fail("Should fail on get if stream " + notFoundStreamName + " doesn't exist");
    } catch (StreamNotFoundException cnfe) {
    // expected
    }
    // delete a not-found stream
    try {
        FutureUtils.result(adminClient.deleteStream(nsName, notFoundStreamName));
        fail("Should fail on delete if stream " + notFoundStreamName + " doesn't exist");
    } catch (StreamNotFoundException cnfe) {
    // expected
    }
    // get an existing stream
    StreamProperties getStreamProps = FutureUtils.result(adminClient.getStream(nsName, streamName));
    assertEquals(streamProps, getStreamProps);
    // delete an existing stream
    Boolean deleted = FutureUtils.result(adminClient.deleteStream(nsName, streamName));
    assertTrue(deleted);
    // the stream should not exist after deleted.
    try {
        FutureUtils.result(adminClient.getStream(nsName, streamName));
        fail("Should fail on get if stream " + nsName + " doesn't exist");
    } catch (StreamNotFoundException cnfe) {
    // expected
    }
}
Also used : NamespaceProperties(org.apache.bookkeeper.stream.proto.NamespaceProperties) StreamConfiguration(org.apache.bookkeeper.stream.proto.StreamConfiguration) StreamProperties(org.apache.bookkeeper.stream.proto.StreamProperties) StreamNotFoundException(org.apache.bookkeeper.clients.exceptions.StreamNotFoundException) NamespaceConfiguration(org.apache.bookkeeper.stream.proto.NamespaceConfiguration) StreamExistsException(org.apache.bookkeeper.clients.exceptions.StreamExistsException) ClientException(org.apache.bookkeeper.clients.exceptions.ClientException) Test(org.junit.Test)

Example 2 with StreamConfiguration

use of org.apache.bookkeeper.stream.proto.StreamConfiguration in project bookkeeper by apache.

the class RootRangeStoreImpl method executeCreateStreamTxn.

private CompletableFuture<CreateStreamResponse> executeCreateStreamTxn(long nsId, String streamName, StreamConfiguration streamConf, long currentStreamId, long currentStreamIdRev) {
    long streamId;
    if (currentStreamId < 0) {
        streamId = MIN_DATA_STREAM_ID;
    } else {
        streamId = currentStreamId + 1;
    }
    long scId = placementPolicy.placeStreamRange(streamId, 0L);
    StreamConfiguration newStreamConf = streamConf;
    // no backend service url is provided, use the default service url
    if (isBlank(streamConf.getBackendServiceUrl())) {
        newStreamConf = StreamConfiguration.newBuilder(streamConf).setBackendServiceUrl(defaultServiceUri.toString()).build();
    }
    StreamProperties streamProps = StreamProperties.newBuilder().setStreamId(streamId).setStreamName(streamName).setStorageContainerId(scId).setStreamConf(newStreamConf).build();
    byte[] nsIdKey = getNamespaceIdKey(nsId);
    byte[] streamNameKey = getStreamNameKey(nsId, streamName);
    byte[] streamNameVal = Bytes.toBytes(streamId);
    byte[] streamIdKey = getStreamIdKey(nsId, streamId);
    byte[] streamIdVal = streamProps.toByteArray();
    TxnOp<byte[], byte[]> txn = store.newTxn().If(store.newCompareValue(CompareResult.NOT_EQUAL, nsIdKey, null), currentStreamIdRev < 0 ? store.newCompareValue(CompareResult.EQUAL, STREAM_ID_KEY, null) : store.newCompareModRevision(CompareResult.EQUAL, STREAM_ID_KEY, currentStreamIdRev), store.newCompareValue(CompareResult.EQUAL, streamNameKey, null)).Then(store.newPut(streamNameKey, streamNameVal), store.newPut(streamIdKey, streamIdVal), store.newPut(STREAM_ID_KEY, Bytes.toBytes(streamId))).build();
    return store.txn(txn).thenApply(txnResult -> {
        try {
            CreateStreamResponse.Builder respBuilder = CreateStreamResponse.newBuilder();
            if (txnResult.isSuccess()) {
                respBuilder.setCode(StatusCode.SUCCESS);
                respBuilder.setStreamProps(streamProps);
            } else {
                // TODO: differentiate the error codes
                respBuilder.setCode(StatusCode.INTERNAL_SERVER_ERROR);
            }
            return respBuilder.build();
        } finally {
            txnResult.close();
            txn.close();
        }
    }).exceptionally(cause -> {
        txn.close();
        return CreateStreamResponse.newBuilder().setCode(StatusCode.INTERNAL_SERVER_ERROR).build();
    });
}
Also used : ProtoUtils.validateStreamName(org.apache.bookkeeper.stream.protocol.util.ProtoUtils.validateStreamName) GetStreamRequest(org.apache.bookkeeper.stream.proto.storage.GetStreamRequest) Options(org.apache.bookkeeper.api.kv.options.Options) DeleteNamespaceRequest(org.apache.bookkeeper.stream.proto.storage.DeleteNamespaceRequest) CompletableFuture(java.util.concurrent.CompletableFuture) CreateStreamRequest(org.apache.bookkeeper.stream.proto.storage.CreateStreamRequest) GetStreamResponse(org.apache.bookkeeper.stream.proto.storage.GetStreamResponse) DeleteStreamRequest(org.apache.bookkeeper.stream.proto.storage.DeleteStreamRequest) UTF_8(com.google.common.base.Charsets.UTF_8) MIN_DATA_STREAM_ID(org.apache.bookkeeper.stream.protocol.ProtocolConstants.MIN_DATA_STREAM_ID) StreamName(org.apache.bookkeeper.stream.proto.StreamName) CreateStreamResponse(org.apache.bookkeeper.stream.proto.storage.CreateStreamResponse) DeleteStreamResponse(org.apache.bookkeeper.stream.proto.storage.DeleteStreamResponse) MVCCAsyncStore(org.apache.bookkeeper.statelib.api.mvcc.MVCCAsyncStore) TxnOp(org.apache.bookkeeper.api.kv.op.TxnOp) NamespaceProperties(org.apache.bookkeeper.stream.proto.NamespaceProperties) NamespaceMetadata(org.apache.bookkeeper.stream.proto.NamespaceMetadata) DeleteNamespaceResponse(org.apache.bookkeeper.stream.proto.storage.DeleteNamespaceResponse) ScheduledExecutorService(java.util.concurrent.ScheduledExecutorService) KeyValue(org.apache.bookkeeper.api.kv.result.KeyValue) URI(java.net.URI) StatusCode(org.apache.bookkeeper.stream.proto.storage.StatusCode) InvalidProtocolBufferException(com.google.protobuf.InvalidProtocolBufferException) StorageContainerPlacementPolicy(org.apache.bookkeeper.stream.protocol.util.StorageContainerPlacementPolicy) CreateNamespaceResponse(org.apache.bookkeeper.stream.proto.storage.CreateNamespaceResponse) RangeOp(org.apache.bookkeeper.api.kv.op.RangeOp) RootRangeStore(org.apache.bookkeeper.stream.storage.api.metadata.RootRangeStore) StreamConfiguration(org.apache.bookkeeper.stream.proto.StreamConfiguration) Bytes(org.apache.bookkeeper.common.util.Bytes) FutureUtils(org.apache.bookkeeper.common.concurrent.FutureUtils) Slf4j(lombok.extern.slf4j.Slf4j) CreateNamespaceRequest(org.apache.bookkeeper.stream.proto.storage.CreateNamespaceRequest) StringUtils.isBlank(org.apache.commons.lang3.StringUtils.isBlank) StreamProperties(org.apache.bookkeeper.stream.proto.StreamProperties) CompareResult(org.apache.bookkeeper.api.kv.op.CompareResult) ProtoUtils.validateNamespaceName(org.apache.bookkeeper.stream.protocol.util.ProtoUtils.validateNamespaceName) GetNamespaceRequest(org.apache.bookkeeper.stream.proto.storage.GetNamespaceRequest) GetNamespaceResponse(org.apache.bookkeeper.stream.proto.storage.GetNamespaceResponse) StreamConfiguration(org.apache.bookkeeper.stream.proto.StreamConfiguration) StreamProperties(org.apache.bookkeeper.stream.proto.StreamProperties)

Example 3 with StreamConfiguration

use of org.apache.bookkeeper.stream.proto.StreamConfiguration in project bookkeeper by apache.

the class TableClientSimpleTest method testTableSimpleAPI.

@Test
public void testTableSimpleAPI() throws Exception {
    // Create a namespace
    NamespaceConfiguration nsConf = NamespaceConfiguration.newBuilder().setDefaultStreamConf(DEFAULT_STREAM_CONF).build();
    NamespaceProperties nsProps = result(adminClient.createNamespace(namespace, nsConf));
    assertEquals(namespace, nsProps.getNamespaceName());
    assertEquals(nsConf.getDefaultStreamConf(), nsProps.getDefaultStreamConf());
    // Create a stream
    String streamName = testName.getMethodName() + "_stream";
    StreamConfiguration streamConf = StreamConfiguration.newBuilder(DEFAULT_STREAM_CONF).build();
    StreamProperties streamProps = result(adminClient.createStream(namespace, streamName, streamConf));
    assertEquals(streamName, streamProps.getStreamName());
    assertEquals(StreamConfiguration.newBuilder(streamConf).setBackendServiceUrl(defaultBackendUri.toString()).build(), streamProps.getStreamConf());
    // Open the table
    PTable<ByteBuf, ByteBuf> table = result(storageClient.openPTable(streamName));
    byte[] rKey = "routing-key".getBytes(UTF_8);
    byte[] lKey = "testing-key".getBytes(UTF_8);
    byte[] value1 = "testing-value-1".getBytes(UTF_8);
    byte[] value2 = "testing-value-2".getBytes(UTF_8);
    // put first key
    ByteBuf rKeyBuf = Unpooled.wrappedBuffer(rKey);
    ByteBuf lKeyBuf = Unpooled.wrappedBuffer(lKey);
    ByteBuf valBuf1 = Unpooled.wrappedBuffer(value1);
    ByteBuf valBuf2 = Unpooled.wrappedBuffer(value2);
    // normal put
    assertNull(result(table.put(rKeyBuf, lKeyBuf, valBuf1)));
    // putIfAbsent failure
    assertArrayEquals(value1, ByteBufUtil.getBytes(result(table.putIfAbsent(rKeyBuf, lKeyBuf, valBuf2))));
    // delete failure
    assertFalse(result(table.delete(rKeyBuf, lKeyBuf, valBuf2)));
    // delete success
    assertTrue(result(table.delete(rKeyBuf, lKeyBuf, valBuf1)));
    // get
    assertNull(result(table.get(rKeyBuf, lKeyBuf)));
    // putIfAbsent success
    assertNull(result(table.putIfAbsent(rKeyBuf, lKeyBuf, valBuf2)));
    // get returns val2
    assertArrayEquals(value2, ByteBufUtil.getBytes(result(table.get(rKeyBuf, lKeyBuf))));
    // vPut failure
    try {
        result(table.vPut(rKeyBuf, lKeyBuf, valBuf1, 9999L));
        fail("Should fail vPut if the version doesn't match");
    } catch (KvApiException e) {
        assertEquals(Code.BAD_REVISION, e.getCode());
    }
    // vPut success
    assertEquals(1L, result(table.vPut(rKeyBuf, lKeyBuf, valBuf1, 0L)).longValue());
    // vDelete failure
    try {
        result(table.vDelete(rKeyBuf, lKeyBuf, 9999L));
        fail("Should fail vDelete if the version doesn't match");
    } catch (KvApiException e) {
        assertEquals(Code.BAD_REVISION, e.getCode());
    }
    // vDelete success
    try (KeyValue<ByteBuf, ByteBuf> prevKv = result(table.vDelete(rKeyBuf, lKeyBuf, 1L))) {
        assertNotNull(prevKv);
        assertEquals(1L, prevKv.version());
        assertArrayEquals(value1, ByteBufUtil.getBytes(prevKv.value()));
    }
    // write a range of key
    int numKvs = 100;
    rKeyBuf = Unpooled.wrappedBuffer("test-key".getBytes(UTF_8));
    for (int i = 0; i < numKvs; i++) {
        lKeyBuf = getLKey(i);
        valBuf1 = getValue(i);
        result(table.put(rKeyBuf, lKeyBuf, valBuf1));
    }
    // get ranges
    ByteBuf lStartKey = getLKey(20);
    ByteBuf lEndKey = getLKey(50);
    List<KeyValue<ByteBuf, ByteBuf>> kvs = result(table.range(rKeyBuf, lStartKey, lEndKey));
    assertEquals(31, kvs.size());
    int i = 20;
    for (KeyValue<ByteBuf, ByteBuf> kvPair : kvs) {
        assertEquals(getLKey(i), kvPair.key());
        assertEquals(getValue(i), kvPair.value());
        ++i;
        kvPair.close();
    }
    assertEquals(51, i);
    // delete range
    kvs = result(table.deleteRange(rKeyBuf, lStartKey, lEndKey));
    assertEquals(31, kvs.size());
    i = 20;
    for (KeyValue<ByteBuf, ByteBuf> kvPair : kvs) {
        assertEquals(getLKey(i), kvPair.key());
        assertEquals(getValue(i), kvPair.value());
        ++i;
        kvPair.close();
    }
    assertEquals(51, i);
    // get ranges again
    kvs = result(table.range(rKeyBuf, lStartKey, lEndKey));
    assertTrue(kvs.isEmpty());
    byte[] lIncrKey = "test-incr-lkey".getBytes(UTF_8);
    ByteBuf lIncrKeyBuf = Unpooled.wrappedBuffer(lIncrKey);
    // test increment
    for (int j = 0; j < 5; j++) {
        result(table.increment(rKeyBuf, lIncrKeyBuf, 100L));
        long number = result(table.getNumber(rKeyBuf, lIncrKeyBuf));
        assertEquals(100L * (j + 1), number);
    }
    for (int j = 5; j < 10; j++) {
        long number = result(table.incrementAndGet(rKeyBuf, lIncrKeyBuf, 100L));
        assertEquals(100L * (j + 1), number);
    }
}
Also used : KeyValue(org.apache.bookkeeper.api.kv.result.KeyValue) StreamProperties(org.apache.bookkeeper.stream.proto.StreamProperties) KvApiException(org.apache.bookkeeper.api.kv.exceptions.KvApiException) ByteBuf(io.netty.buffer.ByteBuf) Endpoint(org.apache.bookkeeper.stream.proto.common.Endpoint) NamespaceProperties(org.apache.bookkeeper.stream.proto.NamespaceProperties) StreamConfiguration(org.apache.bookkeeper.stream.proto.StreamConfiguration) NamespaceConfiguration(org.apache.bookkeeper.stream.proto.NamespaceConfiguration) Test(org.junit.Test)

Example 4 with StreamConfiguration

use of org.apache.bookkeeper.stream.proto.StreamConfiguration in project bookkeeper by apache.

the class TableClientTest method testTableAPI.

@Test
public void testTableAPI() throws Exception {
    // Create a namespace
    NamespaceConfiguration nsConf = NamespaceConfiguration.newBuilder().setDefaultStreamConf(DEFAULT_STREAM_CONF).build();
    NamespaceProperties nsProps = FutureUtils.result(adminClient.createNamespace(namespace, nsConf));
    assertEquals(namespace, nsProps.getNamespaceName());
    assertEquals(nsConf.getDefaultStreamConf(), nsProps.getDefaultStreamConf());
    // Create a stream
    String streamName = testName.getMethodName() + "_stream";
    StreamConfiguration streamConf = StreamConfiguration.newBuilder(DEFAULT_STREAM_CONF).build();
    StreamProperties streamProps = FutureUtils.result(adminClient.createStream(namespace, streamName, streamConf));
    assertEquals(streamName, streamProps.getStreamName());
    assertEquals(StreamConfiguration.newBuilder(streamConf).setBackendServiceUrl(defaultBackendUri.toString()).build(), streamProps.getStreamConf());
    // Open the table
    PTable<ByteBuf, ByteBuf> table = FutureUtils.result(storageClient.openPTable(streamName));
    byte[] rKey = "routing-key".getBytes(UTF_8);
    byte[] lKey = "testing-key".getBytes(UTF_8);
    byte[] value = "testing-value".getBytes(UTF_8);
    // put first key
    ByteBuf rKeyBuf = Unpooled.wrappedBuffer(rKey);
    ByteBuf lKeyBuf = Unpooled.wrappedBuffer(lKey);
    ByteBuf valBuf = Unpooled.wrappedBuffer(value);
    try (PutOption<ByteBuf> option = Options.putAndGet()) {
        try (PutResult<ByteBuf, ByteBuf> putResult = FutureUtils.result(table.put(rKeyBuf, lKeyBuf, valBuf, option))) {
            assertNull(putResult.prevKv());
        }
    }
    // put second key
    ByteBuf valBuf2 = Unpooled.wrappedBuffer("testing-value-2".getBytes(UTF_8));
    try (PutOption<ByteBuf> option = Options.putAndGet()) {
        try (PutResult<ByteBuf, ByteBuf> putResult = FutureUtils.result(table.put(rKeyBuf, lKeyBuf, valBuf2, option))) {
            assertNotNull(putResult.prevKv());
            KeyValue<ByteBuf, ByteBuf> prevKv = putResult.prevKv();
            assertEquals("testing-key", new String(ByteBufUtil.getBytes(prevKv.key()), UTF_8));
            assertEquals("testing-value", new String(ByteBufUtil.getBytes(prevKv.value()), UTF_8));
        }
    }
    // get key
    try (RangeOption<ByteBuf> option = optionFactory.newRangeOption().build()) {
        try (RangeResult<ByteBuf, ByteBuf> getResult = FutureUtils.result(table.get(rKeyBuf, lKeyBuf, option))) {
            assertEquals(1, getResult.count());
            assertEquals(1, getResult.kvs().size());
            KeyValue<ByteBuf, ByteBuf> kv = getResult.kvs().get(0);
            assertEquals("testing-key", new String(ByteBufUtil.getBytes(kv.key()), UTF_8));
            assertEquals("testing-value-2", new String(ByteBufUtil.getBytes(kv.value()), UTF_8));
        }
    }
    // delete key
    try (DeleteOption<ByteBuf> option = optionFactory.newDeleteOption().prevKv(true).build()) {
        try (DeleteResult<ByteBuf, ByteBuf> deleteResult = FutureUtils.result(table.delete(rKeyBuf, lKeyBuf, option))) {
            assertEquals(1, deleteResult.numDeleted());
            assertEquals(1, deleteResult.prevKvs().size());
            KeyValue<ByteBuf, ByteBuf> kv = deleteResult.prevKvs().get(0);
            assertEquals("testing-key", new String(ByteBufUtil.getBytes(kv.key()), UTF_8));
            assertEquals("testing-value-2", new String(ByteBufUtil.getBytes(kv.value()), UTF_8));
        }
    }
    // write a range of key
    int numKvs = 100;
    rKeyBuf = Unpooled.wrappedBuffer("test-key".getBytes(UTF_8));
    try (PutOption<ByteBuf> option = Options.blindPut()) {
        for (int i = 0; i < numKvs; i++) {
            lKeyBuf = getLKey(i);
            valBuf = getValue(i);
            FutureUtils.result(table.put(rKeyBuf, lKeyBuf, valBuf, option));
        }
    }
    // get ranges
    ByteBuf lStartKey = getLKey(20);
    ByteBuf lEndKey = getLKey(50);
    try (RangeOption<ByteBuf> option = optionFactory.newRangeOption().endKey(lEndKey).build()) {
        try (RangeResult<ByteBuf, ByteBuf> rangeResult = FutureUtils.result(table.get(rKeyBuf, lStartKey, option))) {
            assertEquals(31, rangeResult.kvs().size());
            assertEquals(31, rangeResult.count());
            int i = 20;
            for (KeyValue<ByteBuf, ByteBuf> kvPair : rangeResult.kvs()) {
                assertEquals(getLKey(i), kvPair.key());
                assertEquals(getValue(i), kvPair.value());
                ++i;
            }
            assertEquals(51, i);
        }
    }
    // delete range
    try (DeleteOption<ByteBuf> option = optionFactory.newDeleteOption().prevKv(true).endKey(lEndKey).build()) {
        try (DeleteResult<ByteBuf, ByteBuf> deleteRangeResult = FutureUtils.result(table.delete(rKeyBuf, lStartKey, option))) {
            assertEquals(31, deleteRangeResult.numDeleted());
            assertEquals(31, deleteRangeResult.prevKvs().size());
            int i = 20;
            for (KeyValue<ByteBuf, ByteBuf> kvPair : deleteRangeResult.prevKvs()) {
                assertEquals(getLKey(i), kvPair.key());
                assertEquals(getValue(i), kvPair.value());
                ++i;
            }
            assertEquals(51, i);
        }
    }
    // test txn
    byte[] lTxnKey = "txn-key".getBytes(UTF_8);
    ByteBuf lTxnKeyBuf = Unpooled.wrappedBuffer(lTxnKey);
    byte[] txnValue = "txn-value".getBytes(UTF_8);
    ByteBuf txnValueBuf = Unpooled.wrappedBuffer(txnValue);
    Txn<ByteBuf, ByteBuf> txn = table.txn(lTxnKeyBuf);
    CompletableFuture<TxnResult<ByteBuf, ByteBuf>> commitFuture = txn.If(table.opFactory().compareValue(CompareResult.EQUAL, lTxnKeyBuf, Unpooled.wrappedBuffer(new byte[0]))).Then(table.opFactory().newPut(lTxnKeyBuf, txnValueBuf, table.opFactory().optionFactory().newPutOption().build())).commit();
    try (TxnResult<ByteBuf, ByteBuf> txnResult = FutureUtils.result(commitFuture)) {
        assertTrue(txnResult.isSuccess());
        assertEquals(1, txnResult.results().size());
        Result<ByteBuf, ByteBuf> opResult = txnResult.results().get(0);
        assertEquals(OpType.PUT, opResult.type());
    }
    // get key
    try (RangeOption<ByteBuf> option = optionFactory.newRangeOption().build()) {
        try (RangeResult<ByteBuf, ByteBuf> getResult = FutureUtils.result(table.get(lTxnKeyBuf, lTxnKeyBuf, option))) {
            assertEquals(1, getResult.count());
            assertEquals(1, getResult.kvs().size());
            KeyValue<ByteBuf, ByteBuf> kv = getResult.kvs().get(0);
            assertEquals("txn-key", new String(ByteBufUtil.getBytes(kv.key()), UTF_8));
            assertEquals("txn-value", new String(ByteBufUtil.getBytes(kv.value()), UTF_8));
        }
    }
    txn = table.txn(lTxnKeyBuf);
    // txn failure
    commitFuture = txn.If(table.opFactory().compareValue(CompareResult.EQUAL, lTxnKeyBuf, Unpooled.wrappedBuffer(new byte[0]))).Then(table.opFactory().newPut(lTxnKeyBuf, valBuf, table.opFactory().optionFactory().newPutOption().build())).commit();
    try (TxnResult<ByteBuf, ByteBuf> txnResult = FutureUtils.result(commitFuture)) {
        assertFalse(txnResult.isSuccess());
        assertEquals(0, txnResult.results().size());
    }
}
Also used : TxnResult(org.apache.bookkeeper.api.kv.result.TxnResult) StreamProperties(org.apache.bookkeeper.stream.proto.StreamProperties) ByteBuf(io.netty.buffer.ByteBuf) Endpoint(org.apache.bookkeeper.stream.proto.common.Endpoint) NamespaceProperties(org.apache.bookkeeper.stream.proto.NamespaceProperties) StreamConfiguration(org.apache.bookkeeper.stream.proto.StreamConfiguration) NamespaceConfiguration(org.apache.bookkeeper.stream.proto.NamespaceConfiguration) Test(org.junit.Test)

Aggregations

NamespaceProperties (org.apache.bookkeeper.stream.proto.NamespaceProperties)4 StreamConfiguration (org.apache.bookkeeper.stream.proto.StreamConfiguration)4 StreamProperties (org.apache.bookkeeper.stream.proto.StreamProperties)4 NamespaceConfiguration (org.apache.bookkeeper.stream.proto.NamespaceConfiguration)3 ByteBuf (io.netty.buffer.ByteBuf)2 KeyValue (org.apache.bookkeeper.api.kv.result.KeyValue)2 Endpoint (org.apache.bookkeeper.stream.proto.common.Endpoint)2 Test (org.junit.Test)2 UTF_8 (com.google.common.base.Charsets.UTF_8)1 InvalidProtocolBufferException (com.google.protobuf.InvalidProtocolBufferException)1 URI (java.net.URI)1 CompletableFuture (java.util.concurrent.CompletableFuture)1 ScheduledExecutorService (java.util.concurrent.ScheduledExecutorService)1 Slf4j (lombok.extern.slf4j.Slf4j)1 KvApiException (org.apache.bookkeeper.api.kv.exceptions.KvApiException)1 CompareResult (org.apache.bookkeeper.api.kv.op.CompareResult)1 RangeOp (org.apache.bookkeeper.api.kv.op.RangeOp)1 TxnOp (org.apache.bookkeeper.api.kv.op.TxnOp)1 Options (org.apache.bookkeeper.api.kv.options.Options)1 TxnResult (org.apache.bookkeeper.api.kv.result.TxnResult)1