
Hi, Kentoku! On Oct 05, kentoku wrote:
Anyway, Spider should be fixed to not error out in 2pc commits, because such a commit means inconsistent data, it's a bad error, it breaks ACID. An engine is expected to check all preconditions during prepare, and if prepare succeeds, it is basically a guarantee that the commit will succeed, it is not allowed to fail anymore.
Does it means "an engine shouldn't return error at 2pc commit phase"? I can't understand it clearly. Currently, Spider return an error at 2pc commit phase if crash a data node between xa prepare phase and xa commit phase. In this case, Spider commits all living data nodes then returns error at 2pc commit phase. Crushed data node is committed manually after recovery. Does it break ACID? Why?
Just one question, before I could answer. What does it mean "data node is committed manually after recovery"? What exactly should the user do?
I think an engine should return error at xa commit phase if some data node fails xa commit. Because an application can't know this problem if it doesn't return an error.
Regards, Sergei