@Override public void childEvent(CuratorFramework client, PathChildrenCacheEvent event) throws Exception { switch (event.getType()) { case CHILD_ADDED: processKeyAddOrUpdate(event.getData().getData()); break; case CHILD_UPDATED: processKeyAddOrUpdate(event.getData().getData()); break; case CHILD_REMOVED: processKeyRemoved(event.getData().getPath()); break; default: break; } } }, listenerThreadPool);
/** * Add provider * * @param config ConsumerConfig * @param providerPath Provider path of zookeeper * @param data Event data * @param currentData provider data list * @throws UnsupportedEncodingException decode error */ public void addProvider(ConsumerConfig config, String providerPath, ChildData data, List<ChildData> currentData) throws UnsupportedEncodingException { if (LOGGER.isInfoEnabled(config.getAppName())) { LOGGER.infoWithApp(config.getAppName(), "Receive add provider: path=[" + data.getPath() + "]" + ", data=[" + StringSerializer.decode(data.getData()) + "]" + ", stat=[" + data.getStat() + "]" + ", list=[" + currentData.size() + "]"); } notifyListeners(config, providerPath, currentData, true); }
@Override public void childEvent(final CuratorFramework client, final TreeCacheEvent event) throws UnsupportedEncodingException { ChildData data = event.getData(); if (null == data || null == data.getPath()) { return; } ChangedType changedType = getChangedType(event); if (ChangedType.IGNORED != changedType) { dataChangedEventListener.onChange(new DataChangedEvent(data.getPath(), null == data.getData() ? null : new String(data.getData(), "UTF-8"), changedType)); } } });
@Override public void nodeChanged() throws Exception { String path = nodeCache.getCurrentData().getPath(); Object data = nodeCache.getCurrentData().getData(); if (data == null) { listener.dataDeleted(path); } else { listener.dataChange(path, data); } } };
switch (event.getType()) { case CHILD_ADDED: worker = jsonMapper.readValue( event.getData().getData(), Worker.class ); case CHILD_UPDATED: worker = jsonMapper.readValue( event.getData().getData(), Worker.class ); event.getData().getData(), Worker.class ); workers = cf.getChildren().forPath(indexerZkConfig.getStatusPath()); final String workerAnnouncePath = JOINER.join(indexerZkConfig.getAnnouncementsPath(), workerId); final String workerStatusPath = JOINER.join(indexerZkConfig.getStatusPath(), workerId); if (!zkWorkers.containsKey(workerId) && cf.checkExists().forPath(workerAnnouncePath) == null) { try { scheduleTasksCleanupForWorker(workerId, cf.getChildren().forPath(workerStatusPath));
boolean imFirst = childrenCache.getCurrentData().stream().map(ChildData::getPath) .map(ZKPaths::getNodeFromPath).sorted().findFirst().map(s -> s.equals(me2)) .orElse(false); ChildData childData = childrenCache.getCurrentData(ZookeeperPath.FINDERS + "/splits"); if (childData == null) { byte[] currSplitData = SerializedSplits.serializeTableSplits(env); curator.create().forPath(ZookeeperPath.FINDERS + "/splits", currSplitData); } else { HashSet<Bytes> zkSplits = new HashSet<>(); SerializedSplits.deserialize(zkSplits::add, childData.getData()); curator.setData().forPath(ZookeeperPath.FINDERS + "/splits", currSplitData);
private NodeCache newNodeCache(final String key) throws Exception { String path = getConfigPath(key); final NodeCache nodeCache = new NodeCache(client, path); nodeCache.getListenable().addListener(new NodeCacheListener() { @Override public void nodeChanged() throws Exception { String oldValue = keyMap.get(key); String newValue = new String(nodeCache.getCurrentData().getData()); keyMap.put(key, newValue); notifyListeners(key, oldValue, newValue); } }); nodeCache.start(true); keyMap.put(key, new String(nodeCache.getCurrentData().getData(), Constants.DEFAULT_CHARSET)); return nodeCache; }
ArgumentChecker.notNull(callback); evictionPathCache.getListenable().addListener((client, event) -> { if (event.getType().equals(PathChildrenCacheEvent.Type.CHILD_ADDED)) { String path = event.getData().getPath(); String dn = ZKPaths.getNodeFromPath(path); callback.evict(dn); if (curatorClient.checkExists().creatingParentContainersIfNeeded().forPath(responsePath) == null) { curatorClient.create().creatingParentContainersIfNeeded().forPath(responsePath);
@Override public void childEvent(CuratorFramework c, PathChildrenCacheEvent event) throws Exception { switch (event.getType()) { case CHILD_ADDED: case CHILD_REMOVED: case CHILD_UPDATED: String childPath = event.getData().getPath(); String parentPath = childPath.substring(0, childPath.lastIndexOf("/")); List<String> children = client.getChildren().forPath(parentPath); listener.childChanged(parentPath, children); default: break; } } };
druidCoordinatorConfig ); final PathChildrenCache pathChildrenCacheCold = new PathChildrenCache( curator, loadPathCold, pathChildrenCache.start(); pathChildrenCacheCold.start(); pathChildrenCache.getListenable().addListener( (client, event) -> { if (event.getType().equals(PathChildrenCacheEvent.Type.CHILD_ADDED)) { DataSegment segment = dataSegments .entrySet() .stream() .filter(x -> event.getData().getPath().contains(x.getKey())) .map(Map.Entry::getValue) .findFirst() curator.delete().guaranteed().forPath(event.getData().getPath()); .entrySet() .stream() .filter(x -> event.getData().getPath().contains(x.getKey())) .map(Map.Entry::getValue) .findFirst() curator.delete().guaranteed().forPath(event.getData().getPath());
private PathChildrenCache pathChildrenCache(String zNodePath) { final PathChildrenCache pathChildrenCache = new PathChildrenCache(client, zNodePath, true); pathChildrenCache.getListenable().addListener((c, event) -> { switch (event.getType()) { case CHILD_ADDED: addEndpoint(nodeValueCodec.decode(event.getData().getData())); break; case CHILD_REMOVED: removeEndpoint(nodeValueCodec.decode(event.getData().getData())); break; default: break; } }); return pathChildrenCache; }
public void start() throws Exception { if (client == null) { RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000, 3); client = CuratorFrameworkFactory.newClient(zkQuorum, retryPolicy); client.start(); } config = ConfigUtil.INSTANCE.read(client, root, new MaaSConfig(), MaaSConfig.class); cache = new NodeCache(client, root); cache.getListenable().addListener(() -> { byte[] data = cache.getCurrentData().getData(); Lock wLock= lock.writeLock(); wLock.lock(); try { config = _mapper.readValue(data, MaaSConfig.class); } finally { wLock.unlock(); } } ); discoverer = new ServiceDiscoverer(client, config.getServiceRoot()); discoverer.start(); } public ServiceDiscoverer getDiscoverer() {
final List<ChildData> children; if (isTokenCache) { children = tokenCache.getCurrentData(); } else { children = keyCache.getCurrentData(); processTokenAddOrUpdate(child); } else { processKeyAddOrUpdate(child.getData()); child.getPath()); LOG.debug("Failure exception:", e); ++count;
public static void main(String[] args) throws Exception { CuratorFramework client = CreateClientExamples.createSimple("127.0.0.1:2181"); client.getUnhandledErrorListenable().addListener((message, e) -> { System.err.println("error=" + message); e.printStackTrace(); }); client.getConnectionStateListenable().addListener((c, newState) -> { System.out.println("state=" + newState); }); client.start(); TreeCache cache = TreeCache.newBuilder(client, "/").setCacheData(false).build(); cache.getListenable().addListener((c, event) -> { if ( event.getData() != null ) { System.out.println("type=" + event.getType() + " path=" + event.getData().getPath()); } else { System.out.println("type=" + event.getType()); } }); cache.start(); BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); in.readLine(); } }
switch (event.getType()) { case CHILD_REMOVED: final ChildData child = event.getData(); final ZKPaths.PathAndNode childPath = ZKPaths.getPathAndNode(child.getPath()); final byte[] value = finalSubPaths.get(childPath.getNode()); if (value != null) { log.info("Node[%s] dropped, reinstating.", child.getPath()); createAnnouncement(child.getPath(), value); case CHILD_ADDED: if (addedChildren != null) { addedChildren.add(event.getData().getPath());
@Override public void nodeChanged() { String configInfo = null; ChildData childData = nodeCache.getCurrentData(); if (null != childData && childData.getData() != null) { configInfo = new String(childData.getData()); } RecordLog.info(String.format("[ZookeeperDataSource] New property value received for (%s, %s): %s", serverAddr, path, configInfo)); T newValue = ZookeeperDataSource.this.parser.convert(configInfo); // Update the new value to the property. getProperty().updateValue(newValue); } };
@Override public List<String> getNodes() { return clusterNodes.getCurrentData().stream().map(e -> new String(e.getData())).collect(Collectors.toList()); }
@Override public void childEvent(CuratorFramework client, PathChildrenCacheEvent event) throws Exception { if (event.getType() == PathChildrenCacheEvent.Type.CHILD_ADDED) { DataSegmentChangeRequest request = jsonMapper.readValue( event.getData().getData(), DataSegmentChangeRequest.class ); request.go(handler, null); } } }
if (version != null) { Stat stat = new Stat(); final byte[] bytes = curator.getData().storingStatIn(stat).forPath(target); version.setVersion(stat.getVersion()); return bytes; return curator.getData().forPath(target); } catch (final Exception ex) { throw new DrillRuntimeException(String.format("error retrieving value for [%s]", path), ex); final ChildData data = getCache().getCurrentData(target); if (data != null) { return data.getData();
@Override public TaskAnnouncement apply(ChildData input) { try { return jsonMapper.readValue(input.getData(), TaskAnnouncement.class); } catch (Exception e) { throw Throwables.propagate(e); } } };