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:org.apache.curator.x.rpc.RpcTests.java

License:Apache License

@Test
public void testEphemeralCleanup() throws Exception {
    CuratorProjection curatorProjection = curatorServiceClient.newCuratorProjection("test");
    CreateSpec spec = new CreateSpec();
    spec.path = "/test";
    spec.data = ByteBuffer.wrap("value".getBytes());
    spec.mode = CreateMode.EPHEMERAL;/*from  w w  w.jav a2s  .  c  o m*/
    OptionalPath node = curatorServiceClient.createNode(curatorProjection, spec);
    System.out.println(node);

    final CountDownLatch latch = new CountDownLatch(1);
    CuratorFramework client = CuratorFrameworkFactory.newClient(server.getConnectString(), new RetryOneTime(1));
    try {
        client.start();
        Watcher watcher = new Watcher() {
            @Override
            public void process(WatchedEvent event) {
                if (event.getType() == Event.EventType.NodeDeleted) {
                    latch.countDown();
                }
            }
        };
        client.checkExists().usingWatcher(watcher).forPath("/test");

        curatorServiceClient.closeCuratorProjection(curatorProjection);

        Assert.assertTrue(timing.awaitLatch(latch));
    } finally {
        CloseableUtils.closeQuietly(client);
    }
}

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;// w w w . j  a va 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.
 *//* w  w w  .  ja  v a 2  s.com*/
@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.flume.node.MyWatcher.java

License:Apache License

public void process(WatchedEvent event) {
    try {//from   w w  w . j  a  v a2 s  .co  m
        if ((event.getPath() != null) && (event.getType() != Watcher.Event.EventType.None))
            ZooKeeperUtils.keeper.exists(this.path, new MyWatcher(this.path));
    } catch (Exception e) {
        logger.error("watcher:", e);
    }
    logger.info("zookeeper node change :" + event.getPath() + "-" + event.getType().toString());
    if (StringUtils.isEmpty(this.path))
        return;
    if ((this.path.equals(event.getPath())) && (event.getType() == Watcher.Event.EventType.NodeDeleted))
        System.exit(0);
}

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());
    }//  w w  w  . j a  v  a  2  s .c  om

    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.bsp.BspService.java

License:Apache License

/**
 * Process WatchedEvent for Mapping Inputsplits
 *
 * @param event watched event/*from  w  w  w.  j  a v  a  2  s  . c  o  m*/
 * @return true if event processed
 */
public final boolean processMappingEvent(WatchedEvent event) {
    boolean eventProcessed = false;
    if (event.getPath().equals(mappingInputSplitsPaths.getAllReadyPath())
            && (event.getType() == EventType.NodeCreated)) {
        if (LOG.isInfoEnabled()) {
            LOG.info("process: inputSplitsReadyChanged " + "(input splits ready)");
        }
        mappingInputSplitsEvents.getAllReadyChanged().signal();
        eventProcessed = true;
    } else if (event.getPath().endsWith(MAPPING_INPUT_SPLIT_RESERVED_NODE)
            && (event.getType() == EventType.NodeCreated)) {
        if (LOG.isDebugEnabled()) {
            LOG.debug("process: mappingInputSplitsStateChanged " + "(made a reservation)");
        }
        mappingInputSplitsEvents.getStateChanged().signal();
        eventProcessed = true;
    } else if (event.getPath().endsWith(MAPPING_INPUT_SPLIT_RESERVED_NODE)
            && (event.getType() == EventType.NodeDeleted)) {
        if (LOG.isInfoEnabled()) {
            LOG.info("process: mappingInputSplitsStateChanged " + "(lost a reservation)");
        }
        mappingInputSplitsEvents.getStateChanged().signal();
        eventProcessed = true;
    } else if (event.getPath().endsWith(MAPPING_INPUT_SPLIT_FINISHED_NODE)
            && (event.getType() == EventType.NodeCreated)) {
        if (LOG.isDebugEnabled()) {
            LOG.debug("process: mappingInputSplitsStateChanged " + "(finished inputsplit)");
        }
        mappingInputSplitsEvents.getStateChanged().signal();
        eventProcessed = true;
    } else if (event.getPath().endsWith(MAPPING_INPUT_SPLIT_DONE_DIR)
            && (event.getType() == EventType.NodeChildrenChanged)) {
        if (LOG.isDebugEnabled()) {
            LOG.debug("process: mappingInputSplitsDoneStateChanged " + "(worker finished sending)");
        }
        mappingInputSplitsEvents.getDoneStateChanged().signal();
        eventProcessed = true;
    } else if (event.getPath().equals(mappingInputSplitsPaths.getAllDonePath())
            && (event.getType() == EventType.NodeCreated)) {
        if (LOG.isInfoEnabled()) {
            LOG.info("process: mappingInputSplitsAllDoneChanged " + "(all entries sent from input splits)");
        }
        mappingInputSplitsEvents.getAllDoneChanged().signal();
        eventProcessed = true;
    }
    return eventProcessed;
}

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

