org.apache.zookeeper.ZooKeeper.create()方法的使用及代码示例

x33g5p2x  于2022-02-05 转载在 其他  
字(8.6k)|赞(0)|评价(0)|浏览(263)

本文整理了Java中org.apache.zookeeper.ZooKeeper.create()方法的一些代码示例,展示了ZooKeeper.create()的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。ZooKeeper.create()方法的具体详情如下:
包路径:org.apache.zookeeper.ZooKeeper
类名称:ZooKeeper
方法名:create

ZooKeeper.create介绍

[英]Create a node with the given path. The node data will be the given data, and node acl will be the given acl.

The flags argument specifies whether the created node will be ephemeral or not.

An ephemeral node will be removed by the ZooKeeper automatically when the session associated with the creation of the node expires.

The flags argument can also specify to create a sequential node. The actual path name of a sequential node will be the given path plus a suffix "i" where i is the current sequential number of the node. The sequence number is always fixed length of 10 digits, 0 padded. Once such a node is created, the sequential number will be incremented by one.

If a node with the same actual path already exists in the ZooKeeper, a KeeperException with error code KeeperException.NodeExists will be thrown. Note that since a different actual path is used for each invocation of creating sequential node with the same path argument, the call will never throw "file exists" KeeperException.

If the parent node does not exist in the ZooKeeper, a KeeperException with error code KeeperException.NoNode will be thrown.

An ephemeral node cannot have children. If the parent node of the given path is ephemeral, a KeeperException with error code KeeperException.NoChildrenForEphemerals will be thrown.

This operation, if successful, will trigger all the watches left on the node of the given path by exists and getData API calls, and the watches left on the parent node by getChildren API calls.

If a node is created successfully, the ZooKeeper server will trigger the watches on the path left by exists calls, and the watches on the parent of the node by getChildren calls.

The maximum allowable size of the data array is 1 MB (1,048,576 bytes). Arrays larger than this will cause a KeeperExecption to be thrown.
[中]使用给定路径创建一个节点。节点数据将是给定的数据,节点acl将是给定的acl。
flags参数指定创建的节点是否短暂。
当与创建节点相关的会话过期时,ZooKeeper将自动删除临时节点。
flags参数还可以指定创建顺序节点。顺序节点的实际路径名将是给定路径加上后缀“i”,其中i是节点的当前顺序号。序列号始终为固定长度的10位数字,0填充。一旦创建了这样一个节点,序列号将增加1。
如果ZooKeeper中已经存在具有相同实际路径的节点,则会出现错误代码为KeeperException的KeeperException。NodeExists将被抛出。请注意,由于使用相同的path参数创建顺序节点的每次调用都使用不同的实际路径,因此该调用永远不会抛出“file exists”KeeperException。
如果ZooKeeper中不存在父节点,则会出现错误代码为KeeperException的KeeperException。NoNode将被抛出。
短暂节点不能有子节点。如果给定路径的父节点是短暂的,则会出现错误代码为KeeperException的KeeperException。没有孩子会被扔出去。
如果此操作成功,将通过exists和getData API调用触发给定路径节点上剩余的所有监视,并通过getChildren API调用触发父节点上剩余的监视。
如果节点创建成功,ZooKeeper服务器将触发exists调用留下的路径上的监视,并通过getChildren调用触发节点父节点上的监视。
数据数组的最大允许大小为1 MB(1048576字节)。大于此值的数组将导致抛出KeeperExecAction。

代码示例

代码示例来源:origin: apache/zookeeper

public boolean execute() throws KeeperException, InterruptedException {
    Stat stat = zookeeper.exists(path, false);
    if (stat != null) {
      return true;
    }
    zookeeper.create(path, data, acl, flags);
    return true;
  }
});

代码示例来源:origin: apache/zookeeper

@Override
  public void execute(byte[] data) throws Exception {
    zk.create("/create_test", data, Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT_SEQUENTIAL);
  }
});

代码示例来源:origin: apache/zookeeper

