I read in the Orleans FAQ when a split brain could happen, but I donβt understand what could happen badly and how to handle it properly.
Frequently asked questions say something vague:
You just need to consider the rare possibility of having two instances of an actor while writing your application.
But how should I consider this and what can happen if I do not?
Orleans Paper ( http://research.microsoft.com/pubs/210931/Orleans-MSR-TR-2014-41.pdf ) says the following:
applicationcan rely on external persistent storage to provide greater data consistency.
But I do not understand what this means.
Suppose a brain failure occurs. Now I have two copies of one grain. When I send several messages, they can be received by these two (or maybe even more?) Different copies. Assume that each instance had the same state before receiving these messages. Now, after processing these messages, they have different states.
How should they persist in their states? There may be a conflict.
When other instances are destroyed and only one remains, what will happen to the states of the destroyed instances? Will it look like the messages they processed were never processed? Then the client state and server state can be desynchronized by IIUC.
I see this (split brain) as a big problem, and I don't understand why there is so little attention to it.
orleans
bobby
source share