in curator-framework/src/main/java/org/apache/curator/framework/imps/AddWatchBuilderImpl.java [128:191]
public void performBackgroundOperation(final OperationAndData<String> data) throws Exception {
String path = data.getData();
String fixedPath = client.fixForNamespace(path);
try {
final OperationTrace trace =
client.getZookeeperClient().startAdvancedTracer("AddWatchBuilderImpl-Background");
if (watching.isWatched()) {
client.getZooKeeper()
.addWatch(
fixedPath,
mode,
(rc, path1, ctx) -> {
trace.setReturnCode(rc)
.setWithWatcher(true)
.setPath(path1)
.commit();
CuratorEvent event = new CuratorEventImpl(
client,
CuratorEventType.ADD_WATCH,
rc,
path1,
null,
ctx,
null,
null,
null,
null,
null,
null);
client.processBackgroundOperation(data, event);
},
backgrounding.getContext());
} else {
client.getZooKeeper()
.addWatch(
fixedPath,
watching.getWatcher(path),
mode,
(rc, path1, ctx) -> {
trace.setReturnCode(rc)
.setWithWatcher(true)
.setPath(path1)
.commit();
CuratorEvent event = new CuratorEventImpl(
client,
CuratorEventType.ADD_WATCH,
rc,
path1,
null,
ctx,
null,
null,
null,
null,
null,
null);
client.processBackgroundOperation(data, event);
},
backgrounding.getContext());
}
} catch (Throwable e) {
backgrounding.checkError(e, watching);
}
}