Example usage for org.apache.zookeeper WatchedEvent getType

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

Introduction

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

Prototype

public EventType getType() 

Source Link

Usage

From source file:io.seldon.api.state.ZkAlgorithmUpdater.java

License:Apache License

@Override
public void run() {
    logger.info("Starting");
    try {//from   w  w w.  jav  a2  s.  c  o m
        boolean error = false;
        while (keepRunning) {
            try {

                CuratorFramework client = null;
                boolean ok = false;
                for (int attempts = 0; attempts < 4 && !ok; attempts++) {
                    client = curatorHandler.getCurator().usingNamespace(clientName);
                    logger.info("Waiting until zookeeper connected on attempt " + attempts);
                    ok = client.getZookeeperClient().blockUntilConnectedOrTimedOut();
                    if (ok)
                        logger.info("zookeeper connected");
                    else {
                        logger.error("Timed out waiting for zookeeper connect : attempt " + attempts);
                    }
                }
                if (!ok) {
                    logger.error("Failed to connect to zookeeper after multiple attempts - STOPPING");
                    return;
                }
                queue = new LinkedBlockingQueue<>();
                final Watcher watcher = new Watcher() {
                    boolean expired = false;

                    @Override
                    public void process(WatchedEvent event) {
                        try {
                            if (event.getPath() != null)
                                queue.put(event.getPath());
                            else {
                                logger.warn("Unexpected event " + event.getType().name() + " -> "
                                        + event.toString());
                                switch (event.getState()) {
                                case SyncConnected: {
                                }
                                    break;
                                case Expired: {
                                    queue.put("");
                                }
                                    break;
                                case Disconnected: {
                                    logger.warn("Disconnected from server");
                                    //queue.put("");                                      
                                }
                                    break;
                                }

                            }
                        } catch (InterruptedException e) {
                            throw new Error(e);
                        }
                    }
                };

                logger.info("Checking path " + ALG_PATH + " exists");
                if (client.checkExists().forPath(ALG_PATH) == null) {
                    logger.warn(
                            "Path " + ALG_PATH + " does not exist for client " + clientName + " creating...");
                    client.create().forPath(ALG_PATH);
                } else
                    logger.info("Path " + ALG_PATH + " exists");

                //client.getConnectionStateListenable().addListener(stateListener);
                boolean restart = false;
                while (keepRunning && !restart) {

                    client.getData().usingWatcher(watcher).forPath(ALG_PATH);

                    String path = queue.take();
                    if (!StringUtils.isEmpty(path)) {
                        logger.info("Alg Path changed " + path);

                        byte[] bytes = client.getData().forPath(ALG_PATH);

                        try {
                            ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(bytes));
                            CFAlgorithm alg = (CFAlgorithm) in.readObject();
                            in.close();
                            //Update Algorithm for client
                            logger.info(
                                    "Updating algorithm options for " + clientName + " to " + alg.toString());
                            Util.getAlgorithmService().setAlgorithmOptions(clientName, alg);
                            numUpdates++;
                        } catch (ClassNotFoundException e) {
                            logger.error("Can't find class ", e);
                        } catch (IOException e) {
                            logger.error("Failed to deserialize algorithm for client " + clientName, e);
                        }
                    } else {
                        //logger.warn("Empty path - maybe zookeeper connection state change watcher will be reset");
                        logger.warn("Will try to restart");
                        restart = true;
                    }
                }

            } catch (IOException e) {
                logger.error("Exception trying to create sk client ", e);
                error = true;
            } catch (Exception e) {
                logger.error("Exception from zookeeper client ", e);
                error = true;
            } finally {

            }

            if (keepRunning && error) {
                logger.info("Sleeping " + sleepTime);
                Thread.sleep(sleepTime);
                if (sleepTime * 2 < maxSleepTime)
                    sleepTime = sleepTime * 2;
                error = false;
            }

        }
    } catch (InterruptedException e) {
        logger.warn("Sleep interuppted ", e);
    }
    logger.info("Stopping");
}

From source file:io.teknek.daemon.Worker.java

License:Apache License

