Example usage for org.apache.zookeeper WatchedEvent getPath

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

Introduction

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

Prototype

public String getPath() 

Source Link

Usage

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   w w  w  . jav a  2s . com*/

    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();
}

From source file:org.apache.storm.zookeeper.Zookeeper.java

License:Apache License

public CuratorFramework mkClientImpl(Map conf, List<String> servers, Object port, String root,
        final WatcherCallBack watcher, Map authConf) {
    CuratorFramework fk;/*  w  ww.j  ava2s .  co m*/
    if (authConf != null) {
        fk = Utils.newCurator(conf, servers, port, root, new ZookeeperAuthInfo(authConf));
    } else {
        fk = Utils.newCurator(conf, servers, port, root);
    }

    fk.getCuratorListenable().addListener(new CuratorListener() {
        @Override
        public void eventReceived(CuratorFramework _fk, CuratorEvent e) throws Exception {
            if (e.getType().equals(CuratorEventType.WATCHED)) {
                WatchedEvent event = e.getWatchedEvent();
                watcher.execute(event.getState(), event.getType(), event.getPath());
            }
        }
    });
    fk.start();
    return fk;
}

From source file:org.bboxdb.distribution.mode.KDtreeZookeeperAdapter.java

License:Apache License

@Override
public void process(final WatchedEvent event) {

    // Ignore events like connected and disconnected
    if (event == null || event.getPath() == null) {
        return;/* w w w .  j  a v  a 2  s  .  c  om*/
    }

    final String path = event.getPath();

    if (path.equals(distributionGroupZookeeperAdapter.getClusterPath())) {
        // Amount of distribution groups have changed
        readAndHandleVersionNE();
    } else if (path.endsWith(ZookeeperNodeNames.NAME_SYSTEMS)) {
        // Some systems were added or deleted
        handleSystemNodeUpdateEvent(event);
    } else if (path.endsWith(ZookeeperNodeNames.NAME_STATE)) {
        // The state of one has changed
        handleNodeUpdateEvent(event);
    } else {
        logger.info("Ingoring event for path: {}", path);
    }
}

From source file:org.bboxdb.distribution.mode.KDtreeZookeeperAdapter.java

License:Apache License

/**
 * Handle node updates// ww w .  j a v a 2s .c o m
 * @param event
 */
protected void handleNodeUpdateEvent(final WatchedEvent event) {

    if (rootNode == null) {
        logger.debug("Ignore systems update event, because root not node is null: {}", distributionGroup);
        return;
    }

    // Remove state node from path
    final String path = event.getPath().replace("/" + ZookeeperNodeNames.NAME_STATE, "");

    final DistributionRegion nodeToUpdate = distributionGroupZookeeperAdapter.getNodeForPath(rootNode, path);

    try {
        if (!distributionGroupZookeeperAdapter
                .isDistributionGroupRegistered(rootNode.getDistributionGroupName().getFullname())) {
            logger.info("Distribution group was unregistered, ignore event");
            return;
        }

        readDistributionGroupRecursive(path, nodeToUpdate);
    } catch (ZookeeperException e) {
        logger.warn("Got exception while updating node for: " + path, e);
    }
}

From source file:org.bboxdb.distribution.mode.KDtreeZookeeperAdapter.java

License:Apache License

/**
 * Handle system update events//from   w  ww.j  a  va 2  s.co  m
 * @param event
 */
protected void handleSystemNodeUpdateEvent(final WatchedEvent event) {

    if (rootNode == null) {
        logger.debug("Ignore systems update event, because root not node is null: {}", distributionGroup);
        return;
    }

    final String path = event.getPath().replace("/" + ZookeeperNodeNames.NAME_SYSTEMS, "");

    final DistributionRegion nodeToUpdate = distributionGroupZookeeperAdapter.getNodeForPath(rootNode, path);

    try {
        updateSystemsForRegion(nodeToUpdate);
    } catch (ZookeeperException e) {
        logger.warn("Got exception while updating systems for: " + path, e);
    }
}

From source file:org.bboxdb.distribution.zookeeper.ZookeeperClient.java

License:Apache License

/**
 * Process zooekeeper events//w  w w .  j a va2  s .c  om
 * @param watchedEvent
 */
protected void processZookeeperEvent(final WatchedEvent watchedEvent) {
    // Ignore null parameter
    if (watchedEvent == null) {
        logger.warn("process called with an null argument");
        return;
    }

    // Shutdown is pending, stop event processing
    if (shutdownPending == true) {
        return;
    }

    // Ignore type=none event
    if (watchedEvent.getType() == EventType.None) {
        return;
    }

    // Process events
    if (watchedEvent.getPath() != null) {
        if (watchedEvent.getPath().startsWith(getInstancesPath())) {
            readMembershipAndRegisterWatch();
        }
    } else {
        logger.warn("Got unknown zookeeper event: {}", watchedEvent);
    }
}

