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:com.continuuity.weave.internal.state.ZKServiceDecorator.java

License:Open Source License

private Watcher createConnectionWatcher() {
    final AtomicReference<Watcher.Event.KeeperState> keeperState = new AtomicReference<Watcher.Event.KeeperState>();

    return new Watcher() {
        @Override//w w w  .j a va2s.  c  om
        public void process(WatchedEvent event) {
            // When connected (either first time or reconnected from expiration), creates a ephemeral node
            Event.KeeperState current = event.getState();
            Event.KeeperState previous = keeperState.getAndSet(current);

            LOG.info("Connection state changed " + previous + " => " + current);

            if (current == Event.KeeperState.SyncConnected
                    && (previous == null || previous == Event.KeeperState.Expired)) {
                String liveNode = "/instances/" + id;
                LOG.info("Create live node " + liveNode);

                JsonObject content = new JsonObject();
                content.add("data", liveNodeData.get());
                listenFailure(zkClient.create(liveNode, encodeJson(content), CreateMode.EPHEMERAL));
            }
        }
    };
}

From source file:com.continuuity.weave.internal.zookeeper.KillZKSession.java

License:Apache License

/**
 * Kills a Zookeeper client to simulate failure scenarious during testing.
 * Callee will provide the amount of time to wait before it's considered failure
 * to kill a client.//  ww w .ja  v  a  2  s. c  o  m
 *
 * @param client that needs to be killed.
 * @param connectionString of Quorum
 * @param maxMs time in millisecond specifying the max time to kill a client.
 * @throws IOException When there is IO error
 * @throws InterruptedException When call has been interrupted.
 */
public static void kill(ZooKeeper client, String connectionString, int maxMs)
        throws IOException, InterruptedException {
    final CountDownLatch latch = new CountDownLatch(1);
    ZooKeeper zk = new ZooKeeper(connectionString, maxMs, new Watcher() {
        @Override
        public void process(WatchedEvent event) {
            if (event.getState() == Event.KeeperState.SyncConnected) {
                latch.countDown();
            }
        }
    }, client.getSessionId(), client.getSessionPasswd());

    try {
        Preconditions.checkState(latch.await(maxMs, TimeUnit.MILLISECONDS), "Fail to kill ZK connection.");
    } finally {
        zk.close();
    }
}

From source file:com.continuuity.weave.internal.zookeeper.RewatchOnExpireWatcher.java

License:Open Source License

@Override
public void process(WatchedEvent event) {
    if (delegate != null && event.getType() != Event.EventType.None) {
        try {/* w  ww  .j  a v a 2s .  co  m*/
            delegate.process(event);
        } catch (Throwable t) {
            LOG.error("Watcher throws exception.", t);
        }
    }

    if (event.getState() != Event.KeeperState.Expired) {
        return;
    }
    switch (actionType) {
    case EXISTS:
        exists();
        break;
    case CHILDREN:
        children();
        break;
    case DATA:
        data();
        break;
    }
}

From source file:com.dangdang.config.service.easyzk.ConfigNodeEventListener.java

License:Apache License

@Override
public void eventReceived(CuratorFramework client, CuratorEvent event) throws Exception {
    if (LOGGER.isDebugEnabled()) {
        LOGGER.debug(event.toString());//from   w w w  . j av  a  2  s.c  om
    }

    final WatchedEvent watchedEvent = event.getWatchedEvent();
    if (watchedEvent != null) {

        if (LOGGER.isDebugEnabled()) {
            LOGGER.debug(watchedEvent.toString());
        }

        if (watchedEvent.getState() == KeeperState.SyncConnected) {
            boolean someChange = false;
            switch (watchedEvent.getType()) {
            case NodeChildrenChanged:
                configNode.loadNode(false);
                someChange = true;
                break;
            case NodeDataChanged:
                configNode.loadKey(watchedEvent.getPath());
                someChange = true;
                break;
            default:
                break;
            }

            if (someChange && configNode.getConfigLocalCache() != null) {
                configNode.getConfigLocalCache().saveLocalCache(configNode, configNode.getNode());
            }
        }
    }
}

From source file:com.dangdang.config.service.zookeeper.ConfigNodeEventListener.java

License:Apache License

@Override
public void eventReceived(CuratorFramework client, CuratorEvent event) throws Exception {
    if (LOGGER.isDebugEnabled()) {
        LOGGER.debug(event.toString());//from w w  w .  j a  va  2  s .c  o  m
    }

    final WatchedEvent watchedEvent = event.getWatchedEvent();
    if (watchedEvent != null) {
        LOGGER.debug("Watched event: {}" + watchedEvent);

        if (watchedEvent.getState() == KeeperState.SyncConnected) {
            boolean someChange = false;
            switch (watchedEvent.getType()) {
            case NodeChildrenChanged:
                configNode.loadNode();
                someChange = true;
                break;
            case NodeDataChanged:
                configNode.reloadKey(watchedEvent.getPath());
                someChange = true;
                break;
            default:
                break;
            }

            if (someChange && configNode.getConfigLocalCache() != null) {
                configNode.getConfigLocalCache().saveLocalCache(configNode, configNode.getNode());
            }
        }
    }
}

