Search in sources :

Example 6 with RetryNTimes

use of org.apache.curator.retry.RetryNTimes in project camel by apache.

the class GroupTest method testAddFieldIgnoredOnParse.

@Test
public void testAddFieldIgnoredOnParse() throws Exception {
    int port = findFreePort();
    NIOServerCnxnFactory cnxnFactory = startZooKeeper(port);
    CuratorFramework curator = CuratorFrameworkFactory.builder().connectString("localhost:" + port).retryPolicy(new RetryNTimes(10, 100)).build();
    curator.start();
    curator.getZookeeperClient().blockUntilConnectedOrTimedOut();
    String groupNode = "/singletons/test" + System.currentTimeMillis();
    curator.create().creatingParentsIfNeeded().forPath(groupNode);
    curator.getZookeeperClient().blockUntilConnectedOrTimedOut();
    final ZooKeeperGroup<NodeState> group = new ZooKeeperGroup<NodeState>(curator, groupNode, NodeState.class);
    group.add(listener);
    group.start();
    GroupCondition groupCondition = new GroupCondition();
    group.add(groupCondition);
    group.update(new NodeState("foo"));
    assertTrue(groupCondition.waitForConnected(5, TimeUnit.SECONDS));
    assertTrue(groupCondition.waitForMaster(5, TimeUnit.SECONDS));
    ChildData currentData = group.getCurrentData().get(0);
    final int version = currentData.getStat().getVersion();
    NodeState lastState = group.getLastState();
    String json = lastState.toString();
    System.err.println("JSON:" + json);
    String newValWithNewField = json.substring(0, json.lastIndexOf('}')) + ",\"Rubbish\":\"Rubbish\"}";
    curator.getZookeeperClient().getZooKeeper().setData(group.getId(), newValWithNewField.getBytes(), version);
    assertTrue(group.isMaster());
    int attempts = 0;
    while (attempts++ < 5 && version == group.getCurrentData().get(0).getStat().getVersion()) {
        TimeUnit.SECONDS.sleep(1);
    }
    assertNotEquals("We see the updated version", version, group.getCurrentData().get(0).getStat().getVersion());
    System.err.println("CurrentData:" + group.getCurrentData());
    group.close();
    curator.close();
    cnxnFactory.shutdown();
    cnxnFactory.join();
}
Also used : RetryNTimes(org.apache.curator.retry.RetryNTimes) CuratorFramework(org.apache.curator.framework.CuratorFramework) ChildData(org.apache.camel.component.zookeepermaster.group.internal.ChildData) NIOServerCnxnFactory(org.apache.zookeeper.server.NIOServerCnxnFactory) ZooKeeperGroup(org.apache.camel.component.zookeepermaster.group.internal.ZooKeeperGroup) Test(org.junit.Test)

Example 7 with RetryNTimes

use of org.apache.curator.retry.RetryNTimes in project nifi by apache.

the class CuratorNodeProtocolSender method getServiceAddress.

@Override
protected synchronized InetSocketAddress getServiceAddress() throws IOException {
    if (coordinatorAddress != null) {
        return coordinatorAddress;
    }
    final RetryPolicy retryPolicy = new RetryNTimes(0, 0);
    final CuratorFramework curatorClient = CuratorFrameworkFactory.newClient(zkConfig.getConnectString(), zkConfig.getSessionTimeoutMillis(), zkConfig.getConnectionTimeoutMillis(), retryPolicy);
    curatorClient.start();
    try {
        // Get coordinator address and add watcher to change who we are heartbeating to if the value changes.
        final byte[] coordinatorAddressBytes = curatorClient.getData().usingWatcher(new Watcher() {

            @Override
            public void process(final WatchedEvent event) {
                coordinatorAddress = null;
            }
        }).forPath(coordinatorPath);
        if (coordinatorAddressBytes == null || coordinatorAddressBytes.length == 0) {
            throw new NoClusterCoordinatorException("No node has yet been elected Cluster Coordinator. Cannot establish connection to cluster yet.");
        }
        final String address = new String(coordinatorAddressBytes, StandardCharsets.UTF_8);
        final String[] splits = address.split(":");
        if (splits.length != 2) {
            final String message = String.format("Attempted to determine Cluster Coordinator address. Zookeeper indicates " + "that address is %s, but this is not in the expected format of <hostname>:<port>", address);
            logger.error(message);
            throw new ProtocolException(message);
        }
        logger.info("Determined that Cluster Coordinator is located at {}; will use this address for sending heartbeat messages", address);
        final String hostname = splits[0];
        final int port;
        try {
            port = Integer.parseInt(splits[1]);
            if (port < 1 || port > 65535) {
                throw new NumberFormatException("Port must be in the range of 1 - 65535 but got " + port);
            }
        } catch (final NumberFormatException nfe) {
            final String message = String.format("Attempted to determine Cluster Coordinator address. Zookeeper indicates " + "that address is %s, but the port is not a valid port number", address);
            logger.error(message);
            throw new ProtocolException(message);
        }
        final InetSocketAddress socketAddress = InetSocketAddress.createUnresolved(hostname, port);
        coordinatorAddress = socketAddress;
        return socketAddress;
    } catch (final NoNodeException nne) {
        logger.info("No node has yet been elected Cluster Coordinator. Cannot establish connection to cluster yet.");
        throw new NoClusterCoordinatorException("No node has yet been elected Cluster Coordinator. Cannot establish connection to cluster yet.");
    } catch (final NoClusterCoordinatorException ncce) {
        throw ncce;
    } catch (Exception e) {
        throw new IOException("Unable to determine Cluster Coordinator from ZooKeeper", e);
    } finally {
        curatorClient.close();
    }
}
Also used : RetryNTimes(org.apache.curator.retry.RetryNTimes) ProtocolException(org.apache.nifi.cluster.protocol.ProtocolException) NoNodeException(org.apache.zookeeper.KeeperException.NoNodeException) InetSocketAddress(java.net.InetSocketAddress) Watcher(org.apache.zookeeper.Watcher) IOException(java.io.IOException) NoClusterCoordinatorException(org.apache.nifi.cluster.exception.NoClusterCoordinatorException) IOException(java.io.IOException) ProtocolException(org.apache.nifi.cluster.protocol.ProtocolException) NoNodeException(org.apache.zookeeper.KeeperException.NoNodeException) WatchedEvent(org.apache.zookeeper.WatchedEvent) CuratorFramework(org.apache.curator.framework.CuratorFramework) NoClusterCoordinatorException(org.apache.nifi.cluster.exception.NoClusterCoordinatorException) RetryPolicy(org.apache.curator.RetryPolicy)