private static void createZNode(ZooKeeper zk, String path, String data)
    throws KeeperException, InterruptedException {
  try{
    zk.create(path, data.getBytes(),
        ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
  } catch (KeeperException.NodeExistsException e) {
  }
}

代码示例来源:origin: apache/zookeeper

private void verifyCreateFails(String path, ZooKeeper zk) throws Exception {
  try {
    zk.create(path, null, Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
  } catch (IllegalArgumentException e) {
    // this is good
    return;
  }
  Assert.fail("bad path \"" + path + "\" not caught");
}

代码示例来源:origin: apache/zookeeper

private void createNoStatVerifyResult(String newName)
    throws KeeperException, InterruptedException {
  Assert.assertNull("Node existed before created", zk.exists(newName, false));
  zk.create(newName, newName.getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.CONTAINER);
  Assert.assertNotNull("Node was not created as expected",
      zk.exists(newName, false));
}

代码示例来源:origin: apache/zookeeper

@Test
public void testAuth() throws Exception {
  ZooKeeper zk = createClient();
  try {
    zk.create("/path1", null, Ids.CREATOR_ALL_ACL, CreateMode.PERSISTENT);
    Thread.sleep(1000);
  } finally {
    zk.close();
  }
}

代码示例来源:origin: apache/zookeeper

private void createNoStatVerifyResult(String newName)
  throws KeeperException, InterruptedException {
 Assert.assertNull("Node existed before created", zk.exists(newName, false));
 String path = zk.create(newName, newName.getBytes(),
             Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
 Assert.assertEquals(path, newName);
 Assert.assertNotNull("Node was not created as expected",
            zk.exists(newName, false));
}

代码示例来源:origin: apache/zookeeper

private Stat createWithStatVerifyResult(String newName)
    throws KeeperException, InterruptedException {
  Assert.assertNull("Node existed before created", zk.exists(newName, false));
  Stat stat = new Stat();
  zk.create(newName, newName.getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.CONTAINER, stat);
  validateCreateStat(stat, newName);
  Stat referenceStat = zk.exists(newName, false);
  Assert.assertNotNull("Node was not created as expected", referenceStat);
  Assert.assertEquals(referenceStat, stat);
  return stat;
}

代码示例来源:origin: apache/zookeeper

public void verifyCreateFailure_NoNode() {
  rc = Code.NONODE;
  name = null;
  path = path + "/bar";
  zk.create(path, data, acl, flags, this, toString());
  verify();
}

代码示例来源:origin: apache/zookeeper

public void verifyCreateFailure_NoNode() {
  rc = Code.NONODE;
  name = null;
  stat = null;
  path = path + "/bar";
  zk.create(path, data, acl, flags, this, toString());
  verify();
}

代码示例来源:origin: apache/zookeeper

@Test
public void testSetReqs() throws Exception {
  final String path = "/set_test";
  zk.create(path, new byte[1], Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
  testRequests(new ClientOp() {
    @Override
    public void execute(byte[] data) throws Exception {
      zk.setData(path, data, -1);
    }
  });
}

代码示例来源:origin: apache/zookeeper

@Test
public void testAuthFail() {
  try (ZooKeeper zk = createClient()) {
    zk.create("/path1", null, Ids.CREATOR_ALL_ACL, CreateMode.PERSISTENT);
    Assert.fail("Should have gotten exception.");
  } catch (Exception e) {
    // ok, exception as expected.
    LOG.info("Got exception as expected: " + e);
  }
}

代码示例来源:origin: apache/zookeeper

@Test(timeout = 30000)
public void testSimpleDeletion()
    throws KeeperException, InterruptedException {
  zk.create("/foo", new byte[0], ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.CONTAINER);
  zk.create("/foo/bar", new byte[0], ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
  zk.delete("/foo/bar", -1);  // should cause "/foo" to get deleted when checkContainers() is called
  ContainerManager containerManager = new ContainerManager(serverFactory.getZooKeeperServer()
      .getZKDatabase(), serverFactory.getZooKeeperServer().firstProcessor, 1, 100);
  containerManager.checkContainers();
  Thread.sleep(1000);
  Assert.assertNull("Container should have been deleted", zk.exists("/foo", false));
}

代码示例来源:origin: apache/zookeeper

@Test
public void testNodeCreated() throws Exception {
  String path = "/test1-created";
  zk1.exists(path, watcher);
  qu.shutdown(1);
  zk2.create(path, new byte[2], ZooDefs.Ids.OPEN_ACL_UNSAFE,
      CreateMode.PERSISTENT);
  qu.start(1);
  watcher.waitForConnected(TIMEOUT * 1000L);
  watcher.assertEvent(TIMEOUT, EventType.NodeCreated);
}

代码示例来源:origin: apache/zookeeper

public void verifyCreateFailure_NoChildForEphemeral() {
  new StringCB(zk).verifyCreateEphemeral();
  rc = Code.NOCHILDRENFOREPHEMERALS;
  name = null;
  stat = null;
  path = path + "/bar";
  zk.create(path, data, acl, flags, this, toString());
  verify();
}

代码示例来源:origin: apache/zookeeper

public void verifyCreateFailure_NodeExists() {
  new Create2CB(zk).verifyCreate();
  rc = Code.NODEEXISTS;
  name = null;
  stat = null;
  zk.create(path, data, acl, flags, this, toString());
  verify();
}

代码示例来源:origin: apache/zookeeper

@Test
public void testStartup() throws Exception {
  final String path = "/test_node";
  zk.create(path, new byte[TEST_MAXBUFFER - 60], Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
  zk.setData(path, new byte[TEST_MAXBUFFER - 50], -1);
  stopServer();
  startServer();
}

代码示例来源:origin: apache/zookeeper

public void verifyCreateFailure_NodeExists() {
  new StringCB(zk).verifyCreate();
  
  rc = Code.NODEEXISTS;
  name = null;
  zk.create(path, data, acl, flags, this, toString());
  verify();
}

代码示例来源:origin: apache/zookeeper

public void verifyCreateFailure_NoChildForEphemeral() {
  new StringCB(zk).verifyCreateEphemeral();
  rc = Code.NOCHILDRENFOREPHEMERALS;
  name = null;
  path = path + "/bar";
  zk.create(path, data, acl, flags, this, toString());
  verify();
}

代码示例来源:origin: apache/zookeeper

@Test
public void testNodeDataChanged() throws Exception {
  String path = "/test-changed";
  zk1.create(path, new byte[1], ZooDefs.Ids.OPEN_ACL_UNSAFE,
      CreateMode.PERSISTENT);
  Stat stat1 = zk1.exists(path, watcher);
  qu.shutdown(1);
  zk2.setData(path, new byte[2], stat1.getVersion());
  qu.start(1);
  watcher.waitForConnected(TIMEOUT);
  watcher.assertEvent(TIMEOUT, EventType.NodeDataChanged);
}

相关文章