@Override
public void process(WatchedEvent event) {
    logger.debug("recived event " + event);
    if (event.getState() == KeeperState.Expired || event.getState() == KeeperState.Disconnected) {
        driver.setGoOn(false);/*from w ww. j  a v  a2  s  .  c  o m*/
        shutdown();
    }
    if (event.getType() == EventType.NodeDataChanged || event.getType() == EventType.NodeDeleted) {
        driver.setGoOn(false);
        shutdown();
    }
}

From source file:me.tfeng.play.avro.d2.AvroD2Server.java

License:Apache License

@Override
public void process(WatchedEvent event) {
    if (event.getType() == EventType.NodeDeleted && event.getPath().equals(nodePath)
            || event.getType() == EventType.None && event.getState() == KeeperState.SyncConnected) {
        // If the node is unexpectedly deleted or if ZooKeeper connection is restored, register the
        // server again.
        register();//from   w  w w .java2 s.  c  o  m
    }
}

From source file:ml.shifu.guagua.BasicCoordinator.java

License:Apache License

@Override
public void process(final WatchedEvent event) {
    LOG.debug("process: Got a new event, path = {}, type = {}, state = {}", event.getPath(), event.getType(),
            event.getState());//from  w  w w.  j ava 2s.  c om

    if ((event.getPath() == null) && (event.getType() == EventType.None)) {
        if (event.getState() == KeeperState.SyncConnected) {
            LOG.info("process: Asynchronous connection complete.");
            this.getZkConnLatch().countDown();
        } else {
            LOG.warn("process: Got unknown null path event {}.", event);
        }
        return;
    }
}

From source file:ml.shifu.guagua.master.AsyncMasterCoordinator.java

License:Apache License

@Override
public void process(WatchedEvent event) {
    LOG.debug("DEBUG: process: Got a new event, path = {}, type = {}, state = {}", event.getPath(),
            event.getType(), event.getState());

    if ((event.getPath() == null) && (event.getType() == EventType.None)) {
        if (event.getState() == KeeperState.SyncConnected) {
            LOG.info("process: Asynchronous connection complete.");
            super.getZkConnLatch().countDown();
        } else {//ww w .  ja va 2 s .c  om
            LOG.warn("process: Got unknown null path event " + event);
        }
        return;
    }

    /**
     * Check lock signal condition.
     */
    String appWorkerBaseNode = getWorkerBaseNode(getAppId(), getCurrentIteration()).toString();
    if (event.getPath().equals(appWorkerBaseNode) && (event.getType() == EventType.NodeChildrenChanged)) {
        if (getCurrentIteration() == 0) {
            this.workerInitLock.signal();
        } else {
            this.workerIterationLock.signal();
        }
    }
}

From source file:ml.shifu.guagua.worker.AsyncWorkerCoordinator.java

License:Apache License

@Override
public void process(WatchedEvent event) {
    LOG.info("DEBUG: process: Got a new event, path = {}, type = {}, state = {}", event.getPath(),
            event.getType(), event.getState());

    if ((event.getPath() == null) && (event.getType() == EventType.None)) {
        if (event.getState() == KeeperState.SyncConnected) {
            LOG.info("process: Asynchronous connection complete.");
            super.getZkConnLatch().countDown();
        } else {//from  w  ww.  j av a  2s. c om
            LOG.warn("process: Got unknown null path event " + event);
        }
        return;
    }

    String appMasterNode = getCurrentMasterNode(getAppId(), getCurrentIteration()).toString();

    if (event.getPath().equals(appMasterNode)
            && (event.getType() == EventType.NodeCreated || event.getType() == EventType.NodeDataChanged)) {
        if (getCurrentIteration() == 0) {
            this.masterInitLock.signal();
        } else {
            this.masterIterationLock.signal();
        }
    }
}

From source file:net.killa.kept.KeptLock.java

License:Apache License

