I think this is https://issues.apache.org/jira/browse/ZOOKEEPER-22
On Wed, Dec 4, 2013 at 8:50 PM, kishore g <[email protected]> wrote: > Thanks Camille, Is it not violating the assumption that a client reads its > own write (probably its ok in this case because client never got the ack > for write from server) > > Consider the following simple code where one wants to know if something was > successfully written. > > boolean success; > try{ > zk.write(p) > success= true; > }catch(Exception e) > { > //cannot assume write did not go through > //read the value and see if you really wrote it > success = zk.exists(p) && zk.readStat(p).owner == me > } > > Looks like if the connection breaks at zk.write(p), success can either be > true or false. Probably the only way to make sure write was successful is > try writing again when there is exception. > > Does this make sense? > > thanks, > Kishore G > > > > > > > > On Wed, Dec 4, 2013 at 6:12 PM, Camille Fournier <[email protected]> wrote: > >> As far as I can tell from the code: >> c1 will send its last seen zxid to the server that it is trying to connect >> to. If that zxid is greater than the zxid of the server, the server will >> refuse the connection. In this case, if the client has not seen an ack, it >> is certainly possible that the last zxid seen will be the same as the zxid >> of the server it is connected to, so it will not see the result of w1 yet. >> >> C >> >> >> On Wed, Dec 4, 2013 at 3:37 PM, kishore g <[email protected]> wrote: >> >> > Hi, >> > >> > Consider the following case >> > >> > >> > 1. Client c1 sends a write(w1) to zk1 >> > 2. w1 gets ack from zk2 but not yet from zk3, but quorum is reached >> > 3. By the time zk1 sends response back to c1, the connection breaks >> > 4. c1 did not get the zxid for the latest transaction >> > >> > Now c1, depending on whether it connects to zk2 or zk3 might see that w1 >> > was successful or failure. Is this analysis correct or will c1 >> > automatically invoke a sync under the hoods when it gets disconnected and >> > connected to another server? >> > >> > If no, how should one handle this scenario. >> > Thanks, >> > Kishore G >> > >>
