Example usage for org.apache.zookeeper KeeperException code

List of usage examples for org.apache.zookeeper KeeperException code

Introduction

In this page you can find the example usage for org.apache.zookeeper KeeperException code.

Prototype

Code code

To view the source code for org.apache.zookeeper KeeperException code.

Click Source Link

Usage

From source file:com.twitter.distributedlog.zk.TestZKVersionedSetOp.java

License:Apache License

@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//from  w  w  w.  j  a  v a  2  s .c  o m
                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);
}

From source file:com.twitter.distributedlog.zk.ZKTransaction.java

License:Apache License

@Override
public void processResult(int rc, String path, Object ctx, List<OpResult> results) {
    if (KeeperException.Code.OK.intValue() == rc) { // transaction succeed
        for (int i = 0; i < ops.size(); i++) {
            ops.get(i).commitOpResult(results.get(i));
        }/*from w ww  . j a va  2 s. c o m*/
        FutureUtils.setValue(result, null);
    } else {
        KeeperException ke = KeeperException.create(KeeperException.Code.get(rc));
        for (int i = 0; i < ops.size(); i++) {
            ops.get(i).abortOpResult(ke, null != results ? results.get(i) : null);
        }
        FutureUtils.setException(result, ke);
    }
}

From source file:com.twitter.distributedlog.zk.ZKVersionedSetOp.java

License:Apache License

@Override
protected void abortOpResult(Throwable t, @Nullable OpResult opResult) {
    Throwable cause;/*from w  w  w  . j  a va2  s.  c  om*/
    if (null == opResult) {
        cause = t;
    } else {
        assert (opResult instanceof OpResult.ErrorResult);
        OpResult.ErrorResult errorResult = (OpResult.ErrorResult) opResult;
        if (KeeperException.Code.OK.intValue() == errorResult.getErr()) {
            cause = t;
        } else {
            cause = KeeperException.create(KeeperException.Code.get(errorResult.getErr()));
        }
    }
    listener.onAbort(cause);
}

From source file:com.twitter.distributedlog.ZooKeeperClientUtils.java

License:Apache License

/**
 * Expire given zookeeper client's session.
 *
 * @param zkc/*from w  w w.  ja  v  a 2 s  .c o  m*/
 *          zookeeper client
 * @param zkServers
 *          zookeeper servers
 * @param timeout
 *          timeout
 * @throws Exception
 */
public static void expireSession(ZooKeeperClient zkc, String zkServers, int timeout) throws Exception {
    final CountDownLatch expireLatch = new CountDownLatch(1);
    final CountDownLatch latch = new CountDownLatch(1);
    ZooKeeper oldZk = zkc.get();
    oldZk.exists("/", new Watcher() {
        @Override
        public void process(WatchedEvent event) {
            logger.debug("Receive event : {}", event);
            if (event.getType() == Event.EventType.None && event.getState() == Event.KeeperState.Expired) {
                expireLatch.countDown();
            }
        }
    });
    ZooKeeper newZk = new ZooKeeper(zkServers, timeout, new Watcher() {
        @Override
        public void process(WatchedEvent event) {
            if (Event.EventType.None == event.getType()
                    && Event.KeeperState.SyncConnected == event.getState()) {
                latch.countDown();
            }
        }
    }, oldZk.getSessionId(), oldZk.getSessionPasswd());
    if (!latch.await(timeout, TimeUnit.MILLISECONDS)) {
        throw KeeperException.create(KeeperException.Code.CONNECTIONLOSS);
    }
    newZk.close();

    boolean done = false;
    Stopwatch expireWait = Stopwatch.createStarted();
    while (!done && expireWait.elapsed(TimeUnit.MILLISECONDS) < timeout * 2) {
        try {
            zkc.get().exists("/", false);
            done = true;
        } catch (KeeperException ke) {
            done = (ke.code() == KeeperException.Code.SESSIONEXPIRED);
        }
    }

    assertTrue("Client should receive session expired event.",
            expireLatch.await(timeout, TimeUnit.MILLISECONDS));
}

From source file:com.vmware.photon.controller.common.zookeeper.ServiceNodeMembership.java

License:Open Source License

/**
 * Creates a new membership node in Zookeeper and sets the provided future when creation is complete.
 *
 * @param leasePromise promise that gets fulfilled when node is created
 * @return a listenable future to get notified when the znode gets created
 * @throws Exception// w ww  .  j  ava  2  s .c o m
 */
