Example usage for org.apache.zookeeper WatchedEvent getState

List of usage examples for org.apache.zookeeper WatchedEvent getState

Introduction

In this page you can find the example usage for org.apache.zookeeper WatchedEvent getState.

Prototype

public KeeperState getState() 

Source Link

Usage

From source file:org.apache.bookkeeper.zookeeper.BkZooKeeperClient.java

License:Apache License

@Override
public void process(WatchedEvent event) {
    if (event.getType() == EventType.None && event.getState() == KeeperState.Expired) {
        onExpired();/*w  w w  .ja  va 2 s .  co  m*/
    }
}

From source file:org.apache.bookkeeper.zookeeper.TestZooKeeperClient.java

License:Apache License

@Test(timeout = 12000)
public void testReconnectAfterExipred() throws Exception {
    final CountDownLatch expireLatch = new CountDownLatch(1);
    Watcher testWatcher = new Watcher() {

        @Override/*from  www  . jav a 2  s .c om*/
        public void process(WatchedEvent event) {
            if (event.getType() == EventType.None && event.getState() == KeeperState.Expired) {
                expireLatch.countDown();
            }
        }

    };
    final int timeout = 2000;
    ZooKeeperWatcherBase watcherManager = new ZooKeeperWatcherBase(timeout).addChildWatcher(testWatcher);
    List<Watcher> watchers = new ArrayList<Watcher>(1);
    watchers.add(testWatcher);
    ZooKeeperClient client = new ShutdownZkServerClient(zkUtil.getZooKeeperConnectString(), timeout,
            watcherManager, new BoundExponentialBackoffRetryPolicy(timeout, timeout, 0));
    client.waitForConnection();
    Assert.assertTrue("Client failed to connect an alive ZooKeeper.", client.getState().isConnected());
    logger.info("Expire zookeeper client");
    expireZooKeeperSession(client, timeout);

    // wait until session expire
    Assert.assertTrue("Client registered watcher should receive expire event.",
            expireLatch.await(2 * timeout, TimeUnit.MILLISECONDS));

    Assert.assertFalse("Client doesn't receive expire event from ZooKeeper.", client.getState().isConnected());

    try {
        client.exists("/tmp", false);
        Assert.fail("Should fail due to connection loss.");
    } catch (KeeperException.ConnectionLossException cle) {
        // expected
    } catch (KeeperException.SessionExpiredException cle) {
        // expected
    }

    zkUtil.restartServer();

    // wait for a reconnect cycle
    Thread.sleep(2 * timeout);
    Assert.assertTrue("Client failed to connect zookeeper even it was back.", client.getState().isConnected());
    try {
        client.exists("/tmp", false);
    } catch (KeeperException.ConnectionLossException cle) {
        Assert.fail("Should not throw ConnectionLossException");
    } catch (KeeperException.SessionExpiredException cle) {
        Assert.fail("Should not throw SessionExpiredException");
    }
}

From source file:org.apache.bookkeeper.zookeeper.ZooKeeperWatcherBase.java

License:Apache License

@Override
public void process(WatchedEvent event) {
    // If event type is NONE, this is a connection status change
    if (event.getType() != EventType.None) {
        LOG.debug("Received event: {}, path: {} from ZooKeeper server", event.getType(), event.getPath());
        getEventCounter(event.getType()).inc();
        // notify the child watchers
        notifyEvent(event);/*from  w  w  w  . j a  v  a2  s.com*/
        return;
    }
    getStateCounter(event.getState()).inc();
    LOG.debug("Received {} from ZooKeeper server", event.getState());
    // TODO: Needs to handle AuthFailed, SaslAuthenticated events
    switch (event.getState()) {
    case SyncConnected:
        LOG.info("ZooKeeper client is connected now.");
        clientConnectLatch.countDown();
        break;
    case Disconnected:
        LOG.info(
                "ZooKeeper client is disconnected from zookeeper now, but it is OK unless we received EXPIRED event.");
        break;
    case Expired:
        clientConnectLatch = new CountDownLatch(1);
        LOG.error("ZooKeeper client connection to the ZooKeeper server has expired!");
        break;
    default:
        // do nothing
        break;
    }
    // notify the child watchers
    notifyEvent(event);
}

From source file:org.apache.brooklyn.entity.messaging.zookeeper.ZooKeeperTestSupport.java

License:Apache License

public ZooKeeperTestSupport(final HostAndPort hostAndPort) throws Exception {
    final int sessionTimeout = 3000;
    zk = new ZooKeeper(hostAndPort.toString(), sessionTimeout, new Watcher() {
        @Override/*from  ww  w  .  j  a v a 2  s . c  o m*/
        public void process(WatchedEvent event) {
            if (event.getState() == Event.KeeperState.SyncConnected) {
                LOG.debug("Connected to ZooKeeper at {}", hostAndPort);
                connSignal.countDown();
            } else {
                LOG.info("WatchedEvent at {}: {}", hostAndPort, event.getState());
            }
        }
    });
    connSignal.await();
}

From source file:org.apache.camel.component.zookeeper.ConnectionHolder.java

License:Apache License

public void process(WatchedEvent event) {
    if (event.getState() == KeeperState.SyncConnected) {
        connectionLatch.countDown();/*from  w  w w .j  ava  2 s .  com*/
    }
    connectionLatch.countDown();
}

From source file:org.apache.cassandra.mutex.ClusterMutex.java

License:Apache License

/**
 * process any events from ZooKeeper. We simply wake up any clients that are waiting for
 * file deletion. Number of clients is usually very small (most likely just one), so no need
 * for any complex logic.//from  w ww.j a  v a 2  s  .  c  o  m
 */
