@Override public void register(final CuratorTransaction transaction) throws Exception { for (final Map.Entry<String, byte[]> entry : nodes.entrySet()) { transaction.create().forPath(entry.getKey(), entry.getValue()); } }
@Override public void register(final CuratorTransaction transaction) throws Exception { transaction.create().forPath(path, new byte[0]); }
@Override public void register(final CuratorTransaction transaction) throws Exception { transaction.create().forPath(path, data); }
@Override public void execute(final CuratorTransactionFinal curatorTransactionFinal) throws Exception { for (Map.Entry<JobInstance, List<Integer>> entry : shardingResults.entrySet()) { for (int shardingItem : entry.getValue()) { curatorTransactionFinal.create().forPath(jobNodePath.getFullPath(ShardingNode.getInstanceNode(shardingItem)), entry.getKey().getJobInstanceId().getBytes()).and(); } } curatorTransactionFinal.delete().forPath(jobNodePath.getFullPath(ShardingNode.NECESSARY)).and(); curatorTransactionFinal.delete().forPath(jobNodePath.getFullPath(ShardingNode.PROCESSING)).and(); } }
@Override public void register(final CuratorTransaction transaction) throws Exception { transaction .create().forPath(path).and() .setData().withVersion(version).forPath(path, data); }
private void register(String stringType, String value) { try { //can not switch the order of sysStat and appStat.because of the zk sequential consistency Stat sysStat = client.checkExists().creatingParentContainersIfNeeded().forPath(getSystemTypePath(stringType)); Stat appStringStat = client.checkExists().forPath(getAppBaseItemPath(stringType, value)); if(appStringStat != null) { return; } if(sysStat == null) { createNodeIfNotExists(getSystemTypePath(stringType)); } createNodeIfNotExists(getAppTypePath(stringType)); int numChildren = 0; if(sysStat != null) { numChildren = sysStat.getNumChildren(); } client.inTransaction() .create().forPath(getSystemBaseItemPath(stringType, numChildren + 1),value.getBytes()).and() .create().forPath(getAppBaseItemPath(stringType, value),ByteBuffer.allocate(4).putInt(numChildren + 1).array()).and() .commit(); } catch (Exception e) { LOG.warn("register string in zk failed", e); } }
Announcer announcer = new Announcer(curator, exec); try { curator.inTransaction().create().forPath("/somewhere").and().commit(); announcer.start();
private void createTaskAndDeletePendingTaskPrivate(SingularityTask task) throws Exception { // TODO: Should more of the below be done within a transaction? deletePendingTask(task.getTaskRequest().getPendingTask().getPendingTaskId()); final long now = System.currentTimeMillis(); String msg = String.format("Task launched because of %s", task.getTaskRequest().getPendingTask().getPendingTaskId().getPendingType().name()); if (task.getTaskRequest().getPendingTask().getUser().isPresent()) { msg = String.format("%s by %s", msg, task.getTaskRequest().getPendingTask().getUser().get()); } if (task.getTaskRequest().getPendingTask().getMessage().isPresent()) { msg = String.format("%s (%s)", msg, task.getTaskRequest().getPendingTask().getMessage().get()); } saveTaskHistoryUpdate(new SingularityTaskHistoryUpdate(task.getTaskId(), now, ExtendedTaskState.TASK_LAUNCHED, Optional.of(msg), Optional.<String>absent())); saveLastActiveTaskStatus(new SingularityTaskStatusHolder(task.getTaskId(), Optional.absent(), now, serverId, Optional.of(task.getAgentId().getValue()))); try { final String path = getTaskPath(task.getTaskId()); CuratorTransactionFinal transaction = curator.inTransaction().create().forPath(path, taskTranscoder.toBytes(task)).and(); transaction.create().forPath(getActivePath(task.getTaskId().getId())).and().commit(); leaderCache.putActiveTask(task); taskCache.set(path, task); } catch (KeeperException.NodeExistsException nee) { LOG.error("Task or active path already existed for {}", task.getTaskId()); } }
@Override public void register(final CuratorTransaction transaction) throws Exception { for (final Map.Entry<String, byte[]> entry : nodes.entrySet()) { transaction.create().forPath(entry.getKey(), entry.getValue()); } }
@Override public void register(final CuratorTransaction transaction) throws Exception { transaction.create().forPath(path, new byte[0]); }
@Override public CuratorTransactionBridge forPath(String path, byte[] data) throws Exception { return new CuratorTransactionBridgeDecorator(inner.forPath(path, data)); }
@Override public CuratorTransactionBridge forPath(String path) throws Exception { return new CuratorTransactionBridgeDecorator(inner.forPath(path)); } }
@Override public void register(final CuratorTransaction transaction) throws Exception { transaction.create().forPath(path, data); }
@Override public void execute(final CuratorTransactionFinal curatorTransactionFinal) throws Exception { for (Map.Entry<JobInstance, List<Integer>> entry : shardingResults.entrySet()) { for (int shardingItem : entry.getValue()) { curatorTransactionFinal.create().forPath(jobNodePath.getFullPath(ShardingNode.getInstanceNode(shardingItem)), entry.getKey().getJobInstanceId().getBytes()).and(); } } curatorTransactionFinal.delete().forPath(jobNodePath.getFullPath(ShardingNode.NECESSARY)).and(); curatorTransactionFinal.delete().forPath(jobNodePath.getFullPath(ShardingNode.PROCESSING)).and(); } }
@Override public void register(final CuratorTransaction transaction) throws Exception { transaction .create().forPath(path).and() .setData().withVersion(version).forPath(path, data); }
@Override public void execute(final CuratorTransactionFinal curatorTransactionFinal) throws Exception { for (Map.Entry<JobInstance, List<Integer>> entry : shardingResults.entrySet()) { for (int shardingItem : entry.getValue()) { curatorTransactionFinal.create().forPath(jobNodePath.getFullPath(ShardingNode.getInstanceNode(shardingItem)), entry.getKey().getJobInstanceId().getBytes()).and(); } } curatorTransactionFinal.delete().forPath(jobNodePath.getFullPath(ShardingNode.NECESSARY)).and(); curatorTransactionFinal.delete().forPath(jobNodePath.getFullPath(ShardingNode.PROCESSING)).and(); } }
public static Collection<CuratorTransactionResult> transaction(CuratorFramework client) throws Exception { // this example shows how to use ZooKeeper's transactions CuratorOp createOp = client.transactionOp().create().forPath("/a/path", "some data".getBytes()); CuratorOp setDataOp = client.transactionOp().setData().forPath("/another/path", "other data".getBytes()); CuratorOp deleteOp = client.transactionOp().delete().forPath("/yet/another/path"); Collection<CuratorTransactionResult> results = client.transaction().forOperations(createOp, setDataOp, deleteOp); for ( CuratorTransactionResult result : results ) { System.out.println(result.getForPath() + " - " + result.getType()); } return results; } }
@Override public void createGroup(Group group) { ensureConnected(); String groupPath = paths.groupPath(group.getGroupName()); logger.info("Creating group {} for path {}", group.getGroupName(), groupPath); try { zookeeper.inTransaction() .create().forPath(groupPath, mapper.writeValueAsBytes(group)) .and() .create().forPath(paths.topicsPath(group.getGroupName())) .and().commit(); } catch (KeeperException.NodeExistsException ex) { throw new GroupAlreadyExistsException(group.getGroupName(), ex); } catch (Exception ex) { throw new InternalProcessingException(ex); } }
@Override public void createTopic(Topic topic) { groupRepository.ensureGroupExists(topic.getName().getGroupName()); String topicPath = paths.topicPath(topic.getName()); logger.info("Creating topic for path {}", topicPath); try { zookeeper.inTransaction() .create().forPath(topicPath, mapper.writeValueAsBytes(topic)) .and() .create().forPath(paths.subscriptionsPath(topic.getName())) .and().commit(); } catch (KeeperException.NodeExistsException ex) { throw new TopicAlreadyExistsException(topic.getName(), ex); } catch (Exception ex) { throw new InternalProcessingException(ex); } }