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.proofpoint.zookeeper.ConnectionState.java

License:Apache License

@Override
public void process(WatchedEvent event) {
    boolean localIsConnected;
    synchronized (this) {
        boolean needsNotify = false;
        if (event.getType() == Watcher.Event.EventType.None) {
            boolean wasConnected = isConnected;
            isConnected = (event.getState() == Event.KeeperState.SyncConnected);
            needsNotify = isConnected && !wasConnected;

            if (event.getState() == Event.KeeperState.Expired) {
                File sessionIdFile = new File(config.getSessionStorePath());
                if (!sessionIdFile.delete()) {
                    log.error("Could not delete session ID file: " + config.getSessionStorePath());
                }//from   w w  w .  j  av  a  2  s  .  c  o  m
                needsNotify = true;
            } else if (event.getState() == Event.KeeperState.Disconnected) {
                needsNotify = true;
            }
        }

        if (needsNotify) {
            if (!isConnected && (zookeeper != null)) {
                try {
                    zookeeper.close();
                } catch (InterruptedException e) {
                    Thread.currentThread().interrupt();
                    log.error(e, "Interrupted trying to close Zookeeper. Ignoring at this level.");
                }
                clear();
            }

            notifyAll();
        }

        localIsConnected = isConnected;
    }

    if (localIsConnected) {
        client.postEvent(new ZookeeperEvent(getTypeFromWatched(event), 0, event.getPath(), null, null, null,
                null, null, null));
    }
}

From source file:com.rapleaf.hank.ZkTestCase.java

License:Apache License

@Override
protected void setUp() throws Exception {
    super.setUp();
    Logger.getLogger("org.apache.zookeeper").setLevel(Level.WARN);

    setupZkServer();// ww  w  .  j  a  v  a2  s.c om

    final Object lock = new Object();
    final AtomicBoolean connected = new AtomicBoolean(false);

    zk = new ZooKeeperPlus("127.0.0.1:" + zkClientPort, 1000000, new Watcher() {
        @Override
        public void process(WatchedEvent event) {
            switch (event.getType()) {
            case None:
                if (event.getState() == KeeperState.SyncConnected) {
                    connected.set(true);
                    synchronized (lock) {
                        lock.notifyAll();
                    }
                }
            }
            LOG.debug(event.toString());
        }
    });

    synchronized (lock) {
        lock.wait(2000);
    }
    if (!connected.get()) {
        fail("timed out waiting for the zk client connection to come online!");
    }
    LOG.debug("session timeout: " + zk.getSessionTimeout());

    zk.deleteNodeRecursively(zkRoot);
    createNodeRecursively(zkRoot);
}

From source file:com.rapleaf.hank.zookeeper.ZooKeeperConnection.java

License:Apache License

/**
 * Listens for notifications from the ZooKeeper service telling that we have
 * been connected, disconnected, or our session has expired.
 * //from  w ww  .j a v a 2 s .c o m
 * Upon connection, we first make a call to {@link #onConnect()}, and then we
 * release all threads that are blocking on {@link #waitForConnection()}.
 * 
 * Upon disconnection, we call {@link #onDisconnect()}, and then we reset the
 * latch to block any threads that call {@link #waitForConnection()}.
 * 
 * On session expiry, we call {@link #onSessionExpire()}, reset the latch, and
 * then manually try to reconnect to the ZooKeeper service.
 * 
 * @param event
 */
@Override
public void process(WatchedEvent event) {
    if (event.getType() == Event.EventType.None) {
        KeeperState state = event.getState();
        switch (state) {
        case SyncConnected:
            onConnect();
            connectedSignal.countDown();
            break;
        case Disconnected:
            onDisconnect();
            connectedSignal = new CountDownLatch(1);
            break;
        case Expired:
            onSessionExpire();
            connectedSignal = new CountDownLatch(1);
            try {
                connect(maxConnectAttempts);
            } catch (IOException e) {
                LOG.fatal("Failed to connect to the ZooKeeper service", e);
                throw new RuntimeException("Couldn't connect to the ZooKeeper service", e);
            }
            break;
        }
        // Return because we are done processing this event; do not let subclasses
        // process.
        return;
    }
}

