@Override public ErrorListenerPathable<Void> inBackground() { return new ErrorListenerPathableDecorator<>(inner.inBackground()); }
@Override public ErrorListenerPathable<Void> inBackground(Object context) { return new ErrorListenerPathableDecorator<>(inner.inBackground(context)); }
@Override public ErrorListenerPathable<Void> inBackground(BackgroundCallback callback) { return new ErrorListenerPathableDecorator<>(inner.inBackground(wrap(callback), executor)); }
@Override public ErrorListenerPathable<Void> inBackground(BackgroundCallback callback, Object context, Executor executor) { return new ErrorListenerPathableDecorator<>(inner.inBackground(wrap(callback), context, executor)); }
@Override public ErrorListenerPathable<Void> inBackground(BackgroundCallback callback, Object context) { return new ErrorListenerPathableDecorator<>(inner.inBackground(wrap(callback), context, executor)); }
@Override public ErrorListenerPathable<Void> inBackground(BackgroundCallback callback, Executor executor) { return new ErrorListenerPathableDecorator<>(inner.inBackground(wrap(callback), executor)); }
public CompletableFuture<Void> deleteTree(final String path) { CompletableFuture<Void> result = new CompletableFuture<>(); try { client.delete() .deletingChildrenIfNeeded() .inBackground(callback(event -> result.complete(null), result::completeExceptionally, path), executor) .forPath(path); } catch (Exception e) { result.completeExceptionally(StoreException.create(StoreException.Type.UNKNOWN, e, path)); } return result; }
.inBackground((curatorFramework, curatorEvent) -> callback(context, record, resultHandler, curatorEvent))
Future<V> delete(String path, V v) { Future<V> future = Future.future(); try { curator.delete().deletingChildrenIfNeeded().inBackground((client, event) -> { if (event.getType() == CuratorEventType.DELETE) { //clean parent node if doesn't have child node. String[] paths = path.split("/"); String parentNodePath = Stream.of(paths).limit(paths.length - 1).reduce((previous, current) -> previous + "/" + current).get(); curator.getChildren().inBackground((childClient, childEvent) -> { if (childEvent.getChildren().size() == 0) { curator.delete().inBackground((deleteClient, deleteEvent) -> { if (deleteEvent.getType() == CuratorEventType.DELETE) vertx.runOnContext(ea -> future.complete(v)); }).forPath(parentNodePath); } else { vertx.runOnContext(ea -> future.complete(v)); } }).forPath(parentNodePath); } }).forPath(path); } catch (Exception ex) { vertx.runOnContext(aVoid -> future.fail(ex)); } return future; } }
@Override public void leave(Handler<AsyncResult<Void>> resultHandler) { vertx.executeBlocking(future -> { synchronized (ZookeeperClusterManager.this) { if (active) { active = false; try { curator.delete().deletingChildrenIfNeeded().inBackground((client, event) -> { if (event.getType() == CuratorEventType.DELETE) { if (customCuratorCluster) { future.complete(); } else { if (curator.getState() == CuratorFrameworkState.STARTED) { curator.close(); future.complete(); } } } }).forPath(ZK_PATH_CLUSTER_NODE + nodeID); AsyncMapTTLMonitor.getInstance(vertx, this).stop(); } catch (Exception e) { log.error(e); future.fail(e); } } else future.complete(); } }, resultHandler); }
private void delete(String path, Handler<AsyncResult<Void>> handler) { Context context = vertx.getOrCreateContext(); try { client.delete() .deletingChildrenIfNeeded() .inBackground((client, event) -> { context.runOnContext(v -> handler.handle(Future.succeededFuture())); }) .forPath(path); } catch (Exception e) { handler.handle(Future.failedFuture(e)); } }