Search in sources :

Example 11 with OpResult

use of org.apache.zookeeper.OpResult in project distributedlog by twitter.

the class ZKVersionedSetOp method commitOpResult.

@Override
protected void commitOpResult(OpResult opResult) {
    assert (opResult instanceof OpResult.SetDataResult);
    OpResult.SetDataResult setDataResult = (OpResult.SetDataResult) opResult;
    listener.onCommit(new ZkVersion(setDataResult.getStat().getVersion()));
}
Also used : OpResult(org.apache.zookeeper.OpResult) ZkVersion(org.apache.bookkeeper.meta.ZkVersion)

Example 12 with OpResult

use of org.apache.zookeeper.OpResult in project distributedlog by twitter.

the class ZKLogMetadataForWriter method createMissingMetadata.

static void createMissingMetadata(final ZooKeeper zk, final String logRootPath, final List<Versioned<byte[]>> metadatas, final List<ACL> acl, final boolean ownAllocator, final boolean createIfNotExists, final Promise<List<Versioned<byte[]>>> promise) {
    final List<byte[]> pathsToCreate = Lists.newArrayListWithExpectedSize(metadatas.size());
    final List<Op> zkOps = Lists.newArrayListWithExpectedSize(metadatas.size());
    CreateMode createMode = CreateMode.PERSISTENT;
    // log root parent path
    if (pathExists(metadatas.get(MetadataIndex.LOG_ROOT_PARENT))) {
        pathsToCreate.add(null);
    } else {
        String logRootParentPath = new File(logRootPath).getParent();
        pathsToCreate.add(DistributedLogConstants.EMPTY_BYTES);
        zkOps.add(Op.create(logRootParentPath, DistributedLogConstants.EMPTY_BYTES, acl, createMode));
    }
    // log root path
    if (pathExists(metadatas.get(MetadataIndex.LOG_ROOT))) {
        pathsToCreate.add(null);
    } else {
        pathsToCreate.add(DistributedLogConstants.EMPTY_BYTES);
        zkOps.add(Op.create(logRootPath, DistributedLogConstants.EMPTY_BYTES, acl, createMode));
    }
    // max id
    if (pathExists(metadatas.get(MetadataIndex.MAX_TXID))) {
        pathsToCreate.add(null);
    } else {
        byte[] zeroTxnIdData = DLUtils.serializeTransactionId(0L);
        pathsToCreate.add(zeroTxnIdData);
        zkOps.add(Op.create(logRootPath + MAX_TXID_PATH, zeroTxnIdData, acl, createMode));
    }
    // version
    if (pathExists(metadatas.get(MetadataIndex.VERSION))) {
        pathsToCreate.add(null);
    } else {
        byte[] versionData = intToBytes(LAYOUT_VERSION);
        pathsToCreate.add(versionData);
        zkOps.add(Op.create(logRootPath + VERSION_PATH, versionData, acl, createMode));
    }
    // lock path
    if (pathExists(metadatas.get(MetadataIndex.LOCK))) {
        pathsToCreate.add(null);
    } else {
        pathsToCreate.add(DistributedLogConstants.EMPTY_BYTES);
        zkOps.add(Op.create(logRootPath + LOCK_PATH, DistributedLogConstants.EMPTY_BYTES, acl, createMode));
    }
    // read lock path
    if (pathExists(metadatas.get(MetadataIndex.READ_LOCK))) {
        pathsToCreate.add(null);
    } else {
        pathsToCreate.add(DistributedLogConstants.EMPTY_BYTES);
        zkOps.add(Op.create(logRootPath + READ_LOCK_PATH, DistributedLogConstants.EMPTY_BYTES, acl, createMode));
    }
    // log segments path
    if (pathExists(metadatas.get(MetadataIndex.LOGSEGMENTS))) {
        pathsToCreate.add(null);
    } else {
        byte[] logSegmentsData = DLUtils.serializeLogSegmentSequenceNumber(DistributedLogConstants.UNASSIGNED_LOGSEGMENT_SEQNO);
        pathsToCreate.add(logSegmentsData);
        zkOps.add(Op.create(logRootPath + LOGSEGMENTS_PATH, logSegmentsData, acl, createMode));
    }
    // allocation path
    if (ownAllocator) {
        if (pathExists(metadatas.get(MetadataIndex.ALLOCATION))) {
            pathsToCreate.add(null);
        } else {
            pathsToCreate.add(DistributedLogConstants.EMPTY_BYTES);
            zkOps.add(Op.create(logRootPath + ALLOCATION_PATH, DistributedLogConstants.EMPTY_BYTES, acl, createMode));
        }
    }
    if (zkOps.isEmpty()) {
        // nothing missed
        promise.setValue(metadatas);
        return;
    }
    if (!createIfNotExists) {
        promise.setException(new LogNotFoundException("Log " + logRootPath + " not found"));
        return;
    }
    zk.multi(zkOps, new AsyncCallback.MultiCallback() {

        @Override
        public void processResult(int rc, String path, Object ctx, List<OpResult> resultList) {
            if (KeeperException.Code.OK.intValue() == rc) {
                List<Versioned<byte[]>> finalMetadatas = Lists.newArrayListWithExpectedSize(metadatas.size());
                for (int i = 0; i < pathsToCreate.size(); i++) {
                    byte[] dataCreated = pathsToCreate.get(i);
                    if (null == dataCreated) {
                        finalMetadatas.add(metadatas.get(i));
                    } else {
                        finalMetadatas.add(new Versioned<byte[]>(dataCreated, new ZkVersion(0)));
                    }
                }
                promise.setValue(finalMetadatas);
            } else if (KeeperException.Code.NODEEXISTS.intValue() == rc) {
                promise.setException(new LogExistsException("Someone just created log " + logRootPath));
            } else {
                if (LOG.isDebugEnabled()) {
                    StringBuilder builder = new StringBuilder();
                    for (OpResult result : resultList) {
                        if (result instanceof OpResult.ErrorResult) {
                            OpResult.ErrorResult errorResult = (OpResult.ErrorResult) result;
                            builder.append(errorResult.getErr()).append(",");
                        } else {
                            builder.append(0).append(",");
                        }
                    }
                    String resultCodeList = builder.substring(0, builder.length() - 1);
                    LOG.debug("Failed to create log, full rc list = {}", resultCodeList);
                }
                promise.setException(new ZKException("Failed to create log " + logRootPath, KeeperException.Code.get(rc)));
            }
        }
    }, null);
}
Also used : Op(org.apache.zookeeper.Op) LogExistsException(com.twitter.distributedlog.exceptions.LogExistsException) Versioned(org.apache.bookkeeper.versioning.Versioned) AsyncCallback(org.apache.zookeeper.AsyncCallback) ZKException(com.twitter.distributedlog.exceptions.ZKException) CreateMode(org.apache.zookeeper.CreateMode) OpResult(org.apache.zookeeper.OpResult) List(java.util.List) LogNotFoundException(com.twitter.distributedlog.exceptions.LogNotFoundException) File(java.io.File) ZkVersion(org.apache.bookkeeper.meta.ZkVersion)

