public void performBackgroundOperation()

in curator-framework/src/main/java/org/apache/curator/framework/imps/GetDataBuilderImpl.java [231:275]


    public void performBackgroundOperation(final OperationAndData<String> operationAndData) throws Exception {
        try {
            final OperationTrace trace =
                    client.getZookeeperClient().startAdvancedTracer("GetDataBuilderImpl-Background");
            AsyncCallback.DataCallback callback = new AsyncCallback.DataCallback() {
                @Override
                public void processResult(int rc, String path, Object ctx, byte[] data, Stat stat) {
                    watching.commitWatcher(rc, false);
                    trace.setReturnCode(rc)
                            .setResponseBytesLength(data)
                            .setPath(path)
                            .setWithWatcher(watching.hasWatcher())
                            .setStat(stat)
                            .commit();
                    if ((responseStat != null) && (stat != null)) {
                        DataTree.copyStat(stat, responseStat);
                    }
                    if (decompress && (data != null)) {
                        try {
                            data = client.getCompressionProvider().decompress(path, data);
                        } catch (Exception e) {
                            ThreadUtils.checkInterrupted(e);
                            log.error("Decompressing for path: " + path, e);
                            rc = KeeperException.Code.DATAINCONSISTENCY.intValue();
                        }
                    }
                    CuratorEvent event = new CuratorEventImpl(
                            client, CuratorEventType.GET_DATA, rc, path, null, ctx, stat, data, null, null, null, null);
                    client.processBackgroundOperation(operationAndData, event);
                }
            };
            if (watching.isWatched()) {
                client.getZooKeeper().getData(operationAndData.getData(), true, callback, backgrounding.getContext());
            } else {
                client.getZooKeeper()
                        .getData(
                                operationAndData.getData(),
                                watching.getWatcher(operationAndData.getData()),
                                callback,
                                backgrounding.getContext());
            }
        } catch (Throwable e) {
            backgrounding.checkError(e, watching);
        }
    }