public void setString(String path, String value) throws KeeperException, InterruptedException { setData(path, value.getBytes(), -1); }
public void setInt(String path, int nextVersion) throws KeeperException, InterruptedException { setData(path, (Integer.toString(nextVersion)).getBytes(), -1); }
public void set(T v) throws KeeperException, InterruptedException { zk.setData(nodePath, encode(v), -1); }
public void setOrCreate(String path, String value, CreateMode createMode) throws KeeperException, InterruptedException { if (exists(path, false) == null) { create(path, value.getBytes(), DEFAULT_ACL, createMode); } else { setData(path, value.getBytes(), -1); } }
private int getNextDomainId() throws KeeperException, InterruptedException { final String domainIdCounterPath = ZkPath.append(domainsRoot, KEY_DOMAIN_ID_COUNTER); if (zk.exists(domainIdCounterPath, false) == null) { zk.create(domainIdCounterPath, Integer.toString(1).getBytes()); return 1; } while (true) { final Stat stat = new Stat(); final byte[] data = zk.getData(domainIdCounterPath, false, stat); int lastVersionNumber = Integer.parseInt(new String(data)); try { lastVersionNumber++; zk.setData(domainIdCounterPath, Integer.toString(lastVersionNumber).getBytes(), stat.getVersion()); return lastVersionNumber; } catch (KeeperException.BadVersionException e) { if (LOG.isDebugEnabled()) { LOG.debug("Tried to set the domain id counter to " + lastVersionNumber + " but was preempted by another writer. Retrying."); } } } }
} else if (command.equals("null")) { System.out.println("Setting node to null: " + argument); zkCli.zk.setData(argument, null, -1); } else if (command.equals("count")) { System.out.println("Counting the number of descendants in: " + argument);
public void update(WatchedNodeUpdater<T> updater) throws InterruptedException, KeeperException { ExponentialBackoff backoff = new ExponentialBackoff(); while (true) { try { synchronized (this) { zk.setData(nodePath, encode(updater.update(value)), stat.getVersion()); } } catch (KeeperException.BadVersionException e) { // If we did not update from the latest version, backoff and retry. if (LOG.isDebugEnabled()) { LOG.debug("Did not have latest version to update node " + nodePath + ". Backing off for " + backoff.getBackoffMs() + " ms"); } backoff.backoff(); continue; } break; } }
@Test public void testIt() throws Exception { final ZooKeeperPlus zk = getZk(); final String nodePath = ZkPath.append(getRoot(), "watchedNode"); zk.create(nodePath, "1".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT); final WatchedLong wl = new WatchedLong(zk, nodePath); assertEquals(Long.valueOf(1), wl.get()); zk.setData(nodePath, "55".getBytes(), -1); WaitUntil.orDie(() -> Long.valueOf(55).equals(wl.get())); assertEquals(Long.valueOf(55), wl.get()); zk.setData(nodePath, null, -1); WaitUntil.orDie(() -> wl.get() == null); assertNull(wl.get()); final WatchedLong wl2 = new WatchedLong(zk, nodePath); WaitUntil.orDie(() -> null == wl2.get()); assertNull(wl2.get()); wl2.set(22L); WaitUntil.orDie(() -> Long.valueOf(22).equals(wl2.get()) && Long.valueOf(22).equals(wl.get())); assertEquals(Long.valueOf(22), wl2.get()); assertEquals(Long.valueOf(22), wl.get()); } }
@Test public void testIt() throws Exception { final ZooKeeperPlus zk = getZk(); final String nodePath = ZkPath.append(getRoot(), "watchedNode"); zk.create(nodePath, "1".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT); final WatchedInt wi = new WatchedInt(zk, nodePath, true); assertEquals(Integer.valueOf(1), wi.get()); zk.setData(nodePath, "55".getBytes(), -1); WaitUntil.orDie(() -> { Integer v = wi.get(); return v != null && v == 55; }); assertEquals(Integer.valueOf(55), wi.get()); zk.setData(nodePath, null, -1); WaitUntil.orDie(() -> wi.get() == null); assertNull(wi.get()); final WatchedInt wi2 = new WatchedInt(zk, nodePath, true); WaitUntil.orDie(() -> wi2.get() == null); assertNull(wi2.get()); wi2.set(22); WaitUntil.orDie(() -> { Integer v = wi.get(); Integer v2 = wi2.get(); return v2 != null && v2 == 22 && v != null && v == 22; }); assertEquals(Integer.valueOf(22), wi2.get()); assertEquals(Integer.valueOf(22), wi.get()); }