License:Apache License

/**
 * Process WatchedEvent for Vertex Inputsplits
 *
 * @param event watched event/*from   w w w . jav  a 2  s .c  o  m*/
 * @return true if event processed
 */
public final boolean processVertexEvent(WatchedEvent event) {
    boolean eventProcessed = false;
    if (event.getPath().equals(vertexInputSplitsPaths.getAllReadyPath())
            && (event.getType() == EventType.NodeCreated)) {
        if (LOG.isInfoEnabled()) {
            LOG.info("process: inputSplitsReadyChanged " + "(input splits ready)");
        }
        vertexInputSplitsEvents.getAllReadyChanged().signal();
        eventProcessed = true;
    } else if (event.getPath().endsWith(VERTEX_INPUT_SPLIT_RESERVED_NODE)
            && (event.getType() == EventType.NodeCreated)) {
        if (LOG.isDebugEnabled()) {
            LOG.debug("process: vertexInputSplitsStateChanged " + "(made a reservation)");
        }
        vertexInputSplitsEvents.getStateChanged().signal();
        eventProcessed = true;
    } else if (event.getPath().endsWith(VERTEX_INPUT_SPLIT_RESERVED_NODE)
            && (event.getType() == EventType.NodeDeleted)) {
        if (LOG.isInfoEnabled()) {
            LOG.info("process: vertexInputSplitsStateChanged " + "(lost a reservation)");
        }
        vertexInputSplitsEvents.getStateChanged().signal();
        eventProcessed = true;
    } else if (event.getPath().endsWith(VERTEX_INPUT_SPLIT_FINISHED_NODE)
            && (event.getType() == EventType.NodeCreated)) {
        if (LOG.isDebugEnabled()) {
            LOG.debug("process: vertexInputSplitsStateChanged " + "(finished inputsplit)");
        }
        vertexInputSplitsEvents.getStateChanged().signal();
        eventProcessed = true;
    } else if (event.getPath().endsWith(VERTEX_INPUT_SPLIT_DONE_DIR)
            && (event.getType() == EventType.NodeChildrenChanged)) {
        if (LOG.isDebugEnabled()) {
            LOG.debug("process: vertexInputSplitsDoneStateChanged " + "(worker finished sending)");
        }
        vertexInputSplitsEvents.getDoneStateChanged().signal();
        eventProcessed = true;
    } else if (event.getPath().equals(vertexInputSplitsPaths.getAllDonePath())
            && (event.getType() == EventType.NodeCreated)) {
        if (LOG.isInfoEnabled()) {
            LOG.info("process: vertexInputSplitsAllDoneChanged " + "(all vertices sent from input splits)");
        }
        vertexInputSplitsEvents.getAllDoneChanged().signal();
        eventProcessed = true;
    }
    return eventProcessed;
}

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