Example 13 with OpResult

use of org.apache.zookeeper.OpResult in project zookeeper by apache.

the class FinalRequestProcessor method processRequest.

public void processRequest(Request request) {
    if (LOG.isDebugEnabled()) {
        LOG.debug("Processing request:: " + request);
    }
    // request.addRQRec(">final");
    long traceMask = ZooTrace.CLIENT_REQUEST_TRACE_MASK;
    if (request.type == OpCode.ping) {
        traceMask = ZooTrace.SERVER_PING_TRACE_MASK;
    }
    if (LOG.isTraceEnabled()) {
        ZooTrace.logRequest(LOG, traceMask, 'E', request, "");
    }
    ProcessTxnResult rc = null;
    synchronized (zks.outstandingChanges) {
        // Need to process local session requests
        rc = zks.processTxn(request);
        // that add to outstandingChanges.
        if (request.getHdr() != null) {
            TxnHeader hdr = request.getHdr();
            Record txn = request.getTxn();
            long zxid = hdr.getZxid();
            while (!zks.outstandingChanges.isEmpty() && zks.outstandingChanges.get(0).zxid <= zxid) {
                ChangeRecord cr = zks.outstandingChanges.remove(0);
                if (cr.zxid < zxid) {
                    LOG.warn("Zxid outstanding " + cr.zxid + " is less than current " + zxid);
                }
                if (zks.outstandingChangesForPath.get(cr.path) == cr) {
                    zks.outstandingChangesForPath.remove(cr.path);
                }
            }
        }
        // do not add non quorum packets to the queue.
        if (request.isQuorum()) {
            zks.getZKDatabase().addCommittedProposal(request);
        }
    }
    // Calling closeSession() after losing the cnxn, results in the client close session response being dropped.
    if (request.type == OpCode.closeSession && connClosedByClient(request)) {
        // we are just playing diffs from the leader.
        if (closeSession(zks.serverCnxnFactory, request.sessionId) || closeSession(zks.secureServerCnxnFactory, request.sessionId)) {
            return;
        }
    }
    if (request.cnxn == null) {
        return;
    }
    ServerCnxn cnxn = request.cnxn;
    String lastOp = "NA";
    zks.decInProcess();
    Code err = Code.OK;
    Record rsp = null;
    try {
        if (request.getHdr() != null && request.getHdr().getType() == OpCode.error) {
            /*
                 * When local session upgrading is disabled, leader will
                 * reject the ephemeral node creation due to session expire.
                 * However, if this is the follower that issue the request,
                 * it will have the correct error code, so we should use that
                 * and report to user
                 */
            if (request.getException() != null) {
                throw request.getException();
            } else {
                throw KeeperException.create(KeeperException.Code.get(((ErrorTxn) request.getTxn()).getErr()));
            }
        }
        KeeperException ke = request.getException();
        if (ke != null && request.type != OpCode.multi) {
            throw ke;
        }
        if (LOG.isDebugEnabled()) {
            LOG.debug("{}", request);
        }
        switch(request.type) {
            case OpCode.ping:
                {
                    zks.serverStats().updateLatency(request.createTime);
                    lastOp = "PING";
                    cnxn.updateStatsForResponse(request.cxid, request.zxid, lastOp, request.createTime, Time.currentElapsedTime());
                    cnxn.sendResponse(new ReplyHeader(-2, zks.getZKDatabase().getDataTreeLastProcessedZxid(), 0), null, "response");
                    return;
                }
            case OpCode.createSession:
                {
                    zks.serverStats().updateLatency(request.createTime);
                    lastOp = "SESS";
                    cnxn.updateStatsForResponse(request.cxid, request.zxid, lastOp, request.createTime, Time.currentElapsedTime());
                    zks.finishSessionInit(request.cnxn, true);
                    return;
                }
            case OpCode.multi:
                {
                    lastOp = "MULT";
                    rsp = new MultiResponse();
                    for (ProcessTxnResult subTxnResult : rc.multiResult) {
                        OpResult subResult;
                        switch(subTxnResult.type) {
                            case OpCode.check:
                                subResult = new CheckResult();
                                break;
                            case OpCode.create:
                                subResult = new CreateResult(subTxnResult.path);
                                break;
                            case OpCode.create2:
                            case OpCode.createTTL:
                            case OpCode.createContainer:
                                subResult = new CreateResult(subTxnResult.path, subTxnResult.stat);
                                break;
                            case OpCode.delete:
                            case OpCode.deleteContainer:
                                subResult = new DeleteResult();
                                break;
                            case OpCode.setData:
                                subResult = new SetDataResult(subTxnResult.stat);
                                break;
                            case OpCode.error:
                                subResult = new ErrorResult(subTxnResult.err);
                                break;
                            default:
                                throw new IOException("Invalid type of op");
                        }
                        ((MultiResponse) rsp).add(subResult);
                    }
                    break;
                }
            case OpCode.create:
                {
                    lastOp = "CREA";
                    rsp = new CreateResponse(rc.path);
                    err = Code.get(rc.err);
                    break;
                }
            case OpCode.create2:
            case OpCode.createTTL:
            case OpCode.createContainer:
                {
                    lastOp = "CREA";
                    rsp = new Create2Response(rc.path, rc.stat);
                    err = Code.get(rc.err);
                    break;
                }
            case OpCode.delete:
            case OpCode.deleteContainer:
                {
                    lastOp = "DELE";
                    err = Code.get(rc.err);
                    break;
                }
            case OpCode.setData:
                {
                    lastOp = "SETD";
                    rsp = new SetDataResponse(rc.stat);
                    err = Code.get(rc.err);
                    break;
                }
            case OpCode.reconfig:
                {
                    lastOp = "RECO";
                    rsp = new GetDataResponse(((QuorumZooKeeperServer) zks).self.getQuorumVerifier().toString().getBytes(), rc.stat);
                    err = Code.get(rc.err);
                    break;
                }
            case OpCode.setACL:
                {
                    lastOp = "SETA";
                    rsp = new SetACLResponse(rc.stat);
                    err = Code.get(rc.err);
                    break;
                }
            case OpCode.closeSession:
                {
                    lastOp = "CLOS";
                    err = Code.get(rc.err);
                    break;
                }
            case OpCode.sync:
                {
                    lastOp = "SYNC";
                    SyncRequest syncRequest = new SyncRequest();
                    ByteBufferInputStream.byteBuffer2Record(request.request, syncRequest);
                    rsp = new SyncResponse(syncRequest.getPath());
                    break;
                }
            case OpCode.check:
                {
                    lastOp = "CHEC";
                    rsp = new SetDataResponse(rc.stat);
                    err = Code.get(rc.err);
                    break;
                }
            case OpCode.exists:
                {
                    lastOp = "EXIS";
                    // TODO we need to figure out the security requirement for this!
                    ExistsRequest existsRequest = new ExistsRequest();
                    ByteBufferInputStream.byteBuffer2Record(request.request, existsRequest);
                    String path = existsRequest.getPath();
                    if (path.indexOf('\0') != -1) {
                        throw new KeeperException.BadArgumentsException();
                    }
                    Stat stat = zks.getZKDatabase().statNode(path, existsRequest.getWatch() ? cnxn : null);
                    rsp = new ExistsResponse(stat);
                    break;
                }
            case OpCode.getData:
                {
                    lastOp = "GETD";
                    GetDataRequest getDataRequest = new GetDataRequest();
                    ByteBufferInputStream.byteBuffer2Record(request.request, getDataRequest);
                    DataNode n = zks.getZKDatabase().getNode(getDataRequest.getPath());
                    if (n == null) {
                        throw new KeeperException.NoNodeException();
                    }
                    PrepRequestProcessor.checkACL(zks, request.cnxn, zks.getZKDatabase().aclForNode(n), ZooDefs.Perms.READ, request.authInfo, getDataRequest.getPath(), null);
                    Stat stat = new Stat();
                    byte[] b = zks.getZKDatabase().getData(getDataRequest.getPath(), stat, getDataRequest.getWatch() ? cnxn : null);
                    rsp = new GetDataResponse(b, stat);
                    break;
                }
            case OpCode.setWatches:
                {
                    lastOp = "SETW";
                    SetWatches setWatches = new SetWatches();
                    // XXX We really should NOT need this!!!!
                    request.request.rewind();
                    ByteBufferInputStream.byteBuffer2Record(request.request, setWatches);
                    long relativeZxid = setWatches.getRelativeZxid();
                    zks.getZKDatabase().setWatches(relativeZxid, setWatches.getDataWatches(), setWatches.getExistWatches(), setWatches.getChildWatches(), cnxn);
                    break;
                }
            case OpCode.getACL:
                {
                    lastOp = "GETA";
                    GetACLRequest getACLRequest = new GetACLRequest();
                    ByteBufferInputStream.byteBuffer2Record(request.request, getACLRequest);
                    Stat stat = new Stat();
                    List<ACL> acl = zks.getZKDatabase().getACL(getACLRequest.getPath(), stat);
                    rsp = new GetACLResponse(acl, stat);
                    break;
                }
            case OpCode.getChildren:
                {
                    lastOp = "GETC";
                    GetChildrenRequest getChildrenRequest = new GetChildrenRequest();
                    ByteBufferInputStream.byteBuffer2Record(request.request, getChildrenRequest);
                    DataNode n = zks.getZKDatabase().getNode(getChildrenRequest.getPath());
                    if (n == null) {
                        throw new KeeperException.NoNodeException();
                    }
                    PrepRequestProcessor.checkACL(zks, request.cnxn, zks.getZKDatabase().aclForNode(n), ZooDefs.Perms.READ, request.authInfo, getChildrenRequest.getPath(), null);
                    List<String> children = zks.getZKDatabase().getChildren(getChildrenRequest.getPath(), null, getChildrenRequest.getWatch() ? cnxn : null);
                    rsp = new GetChildrenResponse(children);
                    break;
                }
            case OpCode.getChildren2:
                {
                    lastOp = "GETC";
                    GetChildren2Request getChildren2Request = new GetChildren2Request();
                    ByteBufferInputStream.byteBuffer2Record(request.request, getChildren2Request);
                    Stat stat = new Stat();
                    DataNode n = zks.getZKDatabase().getNode(getChildren2Request.getPath());
                    if (n == null) {
                        throw new KeeperException.NoNodeException();
                    }
                    PrepRequestProcessor.checkACL(zks, request.cnxn, zks.getZKDatabase().aclForNode(n), ZooDefs.Perms.READ, request.authInfo, getChildren2Request.getPath(), null);
                    List<String> children = zks.getZKDatabase().getChildren(getChildren2Request.getPath(), stat, getChildren2Request.getWatch() ? cnxn : null);
                    rsp = new GetChildren2Response(children, stat);
                    break;
                }
            case OpCode.checkWatches:
                {
                    lastOp = "CHKW";
                    CheckWatchesRequest checkWatches = new CheckWatchesRequest();
                    ByteBufferInputStream.byteBuffer2Record(request.request, checkWatches);
                    WatcherType type = WatcherType.fromInt(checkWatches.getType());
                    boolean containsWatcher = zks.getZKDatabase().containsWatcher(checkWatches.getPath(), type, cnxn);
                    if (!containsWatcher) {
                        String msg = String.format(Locale.ENGLISH, "%s (type: %s)", new Object[] { checkWatches.getPath(), type });
                        throw new KeeperException.NoWatcherException(msg);
                    }
                    break;
                }
            case OpCode.removeWatches:
                {
                    lastOp = "REMW";
                    RemoveWatchesRequest removeWatches = new RemoveWatchesRequest();
                    ByteBufferInputStream.byteBuffer2Record(request.request, removeWatches);
                    WatcherType type = WatcherType.fromInt(removeWatches.getType());
                    boolean removed = zks.getZKDatabase().removeWatch(removeWatches.getPath(), type, cnxn);
                    if (!removed) {
                        String msg = String.format(Locale.ENGLISH, "%s (type: %s)", new Object[] { removeWatches.getPath(), type });
                        throw new KeeperException.NoWatcherException(msg);
                    }
                    break;
                }
        }
    } catch (SessionMovedException e) {
        // session moved is a connection level error, we need to tear
        // down the connection otw ZOOKEEPER-710 might happen
        // ie client on slow follower starts to renew session, fails
        // before this completes, then tries the fast follower (leader)
        // and is successful, however the initial renew is then
        // successfully fwd/processed by the leader and as a result
        // the client and leader disagree on where the client is most
        // recently attached (and therefore invalid SESSION MOVED generated)
        cnxn.sendCloseSession();
        return;
    } catch (KeeperException e) {
        err = e.code();
    } catch (Exception e) {
        // log at error level as we are returning a marshalling
        // error to the user
        LOG.error("Failed to process " + request, e);
        StringBuilder sb = new StringBuilder();
        ByteBuffer bb = request.request;
        bb.rewind();
        while (bb.hasRemaining()) {
            sb.append(Integer.toHexString(bb.get() & 0xff));
        }
        LOG.error("Dumping request buffer: 0x" + sb.toString());
        err = Code.MARSHALLINGERROR;
    }
    long lastZxid = zks.getZKDatabase().getDataTreeLastProcessedZxid();
    ReplyHeader hdr = new ReplyHeader(request.cxid, lastZxid, err.intValue());
    zks.serverStats().updateLatency(request.createTime);
    cnxn.updateStatsForResponse(request.cxid, lastZxid, lastOp, request.createTime, Time.currentElapsedTime());
    try {
        cnxn.sendResponse(hdr, rsp, "response");
        if (request.type == OpCode.closeSession) {
            cnxn.sendCloseSession();
        }
    } catch (IOException e) {
        LOG.error("FIXMSG", e);
    }
}
Also used : MultiResponse(org.apache.zookeeper.MultiResponse) WatcherType(org.apache.zookeeper.Watcher.WatcherType) CreateResponse(org.apache.zookeeper.proto.CreateResponse) GetACLRequest(org.apache.zookeeper.proto.GetACLRequest) ErrorResult(org.apache.zookeeper.OpResult.ErrorResult) ProcessTxnResult(org.apache.zookeeper.server.DataTree.ProcessTxnResult) GetACLResponse(org.apache.zookeeper.proto.GetACLResponse) SetACLResponse(org.apache.zookeeper.proto.SetACLResponse) CreateResult(org.apache.zookeeper.OpResult.CreateResult) OpResult(org.apache.zookeeper.OpResult) CheckResult(org.apache.zookeeper.OpResult.CheckResult) List(java.util.List) GetChildren2Response(org.apache.zookeeper.proto.GetChildren2Response) GetChildren2Request(org.apache.zookeeper.proto.GetChildren2Request) OpCode(org.apache.zookeeper.ZooDefs.OpCode) Code(org.apache.zookeeper.KeeperException.Code) GetChildrenResponse(org.apache.zookeeper.proto.GetChildrenResponse) SyncRequest(org.apache.zookeeper.proto.SyncRequest) SetWatches(org.apache.zookeeper.proto.SetWatches) SessionMovedException(org.apache.zookeeper.KeeperException.SessionMovedException) GetDataResponse(org.apache.zookeeper.proto.GetDataResponse) KeeperException(org.apache.zookeeper.KeeperException) DeleteResult(org.apache.zookeeper.OpResult.DeleteResult) ExistsResponse(org.apache.zookeeper.proto.ExistsResponse) Create2Response(org.apache.zookeeper.proto.Create2Response) SetDataResponse(org.apache.zookeeper.proto.SetDataResponse) RemoveWatchesRequest(org.apache.zookeeper.proto.RemoveWatchesRequest) GetDataRequest(org.apache.zookeeper.proto.GetDataRequest) SetDataResult(org.apache.zookeeper.OpResult.SetDataResult) QuorumZooKeeperServer(org.apache.zookeeper.server.quorum.QuorumZooKeeperServer) Stat(org.apache.zookeeper.data.Stat) SyncResponse(org.apache.zookeeper.proto.SyncResponse) Record(org.apache.jute.Record) ChangeRecord(org.apache.zookeeper.server.ZooKeeperServer.ChangeRecord) ReplyHeader(org.apache.zookeeper.proto.ReplyHeader) ExistsRequest(org.apache.zookeeper.proto.ExistsRequest) GetChildrenRequest(org.apache.zookeeper.proto.GetChildrenRequest) IOException(java.io.IOException) CheckWatchesRequest(org.apache.zookeeper.proto.CheckWatchesRequest) ByteBuffer(java.nio.ByteBuffer) KeeperException(org.apache.zookeeper.KeeperException) IOException(java.io.IOException) SessionMovedException(org.apache.zookeeper.KeeperException.SessionMovedException) ErrorTxn(org.apache.zookeeper.txn.ErrorTxn) ChangeRecord(org.apache.zookeeper.server.ZooKeeperServer.ChangeRecord) TxnHeader(org.apache.zookeeper.txn.TxnHeader)