private boolean lockIt(long t, TimeUnit tu) throws KeeperException, InterruptedException {
    final CountDownLatch latch = new CountDownLatch(1);

    // convert the given time to milliseconds and add it to the current time
    long last = System.currentTimeMillis() + TimeUnit.MILLISECONDS.convert(t, tu);
    do {//from w  ww  .  j  a v  a2 s .  c  o m
        if (this.keeper.exists(this.znode, new Watcher() {
            @Override
            public void process(WatchedEvent event) {
                if (event.getType() == EventType.NodeDeleted)
                    latch.countDown();
                else if (event.getType() == EventType.NodeCreated)
                    ; // ignore it
                else
                    throw new RuntimeException("unexpected event type" + event.getType());
            }
        }) != null) {
            if (!latch.await(t, tu))
                try {
                    this.keeper.create(this.znode, ManagementFactory.getRuntimeMXBean().getName().getBytes(),
                            this.acl, CreateMode.EPHEMERAL);

                    return true;
                } catch (KeeperException.NodeExistsException e) {
                    // ignore it
                } catch (KeeperException e) {
                    throw e;
                }
            else
                return false;
        } else {
            try {
                this.keeper.create(this.znode, ManagementFactory.getRuntimeMXBean().getName().getBytes(),
                        this.acl, CreateMode.EPHEMERAL);

                return true;
            } catch (KeeperException.NodeExistsException e) {
                // ignore it
            } catch (KeeperException e) {
                throw e;
            }
        }
    } while (System.currentTimeMillis() < last);

    return false;
}

From source file:net.killa.kept.SynchronizingWatcher.java

License:Apache License

/**
 * Synchronize a {@link Synchronizable} with the {@link ZooKeeper} cluster
 * when a NodeChildrenChangedEvent is detected, or the client reconnects to
 * the cluster.//from  w  w w .  ja  v a 2s  .com
 * 
 * @param event
 *            A {@link WatchedEvent} that triggers synchronization
 * 
 */
@Override
public void process(WatchedEvent event) {
    // ignore no-op events and states in which we cannot read from the zk
    // cluster
    if (event.getType() == EventType.None || event.getState() == KeeperState.Disconnected
            || event.getState() == KeeperState.Expired) {
        SynchronizingWatcher.LOG
                .debug("ignoring no-op event " + event.getType() + " in state " + event.getState());

        return;
    }

    try {
        // synchronize the target
        SynchronizingWatcher.LOG.debug("synchronizing");

        this.synchronizable.synchronize();

        return;
    } catch (KeeperException e) {
        throw new RuntimeException("KeeperException caught", e);
    } catch (InterruptedException e) {
        throw new RuntimeException("InterruptedException caught", e);
    }
}

From source file:net.phoenix.thrift.server.ZookeeperRegisterHandler.java

License:Apache License

@Override
public void process(WatchedEvent event) {
    switch (event.getType()) {
    case None://w  w w  .j  a va2s  . c o  m
        this.processNoneEvent(event);
        break;
    default:
        log.debug("Ignore event " + event.getPath() + " with type " + event.getType());
    }
}

From source file:net.sf.katta.zk.ZKClient.java

License:Apache License

@Override
public void process(WatchedEvent event) {

    // public void process(final WatcherEvent event) {
    // if (null == event.getPath()) {
    // // prohibit nullpointer (See ZOOKEEPER-77)
    // event.setPath("null");
    // }//  w w  w.  ja  va  2  s  .c  om
    boolean stateChanged = event.getState() == KeeperState.Disconnected
            || event.getState() == KeeperState.Expired;
    boolean dataChanged = event.getType() == Watcher.Event.EventType.NodeDataChanged
            || event.getType() == Watcher.Event.EventType.NodeChildrenChanged
            || event.getType() == Watcher.Event.EventType.NodeDeleted;
    try {
        getEventLock().lock();
        if (_shutdownTriggered) {
            LOG.debug("ignoring event '{" + event.getType() + " | " + event.getPath()
                    + "}' since shutdown triggered");
            return;
        }
        if (event.getState() == KeeperState.Expired) {
            processExpiration(event);
        }
        if (dataChanged) {
            processDataOrChildChange(event);
        }
    } finally {
        if (stateChanged) {
            getEventLock().getStateChangedCondition().signalAll();
        }
        if (dataChanged) {
            getEventLock().getDataChangedCondition().signalAll();
        }
        getEventLock().unlock();
    }
}