From source file:com.renren.zookeeper.accessor.test.PublishTest.java

License:Open Source License

@BeforeClass
public static void init() throws IOException, KeeperException {
    if (zookeeperBackgroundServer == null) {
        zookeeperBackgroundServer = new ZookeeperBackgroundServer();
        Thread zkBackgroundServer = new Thread(zookeeperBackgroundServer);
        zkBackgroundServer.setDaemon(true);
        zkBackgroundServer.start();//  www  . j a v  a2  s .c o m
    }
    config = new ZkConfig();
    final CountDownLatch countDownLatch = new CountDownLatch(1);
    zooKeeper = new ZooKeeper(config.getHost(), config.getSessionTime(), new Watcher() {

        @Override
        public void process(WatchedEvent event) {
            if (event.getType() == EventType.None && event.getState() == KeeperState.SyncConnected) {
                countDownLatch.countDown();
            } else if (event.getType() == EventType.None && event.getState() == KeeperState.Disconnected) {
                System.err.println("The connection between zookeeper server and localhost has down.");
            }
        }
    });
    try {
        countDownLatch.await(10, TimeUnit.SECONDS);
    } catch (InterruptedException e1) {
        System.err.println("Can't connect zookeeper server, please check 2181 port and config file.");
        e1.printStackTrace();
        throw new IOException("Can't connect zookeeper server.");
    }
    try {
        accessor = Accessor.getInstance(config);
        recursiveDelete('/' + PREFIX_STRING);
        try {
            zooKeeper.delete('/' + config.getRoot(), -1);
        } catch (KeeperException.NoNodeException e1) {
            // node not exist, ignore.
        }
        zooKeeper.create('/' + config.getRoot(), null, Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
        recursiveCreate('/' + PREFIX_STRING);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
}

From source file:com.sharksharding.resources.conn.ZookeeperConnectionManager.java

License:Apache License

/**
 * zookeeper//from  w ww.  ja v a  2  s .c o m
 * 
 * @author JohnGao
 */
private void connection() {
    try {
        zk_client = new ZooKeeper(zk_address, zk_session_timeout, new Watcher() {
            @Override
            public void process(WatchedEvent event) {
                final KeeperState STATE = event.getState();
                switch (STATE) {
                case SyncConnected:
                    countDownLatch.countDown();
                    logger.info("connection zookeeper success");
                    break;
                case Disconnected:
                    logger.warn("zookeeper connection is disconnected");
                    break;
                case Expired:
                    logger.error("zookeeper session expired");
                    break;
                case AuthFailed:
                    logger.error("authentication failure");
                default:
                    break;
                }
            }
        });
        countDownLatch.await();
        /* ?? */
        registerNode.register(zk_client, nodePath);
    } catch (IOException | InterruptedException e) {
        throw new ConnectionException(e.toString());
    }
}

From source file:com.sharksharding.util.sequence.zookeeper.ZookeeperConnectionManager.java

License:Apache License

/**
 * zookeeper//  w  w w  . j av  a2s.co  m
 * 
 * @author gaoxianglong
 * 
 * @throws ConnectionException
 * 
 * @return void
 */
private static void connection() throws ConnectionException {
    try {
        zk_client = new ZooKeeper(zk_address, zk_session_timeout, new Watcher() {
            @Override
            public void process(WatchedEvent event) {
                final KeeperState STATE = event.getState();
                switch (STATE) {
                case SyncConnected:
                    countDownLatch.countDown();
                    logger.info("connection zookeeper success");
                    break;
                case Disconnected:
                    logger.warn("zookeeper connection is disconnected");
                    break;
                case Expired:
                    logger.error("zookeeper session expired");
                    break;
                case AuthFailed:
                    logger.error("authentication failure");
                default:
                    break;
                }
            }
        });
        countDownLatch.await();
        setZk_client(zk_client);
    } catch (IOException | InterruptedException e) {
        throw new ConnectionException(e.toString());
    }
}

From source file:com.sonian.elasticsearch.zookeeper.client.ZooKeeperClientService.java

License:Apache License

@Override
protected void doStart() throws ElasticsearchException {
    try {//from   w w w  . ja v a 2s . co  m
        final Watcher watcher = new Watcher() {
            @Override
            public void process(WatchedEvent event) {
                switch (event.getState()) {
                case Expired:
                    resetSession();
                    break;
                case SyncConnected:
                    notifySessionConnected();
                    break;
                case Disconnected:
                    notifySessionDisconnected();
                    break;
                }
            }
        };
        zooKeeper = zooKeeperFactory.newZooKeeper(watcher);
        createPersistentNode(environment.rootNodePath());
        createPersistentNode(environment.clustersNodePath());
    } catch (InterruptedException e) {
        throw new ZooKeeperClientException("Cannot start ZooKeeper client", e);
    }
}

From source file:com.takin.rpc.zkclient.ZkClient.java

License:Apache License

public void process(WatchedEvent event) {
    logger.debug("Received event: " + event);
    _zookeeperEventThread = Thread.currentThread();

    boolean stateChanged = event.getPath() == null;
    boolean znodeChanged = event.getPath() != null;
    boolean dataChanged = event.getType() == EventType.NodeDataChanged || //
            event.getType() == EventType.NodeDeleted || event.getType() == EventType.NodeCreated || //
            event.getType() == EventType.NodeChildrenChanged;

    getEventLock().lock();//from  w  w  w. ja v a 2 s  .c o  m
    try {

        // We might have to install child change event listener if a new node was created
        if (getShutdownTrigger()) {
            logger.debug("ignoring event '{" + event.getType() + " | " + event.getPath()
                    + "}' since shutdown triggered");
            return;
        }
        if (stateChanged) {
            processStateChanged(event);
        }
        if (dataChanged) {
            processDataOrChildChange(event);
        }
    } finally {
        if (stateChanged) {
            getEventLock().getStateChangedCondition().signalAll();

            // If the session expired we have to signal all conditions, because watches might have been removed and
            // there is no guarantee that those
            // conditions will be signaled at all after an Expired event
            if (event.getState() == KeeperState.Expired) {
                getEventLock().getZNodeEventCondition().signalAll();
                getEventLock().getDataChangedCondition().signalAll();
                // We also have to notify all listeners that something might have changed
                fireAllEvents();
            }
        }
        if (znodeChanged) {
            getEventLock().getZNodeEventCondition().signalAll();
        }
        if (dataChanged) {
            getEventLock().getDataChangedCondition().signalAll();
        }
        getEventLock().unlock();
        logger.debug("Leaving process event");
    }
}

From source file:com.takin.rpc.zkclient.ZkClient.java

License:Apache License

private void processStateChanged(WatchedEvent event) {
    logger.info("zookeeper state changed (" + event.getState() + ")");
    setCurrentState(event.getState());//from   w  ww  .  j a va2  s  . c  o  m
    if (getShutdownTrigger()) {
        return;
    }
    try {
        fireStateChangedEvent(event.getState());

        if (event.getState() == KeeperState.Expired) {
            reconnect();
            fireNewSessionEvents();
        }
    } catch (final Exception e) {
        throw new RuntimeException("Exception while restarting zk client", e);
    }
}

From source file:com.talis.platform.sequencing.zookeeper.ZooKeeperProvider.java

License:Apache License

@Override
public void process(WatchedEvent event) {
    switch (event.getType()) {
    case None://from  w w w. ja v  a  2 s.  co m
        processNoneTypeEvent(event.getState());
    default:
        // do nothing
    }
}