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.curator.x.async.details.InternalWatcher.java

License:Apache License

@Override
public void process(WatchedEvent event) {
    final WatchedEvent localEvent = (watcherFilter != null) ? watcherFilter.apply(event) : event;
    switch (localEvent.getState()) {
    default: {/*  w w w . ja  v a 2 s.com*/
        if ((watchMode != WatchMode.stateChangeOnly) && (localEvent.getType() != Event.EventType.None)) {
            if (!future.complete(localEvent)) {
                future.obtrudeValue(localEvent);
            }
        }
        break;
    }

    case Disconnected:
    case AuthFailed:
    case Expired: {
        if (watchMode != WatchMode.successOnly) {
            AsyncEventException exception = new AsyncEventException() {
                private final AtomicBoolean isReset = new AtomicBoolean(false);

                @Override
                public Event.KeeperState getKeeperState() {
                    return localEvent.getState();
                }

                @Override
                public CompletionStage<WatchedEvent> reset() {
                    Preconditions.checkState(isReset.compareAndSet(false, true), "Already reset");
                    future = new CompletableFuture<>();
                    return future;
                }
            };
            future.completeExceptionally(exception);
        }
        break;
    }
    }
}

From source file:org.apache.curator.x.rpc.idl.structs.RpcCuratorEvent.java

License:Apache License

public RpcCuratorEvent(WatchedEvent event) {
    this.type = RpcCuratorEventType.WATCHED;
    this.resultCode = 0;
    this.path = event.getPath();
    this.context = null;
    this.stat = null;
    this.data = null;
    this.name = null;
    this.children = null;
    this.aclList = null;
    this.watchedEvent = new RpcWatchedEvent(RpcKeeperState.valueOf(event.getState().name()),
            RpcEventType.valueOf(event.getType().name()), event.getPath());
    this.leaderEvent = null;
    this.childrenCacheEvent = null;
}

From source file:org.apache.curator.x.rpc.idl.structs.RpcWatchedEvent.java

License:Apache License

public RpcWatchedEvent(WatchedEvent watchedEvent) {
    keeperState = RpcKeeperState.valueOf(watchedEvent.getState().name());
    eventType = RpcEventType.valueOf(watchedEvent.getType().name());
    path = watchedEvent.getPath();//from w w w  .  j a  va  2 s  .  co  m
}

From source file:org.apache.cxf.dosgi.discovery.zookeeper.ZooKeeperDiscovery.java

License:Apache License

public void process(WatchedEvent event) {
    LOG.debug("got ZooKeeper event " + event);
    switch (event.getState()) {
    case SyncConnected:
        LOG.info("Connection to ZooKeeper established");
        // this event can be triggered more than once in a row (e.g. after Disconnected event),
        // so we must be re-entrant here
        start();/*from  ww w .j a  va 2s  .  c o m*/
        break;

    case Expired:
        LOG.info("Connection to ZooKeeper expired. Trying to create a new connection");
        stop(false);
        createZooKeeper(curConfiguration);
        break;

    default:
        // ignore other events
        break;
    }
}

From source file:org.apache.distributedlog.impl.federated.FederatedZKLogMetadataStore.java

License:Apache License

@Override
public void process(WatchedEvent watchedEvent) {
    if (Event.EventType.None == watchedEvent.getType()
            && Event.KeeperState.Expired == watchedEvent.getState()) {
        scheduleTask(this, conf.getZKSessionTimeoutMilliseconds());
        return;/*from w  w w  . j a  v a  2  s  .  c o  m*/
    }
    if (Event.EventType.NodeChildrenChanged == watchedEvent.getType()) {
        // fetch the namespace
        fetchSubNamespaces(this).whenComplete(this);
    }
}

From source file:org.apache.distributedlog.impl.ZKLogSegmentMetadataStore.java

License:Apache License

/**
 * Process the watched events for registered listeners.
 *//*ww  w.ja  v a  2s .  co  m*/