Example 14 with OpResult

use of org.apache.zookeeper.OpResult in project distributedlog by twitter.

the class TestZKVersionedSetOp method testAbortOpResult.

@Test(timeout = 60000)
public void testAbortOpResult() throws Exception {
    final AtomicReference<Throwable> exception = new AtomicReference<Throwable>();
    final CountDownLatch latch = new CountDownLatch(1);
    ZKVersionedSetOp versionedSetOp = new ZKVersionedSetOp(mock(Op.class), new Transaction.OpListener<Version>() {

        @Override
        public void onCommit(Version r) {
        // no-op
        }

        @Override
        public void onAbort(Throwable t) {
            exception.set(t);
            latch.countDown();
        }
    });
    KeeperException ke = KeeperException.create(KeeperException.Code.SESSIONEXPIRED);
    OpResult opResult = new OpResult.ErrorResult(KeeperException.Code.NONODE.intValue());
    versionedSetOp.abortOpResult(ke, opResult);
    latch.await();
    assertTrue(exception.get() instanceof KeeperException.NoNodeException);
}
Also used : Op(org.apache.zookeeper.Op) AtomicReference(java.util.concurrent.atomic.AtomicReference) CountDownLatch(java.util.concurrent.CountDownLatch) Transaction(com.twitter.distributedlog.util.Transaction) Version(org.apache.bookkeeper.versioning.Version) OpResult(org.apache.zookeeper.OpResult) KeeperException(org.apache.zookeeper.KeeperException) Test(org.junit.Test)

