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.hadoop.hbase.zookeeper.ZooKeeperWrapper.java

License:Apache License

/**
 * This is the primary ZK watcher/*ww  w .j  a  v a 2 s .c  o m*/
 * @see org.apache.zookeeper.Watcher#process(org.apache.zookeeper.WatchedEvent)
 */
@Override
public synchronized void process(WatchedEvent event) {
    LOG.debug("<" + instanceName + "> Received ZK WatchedEvent: " + "[path=" + event.getPath() + "] "
            + "[state=" + event.getState().toString() + "] " + "[type=" + event.getType().toString() + "]");
    if (event.getType() == EventType.None) {
        if (event.getState() == KeeperState.Expired) {
            this.abort("ZooKeeper Session Expiration, aborting server",
                    new KeeperException.SessionExpiredException());
        } else if (event.getState() == KeeperState.Disconnected) {
            LOG.warn("Disconnected from ZooKeeper");
        } else if (event.getState() == KeeperState.SyncConnected) {
            LOG.info("Reconnected to ZooKeeper");
        }
        return;
    }
    for (Watcher w : listeners) {
        try {
            w.process(event);
        } catch (Throwable t) {
            LOG.error("<" + instanceName + ">" + " Sub-ZK Watcher threw an exception " + "in process()", t);
        }
    }
}

From source file:org.apache.hadoop.hdfs.server.namenode.bookkeeper.zk.ConnectionWatcher.java

License:Apache License

@Override
public void process(WatchedEvent event) {
    if (Event.KeeperState.SyncConnected.equals(event.getState())) {
        connectLatch.countDown();//from  w  w w .  j a  v  a 2 s .co m
        LOG.info("Connected to ZooKeeper");
    }
}

From source file:org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore.java

License:Apache License

@VisibleForTesting
@Private//  ww  w  .  j  a va  2s . com
@Unstable
public synchronized void processWatchEvent(WatchedEvent event) throws Exception {
    Event.EventType eventType = event.getType();
    LOG.info("Watcher event type: " + eventType + " with state:" + event.getState() + " for path:"
            + event.getPath() + " for " + this);

    if (eventType == Event.EventType.None) {

        // the connection state has changed
        switch (event.getState()) {
        case SyncConnected:
            LOG.info("ZKRMStateStore Session connected");
            if (oldZkClient != null) {
                // the SyncConnected must be from the client that sent Disconnected
                zkClient = oldZkClient;
                oldZkClient = null;
                ZKRMStateStore.this.notifyAll();
                LOG.info("ZKRMStateStore Session restored");
            }
            break;
        case Disconnected:
            LOG.info("ZKRMStateStore Session disconnected");
            oldZkClient = zkClient;
            zkClient = null;
            break;
        case Expired:
            // the connection got terminated because of session timeout
            // call listener to reconnect
            LOG.info("ZKRMStateStore Session expired");
            createConnection();
            break;
        default:
            LOG.error("Unexpected Zookeeper" + " watch event state: " + event.getState());
            break;
        }
    }
}

From source file:org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore.java

License:Apache License

@VisibleForTesting
@Private//  ww w  . ja va2 s .c om
@Unstable
public synchronized void processWatchEvent(ZooKeeper zk, WatchedEvent event) throws Exception {
    // only process watcher event from current ZooKeeper Client session.
    if (zk != activeZkClient) {
        LOG.info("Ignore watcher event type: " + event.getType() + " with state:" + event.getState()
                + " for path:" + event.getPath() + " from old session");
        return;
    }

    Event.EventType eventType = event.getType();
    LOG.info("Watcher event type: " + eventType + " with state:" + event.getState() + " for path:"
            + event.getPath() + " for " + this);

    if (eventType == Event.EventType.None) {

        // the connection state has changed
        switch (event.getState()) {
        case SyncConnected:
            LOG.info("ZKRMStateStore Session connected");
            if (zkClient == null) {
                // the SyncConnected must be from the client that sent Disconnected
                zkClient = activeZkClient;
                ZKRMStateStore.this.notifyAll();
                LOG.info("ZKRMStateStore Session restored");
            }
            break;
        case Disconnected:
            LOG.info("ZKRMStateStore Session disconnected");
            zkClient = null;
            break;
        case Expired:
            // the connection got terminated because of session timeout
            // call listener to reconnect
            LOG.info("ZKRMStateStore Session expired");
            createConnection();
            break;
        default:
            LOG.error("Unexpected Zookeeper" + " watch event state: " + event.getState());
            break;
        }
    }
}

From source file:org.apache.hedwig.server.netty.PubSubServer.java

License:Apache License