@Override
public void process(WatchedEvent event) {
    if (Event.EventType.None == event.getType() && Event.KeeperState.Expired == event.getState()) {
        Set<String> keySet = new HashSet<String>(listeners.keySet());
        for (String logSegmentsPath : keySet) {
            scheduleTask(logSegmentsPath, new ReadLogSegmentsTask(logSegmentsPath, this), 0L);
        }
        return;
    }
    String path = event.getPath();
    if (null == path) {
        return;
    }
    switch (event.getType()) {
    case NodeDeleted:
        notifyLogStreamDeleted(path, listeners.remove(path));
        break;
    case NodeChildrenChanged:
        new ReadLogSegmentsTask(path, this).run();
        break;
    default:
        break;
    }
}

From source file:org.apache.giraph.bsp.BspService.java

License:Apache License

@Override
public final void process(WatchedEvent event) {
    // 1. Process all shared events
    // 2. Process specific derived class events
    if (LOG.isDebugEnabled()) {
        LOG.debug("process: Got a new event, path = " + event.getPath() + ", type = " + event.getType()
                + ", state = " + event.getState());
    }/*from  ww  w  .j  ava  2 s . c  o m*/

    if ((event.getPath() == null) && (event.getType() == EventType.None)) {
        if (event.getState() == KeeperState.Disconnected) {
            // Watches may not be triggered for some time, so signal all BspEvents
            for (BspEvent bspEvent : registeredBspEvents) {
                bspEvent.signal();
            }
            LOG.warn("process: Disconnected from ZooKeeper (will automatically " + "try to recover) " + event);
        } else if (event.getState() == KeeperState.SyncConnected) {
            if (LOG.isInfoEnabled()) {
                LOG.info("process: Asynchronous connection complete.");
            }
            connectedEvent.signal();
        } else {
            LOG.warn("process: Got unknown null path event " + event);
        }
        return;
    }

    boolean eventProcessed = false;
    if (event.getPath().startsWith(masterJobStatePath)) {
        // This will cause all becomeMaster() MasterThreads to notice the
        // change in job state and quit trying to become the master.
        masterElectionChildrenChanged.signal();
        eventProcessed = true;
    } else if ((event.getPath().contains(WORKER_HEALTHY_DIR) || event.getPath().contains(WORKER_UNHEALTHY_DIR))
            && (event.getType() == EventType.NodeChildrenChanged)) {
        if (LOG.isDebugEnabled()) {
            LOG.debug("process: workerHealthRegistrationChanged "
                    + "(worker health reported - healthy/unhealthy )");
        }
        workerHealthRegistrationChanged.signal();
        eventProcessed = true;
    } else if (processMappingEvent(event) || processVertexEvent(event) || processEdgeEvent(event)) {
        return;
    } else if (event.getPath().contains(ADDRESSES_AND_PARTITIONS_DIR)
            && event.getType() == EventType.NodeCreated) {
        if (LOG.isInfoEnabled()) {
            LOG.info("process: partitionAssignmentsReadyChanged " + "(partitions are assigned)");
        }
        addressesAndPartitionsReadyChanged.signal();
        eventProcessed = true;
    } else if (event.getPath().contains(SUPERSTEP_FINISHED_NODE) && event.getType() == EventType.NodeCreated) {
        if (LOG.isInfoEnabled()) {
            LOG.info("process: superstepFinished signaled");
        }
        superstepFinished.signal();
        eventProcessed = true;
    } else if (event.getPath().endsWith(applicationAttemptsPath)
            && event.getType() == EventType.NodeChildrenChanged) {
        if (LOG.isInfoEnabled()) {
            LOG.info("process: applicationAttemptChanged signaled");
        }
        applicationAttemptChanged.signal();
        eventProcessed = true;
    } else if (event.getPath().contains(MASTER_ELECTION_DIR)
            && event.getType() == EventType.NodeChildrenChanged) {
        if (LOG.isInfoEnabled()) {
            LOG.info("process: masterElectionChildrenChanged signaled");
        }
        masterElectionChildrenChanged.signal();
        eventProcessed = true;
    } else if (event.getPath().equals(cleanedUpPath) && event.getType() == EventType.NodeChildrenChanged) {
        if (LOG.isInfoEnabled()) {
            LOG.info("process: cleanedUpChildrenChanged signaled");
        }
        cleanedUpChildrenChanged.signal();
        eventProcessed = true;
    }

    if (!(processEvent(event)) && (!eventProcessed)) {
        LOG.warn("process: Unknown and unprocessed event (path=" + event.getPath() + ", type=" + event.getType()
                + ", state=" + event.getState() + ")");
    }
}