Aggregations

OpResult (org.apache.zookeeper.OpResult)14 KeeperException (org.apache.zookeeper.KeeperException)8 Op (org.apache.zookeeper.Op)7 MultiCallback (org.apache.zookeeper.AsyncCallback.MultiCallback)5 Test (org.junit.Test)4 List (java.util.List)3 CreateResult (org.apache.zookeeper.OpResult.CreateResult)3 ErrorResult (org.apache.zookeeper.OpResult.ErrorResult)3 LogExistsException (com.twitter.distributedlog.exceptions.LogExistsException)2 ZKException (com.twitter.distributedlog.exceptions.ZKException)2 ZKOp (com.twitter.distributedlog.zk.ZKOp)2 ZKVersionedSetOp (com.twitter.distributedlog.zk.ZKVersionedSetOp)2 ZkVersion (org.apache.bookkeeper.meta.ZkVersion)2 CheckResult (org.apache.zookeeper.OpResult.CheckResult)2 DeleteResult (org.apache.zookeeper.OpResult.DeleteResult)2 LogNotFoundException (com.twitter.distributedlog.exceptions.LogNotFoundException)1 Transaction (com.twitter.distributedlog.util.Transaction)1 File (java.io.File)1 IOException (java.io.IOException)1 ByteBuffer (java.nio.ByteBuffer)1