public synchronized ListenableFuture<Void> create(final SettableFuture<ServiceNode.Lease> leasePromise)
        throws Exception {
    logger.debug("Creating membership node for {}", membershipNode);

    final SettableFuture<Void> future = SettableFuture.create();
    BackgroundCallback callback = new BackgroundCallback() {
        @Override
        public void processResult(CuratorFramework client, CuratorEvent event) throws Exception {
            if (event.getResultCode() == KeeperException.Code.OK.intValue()) {
                leasePromise.set(new ServiceNode.Lease() {
                    @Override
                    public ListenableFuture<Void> getExpirationFuture() {
                        return expirationPromise;
                    }
                });
                future.set(null);
            } else {
                logger.error("Failed to create node {}: {}", membershipNode, event.getResultCode());
                future.setException(KeeperException.create(KeeperException.Code.get(event.getResultCode())));
                leasePromise
                        .setException(KeeperException.create(KeeperException.Code.get(event.getResultCode())));
            }
        }
    };

    zkClient.create().creatingParentsIfNeeded().withMode(CreateMode.EPHEMERAL).inBackground(callback)
            .forPath(membershipNode, getSerializedAddress());
    return future;
}

From source file:com.vmware.photon.controller.common.zookeeper.ServiceNodeMembership.java

License:Open Source License

public synchronized void delete(final SettableFuture<Void> donePromise) throws Exception {
    logger.debug("Deleting membership node for {}", membershipNode);

    BackgroundCallback callback = new BackgroundCallback() {
        @Override/*from   w  ww.java  2  s . co m*/
        public void processResult(CuratorFramework client, CuratorEvent event) throws Exception {
            if (event.getResultCode() == KeeperException.Code.OK.intValue()) {
                donePromise.set(VOID);
                logger.debug("Membership node deleted");
            } else {
                logger.error("Error deleting the node {}: {}", membershipNode, event.getResultCode());
                donePromise
                        .setException(KeeperException.create(KeeperException.Code.get(event.getResultCode())));
            }
        }
    };

    zkClient.delete().guaranteed().inBackground(callback).forPath(membershipNode);
}

From source file:com.vmware.photon.controller.deployer.deployengine.ZookeeperClient.java

License:Open Source License

private AsyncCallback.DataCallback getDataCallback(FutureCallback callback) {
    return new AsyncCallback.DataCallback() {
        @Override//from w  w w . j a  va 2  s .  c om
        public void processResult(int rc, String path, Object ctx, byte[] data, Stat stat) {
            switch (KeeperException.Code.get(rc)) {
            case OK:
                logger.info("Zookeeper successfully reconfigured");
                callback.onSuccess(null);
                break;
            default:
                logger.error("Zookeeper returned error code during reconfig" + KeeperException.Code.get(rc));
                callback.onFailure(new RuntimeException("Failed to reconfigure zookeeper"));
            }
        }
    };
}

From source file:com.yahoo.pasc.paxos.Barrier.java

License:Open Source License

/**
 * Barrier constructor//from   w ww.  j  a v  a  2  s . com
 * 
 * @param address
 * @param root
 * @param size
 * @throws IOException
 * @throws KeeperException
 */
public Barrier(ZooKeeper zk, String root, String name, int size) throws KeeperException, IOException {
    this.zk = zk;
    this.mutex = new Object();
    this.root = root;
    this.size = size;
    this.name = name;

    try {
        zk.create(root, null, Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
    } catch (KeeperException e) {
        if (e.code().equals(Code.NODEEXISTS)) {
            //ignore
        } else {
            LOG.error("Keeper exception when instantiating barrier.", e);
        }
    } catch (InterruptedException e) {
        LOG.error("Interrupted exception", e);
    }
}

From source file:com.yahoo.pasc.paxos.Barrier.java

License:Open Source License

/**
 * Join barrier/*from   www  . ja  va  2 s . c om*/
 * 
 * @return
 * @throws KeeperException
 * @throws InterruptedException
 */

public boolean enter() throws KeeperException, InterruptedException {
    zk.create(root + "/" + name, null, Ids.OPEN_ACL_UNSAFE, CreateMode.EPHEMERAL);
    int children = zk.getChildren(root, false).size();
    if (children >= size) {
        try {
            zk.create(root + "/start", null, Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
        } catch (KeeperException e) {
            if (e.code().equals(Code.NODEEXISTS)) {
                return true;
            } else
                throw e;
        }
        return true;
    }
    while (true) {
        synchronized (mutex) {
            Stat stat = zk.exists(root + "/start", this);
            if (stat != null) {
                return true;
            }
            mutex.wait();
        }
    }
}

From source file:com.yahoo.pasc.paxos.Barrier.java

License:Open Source License

/**
 * Wait until all reach barrier//from   w w w .ja  v  a2 s.c  o  m
 * 
 * @return
 * @throws KeeperException
 * @throws InterruptedException
 */
public boolean leave() throws KeeperException, InterruptedException {
    zk.delete(root + "/" + name, -1);
    while (true) {
        synchronized (mutex) {
            int children = zk.getChildren(root, this).size();
            if (children == 1) {
                try {
                    zk.delete(root + "/start", -1);
                } catch (KeeperException e) {
                    if (e.code().equals(Code.NONODE)) {
                        return true;
                    } else
                        throw e;
                }
            } else if (children == 0) {
                return true;
            } else {
                mutex.wait();
            }
        }
    }
}