From source file:org.apache.giraph.graph.BspService.java

License:Apache License

@Override
public final void process(WatchedEvent event) {
    // 1. Process all shared events
    // 2. Process specific derived class events
    if (LOG.isDebugEnabled()) {
        LOG.debug("process: Got a new event, path = " + event.getPath() + ", type = " + event.getType()
                + ", state = " + event.getState());
    }/*w ww .  ja  v a  2  s .c o m*/

    if ((event.getPath() == null) && (event.getType() == EventType.None)) {
        if (event.getState() == KeeperState.Disconnected) {
            // No way to recover from a disconnect event, signal all BspEvents
            for (BspEvent bspEvent : registeredBspEvents) {
                bspEvent.signal();
            }
            throw new RuntimeException("process: Disconnected from ZooKeeper, cannot recover - " + event);
        } else if (event.getState() == KeeperState.SyncConnected) {
            if (LOG.isInfoEnabled()) {
                LOG.info("process: Asynchronous connection complete.");
            }
            connectedEvent.signal();
        } else {
            LOG.warn("process: Got unknown null path event " + event);
        }
        return;
    }

    boolean eventProcessed = false;
    if (event.getPath().startsWith(masterJobStatePath)) {
        // This will cause all becomeMaster() MasterThreads to notice the
        // change in job state and quit trying to become the master.
        masterElectionChildrenChanged.signal();
        eventProcessed = true;
    } else if ((event.getPath().contains(WORKER_HEALTHY_DIR) || event.getPath().contains(WORKER_UNHEALTHY_DIR))
            && (event.getType() == EventType.NodeChildrenChanged)) {
        if (LOG.isDebugEnabled()) {
            LOG.debug("process: workerHealthRegistrationChanged "
                    + "(worker health reported - healthy/unhealthy )");
        }
        workerHealthRegistrationChanged.signal();
        eventProcessed = true;
    } else if (event.getPath().equals(inputSplitsAllReadyPath) && (event.getType() == EventType.NodeCreated)) {
        if (LOG.isInfoEnabled()) {
            LOG.info("process: inputSplitsReadyChanged " + "(input splits ready)");
        }
        inputSplitsAllReadyChanged.signal();
        eventProcessed = true;
    } else if (event.getPath().endsWith(INPUT_SPLIT_RESERVED_NODE)
            && (event.getType() == EventType.NodeCreated)) {
        if (LOG.isDebugEnabled()) {
            LOG.debug("process: inputSplitsStateChanged " + "(made a reservation)");
        }
        inputSplitsStateChanged.signal();
        eventProcessed = true;
    } else if (event.getPath().endsWith(INPUT_SPLIT_RESERVED_NODE)
            && (event.getType() == EventType.NodeDeleted)) {
        if (LOG.isInfoEnabled()) {
            LOG.info("process: inputSplitsStateChanged " + "(lost a reservation)");
        }
        inputSplitsStateChanged.signal();
        eventProcessed = true;
    } else if (event.getPath().endsWith(INPUT_SPLIT_FINISHED_NODE)
            && (event.getType() == EventType.NodeCreated)) {
        if (LOG.isDebugEnabled()) {
            LOG.debug("process: inputSplitsStateChanged " + "(finished inputsplit)");
        }
        inputSplitsStateChanged.signal();
        eventProcessed = true;
    } else if (event.getPath().endsWith(INPUT_SPLIT_DONE_DIR)
            && (event.getType() == EventType.NodeChildrenChanged)) {
        if (LOG.isDebugEnabled()) {
            LOG.debug("process: inputSplitsDoneStateChanged " + "(worker finished sending)");
        }
        inputSplitsDoneStateChanged.signal();
        eventProcessed = true;
    } else if (event.getPath().equals(inputSplitsAllDonePath) && (event.getType() == EventType.NodeCreated)) {
        if (LOG.isInfoEnabled()) {
            LOG.info("process: inputSplitsAllDoneChanged " + "(all vertices sent from input splits)");
        }
        inputSplitsAllDoneChanged.signal();
        eventProcessed = true;
    } else if (event.getPath().contains(PARTITION_ASSIGNMENTS_DIR)
            && event.getType() == EventType.NodeCreated) {
        if (LOG.isInfoEnabled()) {
            LOG.info("process: partitionAssignmentsReadyChanged " + "(partitions are assigned)");
        }
        partitionAssignmentsReadyChanged.signal();
        eventProcessed = true;
    } else if (event.getPath().contains(SUPERSTEP_FINISHED_NODE) && event.getType() == EventType.NodeCreated) {
        if (LOG.isInfoEnabled()) {
            LOG.info("process: superstepFinished signaled");
        }
        superstepFinished.signal();
        eventProcessed = true;
    } else if (event.getPath().endsWith(applicationAttemptsPath)
            && event.getType() == EventType.NodeChildrenChanged) {
        if (LOG.isInfoEnabled()) {
            LOG.info("process: applicationAttemptChanged signaled");
        }
        applicationAttemptChanged.signal();
        eventProcessed = true;
    } else if (event.getPath().contains(MASTER_ELECTION_DIR)
            && event.getType() == EventType.NodeChildrenChanged) {
        if (LOG.isInfoEnabled()) {
            LOG.info("process: masterElectionChildrenChanged signaled");
        }
        masterElectionChildrenChanged.signal();
        eventProcessed = true;
    } else if (event.getPath().equals(cleanedUpPath) && event.getType() == EventType.NodeChildrenChanged) {
        if (LOG.isInfoEnabled()) {
            LOG.info("process: cleanedUpChildrenChanged signaled");
        }
        cleanedUpChildrenChanged.signal();
        eventProcessed = true;
    }

    if (!(processEvent(event)) && (!eventProcessed)) {
        LOG.warn("process: Unknown and unprocessed event (path=" + event.getPath() + ", type=" + event.getType()
                + ", state=" + event.getState() + ")");
    }
}