From source file:com.dangdang.config.service.zookeeper.ZookeeperConfigGroup.java

License:Apache License

/**
 * ?/*  www .ja  v  a  2 s .c o m*/
 */
private void initConfigs() {
    client = CuratorFrameworkFactory.newClient(configProfile.getConnectStr(), configProfile.getRetryPolicy());
    client.start();

    client.getCuratorListenable().addListener(new CuratorListener() {
        @Override
        public void eventReceived(CuratorFramework client, CuratorEvent event) throws Exception {
            LOGGER.info("Event: {}", event);

            final WatchedEvent watchedEvent = event.getWatchedEvent();
            if (watchedEvent != null) {
                LOGGER.debug("Watched event: {}", watchedEvent);

                if (watchedEvent.getState() == Watcher.Event.KeeperState.SyncConnected) {
                    switch (watchedEvent.getType()) {
                    case NodeChildrenChanged:
                        loadNode();
                        break;
                    case NodeDataChanged:
                        reloadKey(watchedEvent.getPath());
                        break;
                    default:
                        break;
                    }
                }
            }
        }
    });

    final CountDownLatch countDownLatch = new CountDownLatch(1);
    client.getConnectionStateListenable().addListener(new ConnectionStateListener() {

        @Override
        public void stateChanged(CuratorFramework client, ConnectionState newState) {
            LOGGER.info("Connection state change: {}", newState);
            if (newState == ConnectionState.CONNECTED) {
                LOGGER.debug("Loading properties for node: {}", node);
                loadNode();
                countDownLatch.countDown();
            } else if (newState == ConnectionState.RECONNECTED) {
                loadNode();
            }
        }
    });

    try {
        countDownLatch.await();
    } catch (InterruptedException e) {
        LOGGER.error(e.getMessage(), e);
        throw new RuntimeException("Config Load error.", e);
    }

    // Update local cache
    if (configLocalCache != null) {
        configLocalCache.saveLocalCache(this, node);
    }
}

From source file:com.datis.zookafka.client.Creator.java

@Override
public void process(WatchedEvent e) {
    LOG.info("Processing event: " + e.toString());
    if (e.getType() == Event.EventType.None) {
        switch (e.getState()) {
        case SyncConnected:
            System.out.println("Event SynConnected");
            connected = true;//from  w ww . j  a  v a2  s. com
            break;
        case Disconnected:
            System.out.println("Event Disconnected");
            connected = false;
            break;
        case Expired:
            System.out.println("Event Expired");
            expired = true;
            connected = false;
            LOG.error("Session expiration");
        default:
            break;
        }
    }
}

From source file:com.demo.master_work.Client.java

License:Apache License

public void process(WatchedEvent e) {
    System.out.println(e);/*from   w  ww .  ja  va2s  .  co  m*/
    if (e.getType() == Event.EventType.None) {
        switch (e.getState()) {
        case SyncConnected:
            connected = true;
            break;
        case Disconnected:
            connected = false;
            break;
        case Expired:
            expired = true;
            connected = false;
            System.out.println("Exiting due to session expiration");
        default:
            break;
        }
    }
}

From source file:com.dianping.lion.client.zookeeper.SessionRecoverableZookeeper.java

License:Open Source License

@Override
public void process(WatchedEvent event) {
    if (event.getType() == Event.EventType.None && event.getState() == KeeperState.Expired) {
        try {/*from  w w  w.  j  av a  2s .c  o  m*/
            reconnectToZookeeper(this.zookeeper);
        } catch (Exception e) {
            logger.warn("Reconnect to zookeeper cluster failed while session expired.", e);
        }
    }
    if (this.watcher != null) {
        this.watcher.process(event);
    }
}

From source file:com.digitgroup.fullstackroad.j2ee.zookeeper.Client.java

License:Apache License

public void process(WatchedEvent e) {
    System.out.println(e);/*from ww  w. java  2s.c o  m*/
    if (e.getType() == EventType.None) {
        switch (e.getState()) {
        case SyncConnected:
            connected = true;
            break;
        case Disconnected:
            connected = false;
            break;
        case Expired:
            expired = true;
            connected = false;
            System.out.println("Exiting due to session expiration");
        default:
            break;
        }
    }
}