我正在使用createAsync()
nuget包做一个简单的ZooKeeperNetEx
,它会抛出一个由MARSHALLINGERROR
触发的异常。
以下是两行摘要(在这些行之间,连接已成功确认给Zookeeper):
var Zoo = new ZooKeeper("localhost:50002", 5000, new ClusterWatcher());
. . .
var parentNode = Zoo.createAsync("/election", null, null, CreateMode.PERSISTENT).Result
我不明白。当然,ClusterWatcher
是我自己的派生自Watcher
的类。是的,我用C#写这个,但是这个问题很简单,我认为这不重要。如果重要的话,主机正在运行Windows 10 Pro。
答案 0 :(得分:0)
可以通过不指定ACL模式(您似乎通过null
)来触发此异常。在Java中,您可以为ACL模式传递预定义列表ZooDefs.Ids.OPEN_ACL_UNSAFE
(例如,或该类中的其他一个);对于C#,可能会有一个类似命名的常量。
在Java客户端库中,这是一个方便常量,定义为:
/**
* This is a completely open ACL .
*/
public final ArrayList<ACL> OPEN_ACL_UNSAFE = new ArrayList<ACL>(
Collections.singletonList(new ACL(Perms.ALL, ANYONE_ID_UNSAFE))
);