Search in sources :

Example 6 with BKDLConfig

use of org.apache.distributedlog.impl.metadata.BKDLConfig in project bookkeeper by apache.

the class TestBKLogSegmentWriter method setup.

@Before
@Override
public void setup() throws Exception {
    super.setup();
    scheduler = OrderedScheduler.newSchedulerBuilder().numThreads(1).build();
    lockStateExecutor = OrderedScheduler.newSchedulerBuilder().numThreads(1).build();
    // build zookeeper client
    URI uri = createDLMURI("");
    zkc = TestZooKeeperClientBuilder.newBuilder(conf).name("test-zkc").uri(uri).build();
    zkc0 = TestZooKeeperClientBuilder.newBuilder(conf).name("test-zkc0").uri(uri).build();
    // build bookkeeper client
    BKDLConfig bkdlConfig = BKDLConfig.resolveDLConfig(zkc, uri);
    bkc = BookKeeperClientBuilder.newBuilder().dlConfig(conf).name("test-bkc").ledgersPath(bkdlConfig.getBkLedgersPath()).zkServers(BKNamespaceDriver.getZKServersFromDLUri(uri)).build();
}
Also used : BKDLConfig(org.apache.distributedlog.impl.metadata.BKDLConfig) URI(java.net.URI) Before(org.junit.Before)

Example 7 with BKDLConfig

use of org.apache.distributedlog.impl.metadata.BKDLConfig in project bookkeeper by apache.

the class TestDLMetadata method testMetadataWithOrWithoutZkServers.

private void testMetadataWithOrWithoutZkServers(String metadataPath, String dlZkServersForWriter, String dlZkServersForReader, String bkZkServersForWriter, String bkZkServersForReader, String expectedDlZkServersForWriter, String expectedDlZkServersForReader, String expectedBkZkServersForWriter, String expectedBkZkServersForReader) throws Exception {
    BKDLConfig bkdlConfig = new BKDLConfig(dlZkServersForWriter, dlZkServersForReader, bkZkServersForWriter, bkZkServersForReader, "ledgers");
    BKDLConfig expectedBKDLConfig = new BKDLConfig(expectedDlZkServersForWriter, expectedDlZkServersForReader, expectedBkZkServersForWriter, expectedBkZkServersForReader, "ledgers");
    URI uri = createURI(metadataPath);
    DLMetadata metadata = new DLMetadata(DLMetadata.BK_DL_TYPE, bkdlConfig);
    metadata.create(uri);
    // read serialized metadata
    byte[] data = zkc.getData(metadataPath, false, new Stat());
    assertEquals(expectedBKDLConfig, DLMetadata.deserialize(uri, data).getDLConfig());
}
Also used : Stat(org.apache.zookeeper.data.Stat) BKDLConfig(org.apache.distributedlog.impl.metadata.BKDLConfig) URI(java.net.URI)

Example 8 with BKDLConfig

use of org.apache.distributedlog.impl.metadata.BKDLConfig in project bookkeeper by apache.

the class TestDLMetadata method testMetadataMissingRequiredFields.

@Test(timeout = 60000)
public void testMetadataMissingRequiredFields() throws Exception {
    BKDLConfig bkdlConfig = new BKDLConfig(null, null, null, null, "ledgers");
    URI uri = createURI("/metadata-missing-fields");
    DLMetadata metadata = new DLMetadata(DLMetadata.BK_DL_TYPE, bkdlConfig);
    metadata.create(uri);
    // read serialized metadata
    byte[] data = zkc.getData("/metadata-missing-fields", false, new Stat());
    try {
        DLMetadata.deserialize(uri, data);
        fail("Should fail on deserializing metadata missing fields");
    } catch (IOException ioe) {
    // expected
    }
}
Also used : Stat(org.apache.zookeeper.data.Stat) BKDLConfig(org.apache.distributedlog.impl.metadata.BKDLConfig) IOException(java.io.IOException) URI(java.net.URI) Test(org.junit.Test)

Example 9 with BKDLConfig

use of org.apache.distributedlog.impl.metadata.BKDLConfig in project bookkeeper by apache.

the class DLMetadata method deserialize.

/**
 * Deserialize dl metadata of given <i>uri</i> from a given bytes array.
 *
 * @param uri
 *          uri that stored dl metadata bindings
 * @param data
 *          bytes of dl metadata
 * @return dl metadata
 * @throws IOException if failed to parse the bytes array
 */
public static DLMetadata deserialize(URI uri, byte[] data) throws IOException {
    String metadata = new String(data, UTF_8);
    LOG.debug("Parsing dl metadata {}.", metadata);
    BufferedReader br = new BufferedReader(new StringReader(metadata));
    String versionLine = br.readLine();
    if (null == versionLine) {
        throw new IOException("Empty DL Metadata.");
    }
    int version;
    try {
        version = Integer.parseInt(versionLine);
    } catch (NumberFormatException nfe) {
        version = -1;
    }
    if (METADATA_FORMAT_VERSION != version) {
        throw new IOException("Metadata version not compatible. Expected " + METADATA_FORMAT_VERSION + " but got " + version);
    }
    String type = br.readLine();
    if (!BK_DL_TYPE.equals(type)) {
        throw new IOException("Invalid DL type : " + type);
    }
    DLConfig dlConfig = new BKDLConfig(uri);
    StringBuilder sb = new StringBuilder();
    String line;
    while (null != (line = br.readLine())) {
        sb.append(line);
    }
    dlConfig.deserialize(sb.toString().getBytes(UTF_8));
    return new DLMetadata(type, dlConfig, version);
}
Also used : BKDLConfig(org.apache.distributedlog.impl.metadata.BKDLConfig) BufferedReader(java.io.BufferedReader) StringReader(java.io.StringReader) BKDLConfig(org.apache.distributedlog.impl.metadata.BKDLConfig) IOException(java.io.IOException)

Aggregations

BKDLConfig (org.apache.distributedlog.impl.metadata.BKDLConfig)9 URI (java.net.URI)6 IOException (java.io.IOException)2 ExecutorService (java.util.concurrent.ExecutorService)2 BoundExponentialBackoffRetryPolicy (org.apache.bookkeeper.zookeeper.BoundExponentialBackoffRetryPolicy)2 RetryPolicy (org.apache.bookkeeper.zookeeper.RetryPolicy)2 BookKeeperClient (org.apache.distributedlog.BookKeeperClient)2 ZooKeeperClient (org.apache.distributedlog.ZooKeeperClient)2 ZKException (org.apache.distributedlog.exceptions.ZKException)2 DLMetadata (org.apache.distributedlog.metadata.DLMetadata)2 Stat (org.apache.zookeeper.data.Stat)2 BufferedReader (java.io.BufferedReader)1 StringReader (java.io.StringReader)1 AtomicLong (java.util.concurrent.atomic.AtomicLong)1 Before (org.junit.Before)1 Test (org.junit.Test)1