From source file:org.eclipse.ecf.provider.zookeeper.node.internal.ReadRoot.java

License:Open Source License

public void process(final WatchedEvent event) {
    ZooDiscoveryContainer.CACHED_THREAD_POOL.execute(new Runnable() {
        public void run() {
            synchronized (connectionLock) {
                if (watchManager.isDisposed())
                    return;

                switch (event.getState()) {
                case Disconnected:
                    ReadRoot.this.isConnected = false;
                    connect();/*from   w  w w .j  a  v  a2 s  .  co m*/
                    break;
                case Expired:
                    ReadRoot.this.isConnected = false;
                    connect();
                    break;
                case SyncConnected:
                    if (!ReadRoot.this.isConnected) {
                        ReadRoot.this.isConnected = true;
                        ReadRoot.this.watchManager.addZooKeeper(ReadRoot.this.readKeeper);
                        ReadRoot.this.readKeeper.exists(INode.ROOT, ReadRoot.this, null, null);
                        ReadRoot.this.readKeeper.getChildren(INode.ROOT, ReadRoot.this, ReadRoot.this, null);
                    }
                    break;

                // ignore @deprecated cases
                }
                switch (event.getType()) {
                case NodeDeleted:
                    if (event.getPath() == null || event.getPath().equals(INode.ROOT))
                        break;
                    ReadRoot.this.nodeReaders.remove(event.getPath());
                    break;
                case NodeChildrenChanged:
                    if (ReadRoot.this.isConnected) {
                        ReadRoot.this.readKeeper.exists(INode.ROOT, ReadRoot.this, null, null);
                        ReadRoot.this.readKeeper.getChildren(INode.ROOT, ReadRoot.this, ReadRoot.this, null);
                    }
                    break;
                }
            }
        }
    });
}

From source file:org.eclipse.gyrex.cloud.internal.zk.ZooKeeperMonitor.java

License:Open Source License

@Override
public void process(final WatchedEvent event) {
    switch (event.getType()) {
    case NodeChildrenChanged:
        childrenChanged(event.getPath());
        break;//from   www .  ja  v a2 s .  c o  m
    case NodeCreated:
        pathCreated(event.getPath());
        break;
    case NodeDeleted:
        pathDeleted(event.getPath());
        break;
    case NodeDataChanged:
        recordChanged(event.getPath());
        break;
    case None:
        // state of the connection changed
        // TODO: how to handle/consume this event here?
        // our prefered way of working with ZK connect/disconnect/expired events
        // is using the ZKGate which has it's own connect listener (integrated into ZKBasedService)
        //         switch (event.getState()) {
        //            case SyncConnected:
        //               // connection established, nothing to do because watches
        //               // will be automatically re-registered and delivered by ZooKeeper
        //               connected();
        //               break;
        //            case Disconnected:
        //               // session disconnected, the gate will recover
        //               disconnected();
        //               break;
        //            case Expired:
        //               // session expired, the gate will close
        //               expired();
        //               break;
        //         }
        break;
    default:
        LOG.warn("Unhandled event ({}) in ({})", new Object[] { event, this });
        break;
    }
}

From source file:org.glassfish.grizzly.memcached.zookeeper.ZKClient.java

License:Open Source License

private boolean processStateChanged(final WatchedEvent event) {
    if (event == null) {
        throw new IllegalArgumentException("event must not be null");
    }/*from   w  ww  .j a  v  a2 s  .  c  om*/
    final Watcher.Event.KeeperState eventState = event.getState();
    final String eventPath = event.getPath();
    final boolean isStateChangedEvent;
    // state changed
    if (eventPath == null) {
        lock.lock();
        try {
            currentState = eventState;
            lockCondition.signalAll();
        } finally {
            lock.unlock();
        }
        isStateChangedEvent = true;
    } else {
        isStateChangedEvent = false;
    }
    if (eventState == Watcher.Event.KeeperState.Expired) {
        try {
            reconnect();
        } catch (Exception e) {
            if (logger.isLoggable(Level.SEVERE)) {
                logger.log(Level.SEVERE, "failed to reconnect the zookeeper server", e);
            }
        }
    }
    return isStateChangedEvent;
}

From source file:org.hummer.config.WatcherAdapter.java

License:Apache License

public void process(WatchedEvent event) {
    WatchEvent evt = new WatchEvent();
    evt.setState(event.getState().getIntValue());
    evt.setType(event.getType().getIntValue());
    evt.setArg(event.getPath());
    innerWatcher.onEvent(evt);//from w w w  . ja  v  a 2 s .c om
}