protected void instantiateZookeeperClient() throws Exception {
    if (!conf.isStandalone()) {
        final CountDownLatch signalZkReady = new CountDownLatch(1);

        zk = new ZooKeeper(conf.getZkHost(), conf.getZkTimeout(), new Watcher() {
            @Override//from  www .  j  a  v  a  2  s.  c  om
            public void process(WatchedEvent event) {
                if (Event.KeeperState.SyncConnected.equals(event.getState())) {
                    signalZkReady.countDown();
                }
            }
        });
        // wait until connection is effective
        if (!signalZkReady.await(conf.getZkTimeout() * 2, TimeUnit.MILLISECONDS)) {
            logger.error("Could not establish connection with ZooKeeper after zk_timeout*2 = "
                    + conf.getZkTimeout() * 2 + " ms. (Default value for zk_timeout is 2000).");
            throw new Exception("Could not establish connection with ZooKeeper after zk_timeout*2 = "
                    + conf.getZkTimeout() * 2 + " ms. (Default value for zk_timeout is 2000).");
        }
    }
}

From source file:org.apache.helix.manager.zk.zookeeper.ZkClient.java

License:Apache License

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

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

    getEventLock().lock();//www  .  ja v  a2 s  .  c o m
    try {

        // We might have to install child change event listener if a new node was created
        if (getShutdownTrigger()) {
            LOG.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
            // TODO PVo write a test for this
            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();

        // update state change counter.
        recordStateChange(stateChanged, dataChanged);

        LOG.debug("Leaving process event");
    }
}

From source file:org.apache.helix.manager.zk.zookeeper.ZkClient.java

License:Apache License

private void processStateChanged(WatchedEvent event) {
    LOG.info("zookeeper state changed (" + event.getState() + ")");
    setCurrentState(event.getState());//from   w w  w  . j  a va  2  s .c  o  m
    if (getShutdownTrigger()) {
        return;
    }
    fireStateChangedEvent(event.getState());
    if (event.getState() == KeeperState.Expired) {
        try {
            reconnect();
            fireNewSessionEvents();
        } catch (final Exception e) {
            LOG.info("Unable to re-establish connection. Notifying consumer of the following exception: ", e);
            fireSessionEstablishmentError(e);
        }
    }
}

From source file:org.apache.hms.controller.Controller.java

License:Apache License

public void process(WatchedEvent event) {
    if (event.getType() == Event.EventType.None) {
        // We are are being told that the state of the
        // connection has changed
        switch (event.getState()) {
        case SyncConnected:
            // In this particular example we don't need to do anything
            // here - watches are automatically re-registered with 
            // server and any watches triggered while the client was 
            // disconnected will be delivered (in order of course)
            break;
        case Expired:
            // It's all over
            running = false;/*from   ww  w  .j a v  a2s  .  c  o m*/
            commandHandler.stop();
            break;
        }
    }
}

From source file:org.apache.niolex.zookeeper.core.ZKConnector.java

License:Apache License

/**
 * Override super method/*from   w w  w  .  j  av a 2 s . c om*/
 * @see org.apache.zookeeper.Watcher#process(org.apache.zookeeper.WatchedEvent)
 */
@Override
public void process(WatchedEvent event) {
    LOG.info("ZK Connection status changed to: {}.", event.getState());
    switch (event.getState()) {
    case SyncConnected:
        latch.countDown();
        break;
    case Expired:
        reconnect();
        break;
    }
}

From source file:org.apache.solr.common.cloud.ConnectionManager.java

License:Apache License

@Override
public synchronized void process(WatchedEvent event) {
    if (log.isInfoEnabled()) {
        log.info("Watcher " + this + " name:" + name + " got event " + event + " path:" + event.getPath()
                + " type:" + event.getType());
    }//from   ww  w . ja  va  2  s. c  o  m

    if (isClosed) {
        log.info("Client->ZooKeeper status change trigger but we are already closed");
        return;
    }

    state = event.getState();
    if (state == KeeperState.SyncConnected) {
        connected = true;
        clientConnected.countDown();
        connectionStrategy.connected();
    } else if (state == KeeperState.Expired) {
        connected = false;
        log.info(
                "Our previous ZooKeeper session was expired. Attempting to reconnect to recover relationship with ZooKeeper...");

        try {
            connectionStrategy.reconnect(zkServerAddress, zkClientTimeout, this,
                    new ZkClientConnectionStrategy.ZkUpdate() {
                        @Override
                        public void update(SolrZooKeeper keeper) {
                            try {
                                waitForConnected(Long.MAX_VALUE);
                            } catch (Exception e1) {
                                closeKeeper(keeper);
                                throw new RuntimeException(e1);
                            }

                            log.info("Connection with ZooKeeper reestablished.");
                            try {
                                client.updateKeeper(keeper);
                            } catch (InterruptedException e) {
                                closeKeeper(keeper);
                                Thread.currentThread().interrupt();
                                // we must have been asked to stop
                                throw new RuntimeException(e);
                            } catch (Throwable t) {
                                closeKeeper(keeper);
                                throw new RuntimeException(t);
                            }

                            if (onReconnect != null) {
                                onReconnect.command();
                            }

                            synchronized (ConnectionManager.this) {
                                ConnectionManager.this.connected = true;
                            }

                        }
                    });
        } catch (Exception e) {
            SolrException.log(log, "", e);
        }
        log.info("Connected:" + connected);
    } else if (state == KeeperState.Disconnected) {
        log.info("zkClient has disconnected");
        connected = false;
        connectionStrategy.disconnected();
    } else {
        connected = false;
    }
    notifyAll();
}