public void process(WatchedEvent event) {
    if (logger.isTraceEnabled())
        logger.trace("Got event " + event.getType() + ", keeper state " + event.getState() + ", path "
                + event.getPath());

    synchronized (mutex) {
        mutex.notifyAll();
    }
}

From source file:org.apache.curator.ConnectionState.java

License:Apache License

@Override
public void process(WatchedEvent event) {
    if (LOG_EVENTS) {
        log.debug("ConnectState watcher: " + event);
    }//from w ww  .  ja  v  a  2s. c om

    final boolean eventTypeNone = event.getType() == Watcher.Event.EventType.None;

    if (eventTypeNone) {
        boolean wasConnected = isConnected.get();
        boolean newIsConnected = checkState(event.getState(), wasConnected);
        if (newIsConnected != wasConnected) {
            isConnected.set(newIsConnected);
            connectionStartMs = System.currentTimeMillis();
        }
    }

    // only wait during tests
    if (debugWaitOnExpiredEvent && event.getState() == Event.KeeperState.Expired) {
        waitOnExpiredEvent();
    }

    for (Watcher parentWatcher : parentWatchers) {
        OperationTrace trace = new OperationTrace("connection-state-parent-process", tracer.get(),
                getSessionId());
        parentWatcher.process(event);
        trace.commit();
    }

    if (eventTypeNone)
        handleState(event.getState());
}

From source file:org.apache.curator.framework.imps.CuratorFrameworkImpl.java

License:Apache License

public CuratorFrameworkImpl(CuratorFrameworkFactory.Builder builder) {
    ZookeeperFactory localZookeeperFactory = makeZookeeperFactory(builder.getZookeeperFactory());
    this.client = new CuratorZookeeperClient(localZookeeperFactory, builder.getEnsembleProvider(),
            builder.getSessionTimeoutMs(), builder.getConnectionTimeoutMs(), new Watcher() {
                @Override//www.ja  v  a  2 s .  c om
                public void process(WatchedEvent watchedEvent) {
                    CuratorEvent event = new CuratorEventImpl(CuratorFrameworkImpl.this,
                            CuratorEventType.WATCHED, watchedEvent.getState().getIntValue(),
                            unfixForNamespace(watchedEvent.getPath()), null, null, null, null, null,
                            watchedEvent, null);
                    processEvent(event);
                }
            }, builder.getRetryPolicy(), builder.canBeReadOnly());

    listeners = new ListenerContainer<CuratorListener>();
    unhandledErrorListeners = new ListenerContainer<UnhandledErrorListener>();
    backgroundOperations = new DelayQueue<OperationAndData<?>>();
    namespace = new NamespaceImpl(this, builder.getNamespace());
    threadFactory = getThreadFactory(builder);
    maxCloseWaitMs = builder.getMaxCloseWaitMs();
    connectionStateManager = new ConnectionStateManager(this, builder.getThreadFactory());
    compressionProvider = builder.getCompressionProvider();
    aclProvider = builder.getAclProvider();
    state = new AtomicReference<CuratorFrameworkState>(CuratorFrameworkState.LATENT);
    useContainerParentsIfAvailable = builder.useContainerParentsIfAvailable();

    byte[] builderDefaultData = builder.getDefaultData();
    defaultData = (builderDefaultData != null) ? Arrays.copyOf(builderDefaultData, builderDefaultData.length)
            : new byte[0];
    authInfos = buildAuths(builder);

    failedDeleteManager = new FailedDeleteManager(this);
    namespaceFacadeCache = new NamespaceFacadeCache(this);
}

From source file:org.apache.curator.framework.imps.TestEnabledSessionExpiredState.java

License:Apache License

@Test
public void testInjectedWatchedEvent() throws Exception {
    Assert.assertEquals(states.poll(timing.milliseconds(), TimeUnit.MILLISECONDS), ConnectionState.CONNECTED);

    final CountDownLatch latch = new CountDownLatch(1);
    Watcher watcher = new Watcher() {
        @Override//from   w ww .  j a v  a 2s  .  c o m
        public void process(WatchedEvent event) {
            if (event.getType() == Event.EventType.None) {
                if (event.getState() == Event.KeeperState.Expired) {
                    latch.countDown();
                }
            }
        }
    };
    client.checkExists().usingWatcher(watcher).forPath("/");
    server.stop();
    Assert.assertTrue(timing.forSessionSleep().awaitLatch(latch));
}

From source file:org.apache.curator.framework.imps.TestFrameworkEdges.java

License:Apache License

@Test
public void testSessionKilled() throws Exception {
    CuratorFramework client = CuratorFrameworkFactory.newClient(server.getConnectString(), timing.session(),
            timing.connection(), new RetryOneTime(1));
    client.start();/*  w w  w  . j a v a 2 s  .  c  o  m*/
    try {
        client.create().forPath("/sessionTest");

        final AtomicBoolean sessionDied = new AtomicBoolean(false);
        Watcher watcher = new Watcher() {
            @Override
            public void process(WatchedEvent event) {
                if (event.getState() == Event.KeeperState.Expired) {
                    sessionDied.set(true);
                }
            }
        };
        client.checkExists().usingWatcher(watcher).forPath("/sessionTest");
        KillSession.kill(client.getZookeeperClient().getZooKeeper(), server.getConnectString());
        Assert.assertNotNull(client.checkExists().forPath("/sessionTest"));
        Assert.assertTrue(sessionDied.get());
    } finally {
        CloseableUtils.closeQuietly(client);
    }
}