License:Apache License

/**
 * Process WatchedEvent for Edge Inputsplits
 *
 * @param event watched event/* w w w. j a v  a  2  s .c o m*/
 * @return true if event processed
 */
public final boolean processEdgeEvent(WatchedEvent event) {
    boolean eventProcessed = false;
    if (event.getPath().equals(edgeInputSplitsPaths.getAllReadyPath())
            && (event.getType() == EventType.NodeCreated)) {
        if (LOG.isInfoEnabled()) {
            LOG.info("process: edgeInputSplitsReadyChanged " + "(input splits ready)");
        }
        edgeInputSplitsEvents.getAllReadyChanged().signal();
        eventProcessed = true;
    } else if (event.getPath().endsWith(EDGE_INPUT_SPLIT_RESERVED_NODE)
            && (event.getType() == EventType.NodeCreated)) {
        if (LOG.isDebugEnabled()) {
            LOG.debug("process: edgeInputSplitsStateChanged " + "(made a reservation)");
        }
        edgeInputSplitsEvents.getStateChanged().signal();
        eventProcessed = true;
    } else if (event.getPath().endsWith(EDGE_INPUT_SPLIT_RESERVED_NODE)
            && (event.getType() == EventType.NodeDeleted)) {
        if (LOG.isInfoEnabled()) {
            LOG.info("process: edgeInputSplitsStateChanged " + "(lost a reservation)");
        }
        edgeInputSplitsEvents.getStateChanged().signal();
        eventProcessed = true;
    } else if (event.getPath().endsWith(EDGE_INPUT_SPLIT_FINISHED_NODE)
            && (event.getType() == EventType.NodeCreated)) {
        if (LOG.isDebugEnabled()) {
            LOG.debug("process: edgeInputSplitsStateChanged " + "(finished inputsplit)");
        }
        edgeInputSplitsEvents.getStateChanged().signal();
        eventProcessed = true;
    } else if (event.getPath().endsWith(EDGE_INPUT_SPLIT_DONE_DIR)
            && (event.getType() == EventType.NodeChildrenChanged)) {
        if (LOG.isDebugEnabled()) {
            LOG.debug("process: edgeInputSplitsDoneStateChanged " + "(worker finished sending)");
        }
        edgeInputSplitsEvents.getDoneStateChanged().signal();
        eventProcessed = true;
    } else if (event.getPath().equals(edgeInputSplitsPaths.getAllDonePath())
            && (event.getType() == EventType.NodeCreated)) {
        if (LOG.isInfoEnabled()) {
            LOG.info("process: edgeInputSplitsAllDoneChanged " + "(all edges sent from input splits)");
        }
        edgeInputSplitsEvents.getAllDoneChanged().signal();
        eventProcessed = true;
    }
    return eventProcessed;
}

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());
    }/*from  w  w  w . j  av  a2  s  . co  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.graph.BspServiceMaster.java

License:Apache License

@Override
public boolean processEvent(WatchedEvent event) {
    boolean foundEvent = false;
    if (event.getPath().contains(WORKER_HEALTHY_DIR) && (event.getType() == EventType.NodeDeleted)) {
        if (LOG.isDebugEnabled()) {
            LOG.debug("processEvent: Healthy worker died (node deleted) " + "in " + event.getPath());
        }//from   w  w w. ja va 2 s. c o  m
        checkHealthyWorkerFailure(event.getPath());
        superstepStateChanged.signal();
        foundEvent = true;
    } else if (event.getPath().contains(WORKER_FINISHED_DIR)
            && event.getType() == EventType.NodeChildrenChanged) {
        if (LOG.isDebugEnabled()) {
            LOG.debug(
                    "processEvent: Worker finished (node change) " + "event - superstepStateChanged signaled");
        }
        superstepStateChanged.signal();
        foundEvent = true;
    }

    return foundEvent;
}