Example 8 with RetryNTimes

use of org.apache.curator.retry.RetryNTimes in project nifi by apache.

the class CuratorLeaderElectionManager method createClient.

private CuratorFramework createClient() {
    // Create a new client because we don't want to try indefinitely for this to occur.
    final RetryPolicy retryPolicy = new RetryNTimes(1, 100);
    final CuratorACLProviderFactory aclProviderFactory = new CuratorACLProviderFactory();
    final CuratorFramework client = CuratorFrameworkFactory.builder().connectString(zkConfig.getConnectString()).sessionTimeoutMs(zkConfig.getSessionTimeoutMillis()).connectionTimeoutMs(zkConfig.getConnectionTimeoutMillis()).retryPolicy(retryPolicy).aclProvider(aclProviderFactory.create(zkConfig)).defaultData(new byte[0]).build();
    client.start();
    return client;
}
Also used : RetryNTimes(org.apache.curator.retry.RetryNTimes) CuratorFramework(org.apache.curator.framework.CuratorFramework) RetryPolicy(org.apache.curator.RetryPolicy)

Example 9 with RetryNTimes

use of org.apache.curator.retry.RetryNTimes in project ignite by apache.

the class ZookeeperIpFinderTest method beforeTest.

/**
 * Before test.
 *
 * @throws Exception
 */
@Override
public void beforeTest() throws Exception {
    super.beforeTest();
    // remove stale system properties
    System.getProperties().remove(TcpDiscoveryZookeeperIpFinder.PROP_ZK_CONNECTION_STRING);
    // disable JMX for tests
    System.setProperty("zookeeper.jmx.log4j.disable", "true");
    // start the ZK cluster
    zkCluster = new TestingCluster(ZK_CLUSTER_SIZE);
    zkCluster.start();
    // start the Curator client so we can perform assertions on the ZK state later
    zkCurator = CuratorFrameworkFactory.newClient(zkCluster.getConnectString(), new RetryNTimes(10, 1000));
    zkCurator.start();
}
Also used : RetryNTimes(org.apache.curator.retry.RetryNTimes) TestingCluster(org.apache.curator.test.TestingCluster)

Example 10 with RetryNTimes

use of org.apache.curator.retry.RetryNTimes in project fabric8 by jboss-fuse.

the class ConfigurableZooKeeperPing method createCurator.

protected CuratorFramework createCurator() throws KeeperException {
    log.info(String.format("Creating curator [%s], mode: %s", connection, getCreateMode()));
    CuratorFrameworkFactory.Builder builder = CuratorFrameworkFactory.builder().ensembleProvider(new FixedEnsembleProvider(connection)).connectionTimeoutMs(connectionTimeout).sessionTimeoutMs(sessionTimeout).retryPolicy(new RetryNTimes(maxRetry, retryInterval));
    if (password != null && password.length() > 0) {
        builder = builder.authorization(getScheme(), getAuth()).aclProvider(aclProvider);
    }
    return builder.build();
}
Also used : RetryNTimes(org.apache.curator.retry.RetryNTimes) CuratorFrameworkFactory(org.apache.curator.framework.CuratorFrameworkFactory) FixedEnsembleProvider(org.apache.curator.ensemble.fixed.FixedEnsembleProvider)

Aggregations

RetryNTimes (org.apache.curator.retry.RetryNTimes)68 CuratorFramework (org.apache.curator.framework.CuratorFramework)51 Test (org.junit.Test)20 RetryPolicy (org.apache.curator.RetryPolicy)12 NIOServerCnxnFactory (org.apache.zookeeper.server.NIOServerCnxnFactory)12 Test (org.testng.annotations.Test)11 CuratorFrameworkFactory (org.apache.curator.framework.CuratorFrameworkFactory)10 CountDownLatch (java.util.concurrent.CountDownLatch)9 ZooKeeperGroup (io.fabric8.groups.internal.ZooKeeperGroup)8 IOException (java.io.IOException)6 ZooKeeperGroup (org.apache.camel.component.zookeepermaster.group.internal.ZooKeeperGroup)6 Before (org.junit.Before)6 ArrayList (java.util.ArrayList)5 TestingServer (org.apache.curator.test.TestingServer)5 AtomicInteger (java.util.concurrent.atomic.AtomicInteger)4 ConnectionState (org.apache.curator.framework.state.ConnectionState)4 LinkedBlockingQueue (java.util.concurrent.LinkedBlockingQueue)3 AtomicBoolean (java.util.concurrent.atomic.AtomicBoolean)3 BackgroundCallback (org.apache.curator.framework.api.BackgroundCallback)3 CuratorEvent (org.apache.curator.framework.api.CuratorEvent)3