2011/1/23 Edward Capriolo <edlinuxg...@gmail.com> > On Sun, Jan 23, 2011 at 11:23 AM, ruslan usifov <ruslan.usi...@gmail.com> > wrote: > > > > > > > >> On Sun, Jan 23, 2011 at 6:30 AM, ruslan usifov <ruslan.usi...@gmail.com > > > >> wrote: > >> > >> Right. The difference is that the gossip process builds a topology of > >> UP/DOWN hosts so Unavailable is thrown quickly. If you need ALL and > >> one replica is known down -> Unavailable. > >> > > > > Is it possible to detect that write doesn't happen anywhere? Or it is > only > > possible detect consistency failure? > > > > Regardless of what Exception is thrown you should retry the write from > your client. > > If the method threw UnavailableException the write operation did not > happen on any node. As the coordinator judged that it would have not > succeeded. > > If the method threw TimedOutException the write could have succeeded > on some nodes but it was not acknowledged on enough to meet the CL > your requested. > > It would be nice if the exception could be populated more information such > as > TimedOutException: > requested: 3 > succeeded: 1 > succeededList: 127.0.0.1 > requestedList: 127.0.0.1,127.0.0.2,127.0.0.3 > > This would make the explanations more self explanatory, and would give > more transparency to the clients. > > (knowing my luck thrift probably does not allow complex exception types) >
Thanks for very useful explanations, i have a last question about batch_mutate method, does it guarantee that if any mutation in mutations list will throw UnavailableException, all batch will throw UnavailableException, and nothing is writing to cluster?