On 10 June 2015 at 16:27, Patrick Hunt <[email protected]> wrote:

> Yea, that's bad. We should cut a fix release for this.  Can you create a
> jira?
>

Already on it, https://issues.apache.org/jira/browse/ZOOKEEPER-2213

Brian

>
> Likely our client (the ones we ship in zk itself) always fill in some
> value rather than null (etc...) and the go client was doing things
> differently.
>
> Patrick
>
> On Wed, Jun 10, 2015 at 8:23 AM, Brian Brazil <[email protected]>
> wrote:
> > On 10 June 2015 at 16:16, Patrick Hunt <[email protected]> wrote:
> >
> >> The report is pretty serious. Anyone can confirm? (and create a jira
> >> please)
> >>
> >> https://github.com/samuel/go-zookeeper/issues/62
> >
> >
> > I happen to be playing with that library right now, so I've attempted to
> > reproduce it. The bug looks to be as stated on 3.4.5.
> >
> > The code:
> >         c, _, _ := zk.Connect([]string{"127.0.0.1"}, time.Second)
> >         c.Set("", []byte{}, 0)
> >
> > Causes on the zookeeper server:
> >
> > 2015-06-10 16:21:10,862 [myid:] - ERROR
> > [SyncThread:0:SyncRequestProcessor@151] - Severe unrecoverable error,
> > exiting
> >
> > java.lang.IllegalArgumentException: Invalid path
> >
> >         at
> > org.apache.zookeeper.common.PathTrie.findMaxPrefix(PathTrie.java:259)
> >
> >         at
> >
> org.apache.zookeeper.server.DataTree.getMaxPrefixWithQuota(DataTree.java:634)
> >
> >         at
> org.apache.zookeeper.server.DataTree.setData(DataTree.java:616)
> >
> >         at
> > org.apache.zookeeper.server.DataTree.processTxn(DataTree.java:807)
> >
> >         at
> > org.apache.zookeeper.server.ZKDatabase.processTxn(ZKDatabase.java:329)
> >
> >         at
> >
> org.apache.zookeeper.server.ZooKeeperServer.processTxn(ZooKeeperServer.java:965)
> >
> >         at
> >
> org.apache.zookeeper.server.FinalRequestProcessor.processRequest(FinalRequestProcessor.java:116)
> >
> >         at
> >
> org.apache.zookeeper.server.SyncRequestProcessor.flush(SyncRequestProcessor.java:167)
> >
> >         at
> >
> org.apache.zookeeper.server.SyncRequestProcessor.run(SyncRequestProcessor.java:101)
> >
> >
> >
> > Restarting the server produces:
> >
> > 2015-06-10 16:22:21,271 [myid:] - INFO  [main:FileSnap@83] - Reading
> > snapshot /tmp/zookeeper/version-2/snapshot.6
> >
> > 2015-06-10 16:22:21,352 [myid:] - ERROR [main:ZooKeeperServerMain@54] -
> > Invalid arguments, exiting abnormally
> >
> > java.lang.IllegalArgumentException: Invalid path
> >
> >         at
> > org.apache.zookeeper.common.PathTrie.findMaxPrefix(PathTrie.java:259)
> >
> >         at
> >
> org.apache.zookeeper.server.DataTree.getMaxPrefixWithQuota(DataTree.java:634)
> >
> >         at
> org.apache.zookeeper.server.DataTree.setData(DataTree.java:616)
> >
> >         at
> > org.apache.zookeeper.server.DataTree.processTxn(DataTree.java:807)
> >
> >         at
> >
> org.apache.zookeeper.server.persistence.FileTxnSnapLog.processTransaction(FileTxnSnapLog.java:198)
> >
> >         at
> >
> org.apache.zookeeper.server.persistence.FileTxnSnapLog.restore(FileTxnSnapLog.java:151)
> >
> >         at
> > org.apache.zookeeper.server.ZKDatabase.loadDataBase(ZKDatabase.java:223)
> >
> >         at
> >
> org.apache.zookeeper.server.ZooKeeperServer.loadData(ZooKeeperServer.java:250)
> >
> >         at
> >
> org.apache.zookeeper.server.ZooKeeperServer.startdata(ZooKeeperServer.java:377)
> >
> >         at
> >
> org.apache.zookeeper.server.NIOServerCnxnFactory.startup(NIOServerCnxnFactory.java:122)
> >
> >         at
> >
> org.apache.zookeeper.server.ZooKeeperServerMain.runFromConfig(ZooKeeperServerMain.java:112)
> >
> >         at
> >
> org.apache.zookeeper.server.ZooKeeperServerMain.initializeAndRun(ZooKeeperServerMain.java:86)
> >
> >         at
> >
> org.apache.zookeeper.server.ZooKeeperServerMain.main(ZooKeeperServerMain.java:52)
> >
> >         at
> >
> org.apache.zookeeper.server.quorum.QuorumPeerMain.initializeAndRun(QuorumPeerMain.java:116)
> >
> >         at
> >
> org.apache.zookeeper.server.quorum.QuorumPeerMain.main(QuorumPeerMain.java:78)
> >
> >
> > Brian
> >
> >
> >>
> >>
> >> On Wed, Jun 10, 2015 at 7:59 AM, geo-turcsanyi <
> [email protected]>
> >> wrote:
> >> >
> >> > When you try setting data on an empty path, it will crash and burn
> your
> >> zookeeper server. And by this I mean data corruption, you need to empty
> >> your data directory and then restart it, otherwise nobody will be able
> to
> >> connect to it any more and will get a connection refused.
> >> >
> >> > It would be nice to have an error if the path is empty, rather than
> >> letting the set happen and watching your zookeeper go down in style.
> >> >
> >>
>

Reply via email to