有没有办法通过Python绑定给Zookeeper节点设置NULL ACL?
我正在尝试使用与zookeeper分发包一起提供的Python绑定来创建一个节点(在src/contrib/zkpython/目录下)。我使用的是zookeeper-3.3.1版本。
根据create的文档,如果ACL设置为NULL,那么这个节点会继承它父节点的ACL。不过,把这个参数设置为None却会导致一个无效的ACL异常。
我查看了zookeeper.c中的parse_acls,发现它和文档的说法有冲突,但我对Python C API的经验不多。
如果我不能把这个ACL设置为null,那有没有其他的ACL设置可以让它继承父节点的呢?
1 个回答
2
我也遇到了同样的问题,但没有找到解决办法。作为一种变通方法,你可以添加一个额外的步骤。比如:
import zookeeper as zk
parent_path = "/"
stat, acl = zk.get_acl(zoohandle, parent_path)
ret = zk.create(zoohandle, node_path, "", acl, 0)
另外一个小建议:在zookeeper-3.3.1版本中,zk.get()这个方法只会返回最多512个字节的节点数据。这个问题应该会在下一个版本(3.3.3)中得到修复。