Most of the articles on 2PC that I've read, mention that the first phase is sending a "Prepare" message to all participating systems. My question is - how can you know the full list of participating systems?
For example, if we have a series of operations like:
R(A), R(B), W(C), W(A)
Does each of the operations trigger the "Prepare" phase to concerned systems (i.e. S1 will get two prepare messages), or only the entire transaction?
Another question: what if there is non-deterministic logic in the transaction? Something like "Add 50 to the balance of top 100 performing employees". How do you know participating systems in that case?