diff --git a/zookeeper-server/src/main/java/org/apache/zookeeper/ZooKeeper.java b/zookeeper-server/src/main/java/org/apache/zookeeper/ZooKeeper.java index 5d85623d9b6..9752b552c65 100644 --- a/zookeeper-server/src/main/java/org/apache/zookeeper/ZooKeeper.java +++ b/zookeeper-server/src/main/java/org/apache/zookeeper/ZooKeeper.java @@ -1490,7 +1490,7 @@ public String create( final String serverPath = prependChroot(clientPath); RequestHeader h = new RequestHeader(); - setCreateHeader(createMode, h); + setCreateHeader(createMode, h, stat != null); Create2Response response = new Create2Response(); Record record = makeCreateRecord(createMode, serverPath, data, acl, ttl); ReplyHeader r = cnxn.submitRequest(h, record, response, null); @@ -1503,11 +1503,15 @@ public String create( return chroot.strip(response.getPath()); } - private void setCreateHeader(CreateMode createMode, RequestHeader h) { + private void setCreateHeader(CreateMode createMode, RequestHeader h, boolean requestStat) { if (createMode.isTTL()) { h.setType(ZooDefs.OpCode.createTTL); + } else if (createMode.isContainer()) { + h.setType(ZooDefs.OpCode.createContainer); + } else if (requestStat) { + h.setType(ZooDefs.OpCode.create2); } else { - h.setType(createMode.isContainer() ? ZooDefs.OpCode.createContainer : ZooDefs.OpCode.create2); + h.setType(ZooDefs.OpCode.create); } } @@ -1599,7 +1603,7 @@ public void create( cb = chroot.interceptCallback(cb); RequestHeader h = new RequestHeader(); - setCreateHeader(createMode, h); + setCreateHeader(createMode, h, false); ReplyHeader r = new ReplyHeader(); Create2Response response = new Create2Response(); Record record = makeCreateRecord(createMode, serverPath, data, acl, ttl);