From source file:org.apache.giraph.worker.InputSplitsHandler.java

License:Apache License

@Override
public void process(WatchedEvent event) {
    if (event.getPath() == null) {
        LOG.warn("process: Problem with zookeeper, got event with path null, " + "state " + event.getState()
                + ", event type " + event.getType());
        return;//from   ww w  .  j a  va2  s  . c  om
    }
    // Check if the reservation for the input split was lost
    // (some worker died)
    if (event.getPath().endsWith(inputSplitReservedNode)
            && event.getType() == Watcher.Event.EventType.NodeDeleted) {
        synchronized (pathList) {
            String split = event.getPath();
            split = split.substring(0, split.indexOf(inputSplitReservedNode));
            pathList.add(split);
            if (LOG.isInfoEnabled()) {
                LOG.info("process: Input split " + split + " lost reservation");
            }
        }
    }
}

From source file:org.apache.hadoop.contrib.bkjournal.BKJMUtil.java

License:Apache License

static ZooKeeper connectZooKeeper() throws IOException, KeeperException, InterruptedException {
    final CountDownLatch latch = new CountDownLatch(1);

    ZooKeeper zkc = new ZooKeeper(zkEnsemble, 3600, new Watcher() {
        public void process(WatchedEvent event) {
            if (event.getState() == Watcher.Event.KeeperState.SyncConnected) {
                latch.countDown();//from  w w w.  j  a  v  a2s . c  o m
            }
        }
    });
    if (!latch.await(3, TimeUnit.SECONDS)) {
        throw new IOException("Zookeeper took too long to connect");
    }
    return zkc;
}