There are a number of implementations of the object store which all follow the same algorithm to persist data to the object store.
The entries in the object store are the state of the transaction in order to fulfil requirements of recovery in the case of a crash of the transaction manager or recovery managers.
I can recommend you to take a read through: com.arjuna.ats.arjuna.coordinator.BasicAction
It shows the points when records (e.g. XAResource) are added to the transaction (BasicAction) and when these are saved or the state of the transaction is saved.
Hope that helps,
PS If there is a specific query about a specific state saved at a specific point I will be happy to get that information to you
Thanks Tom. Will read through com.arjuna.ats.arjuna.coordinator.BasicAction.
Basically i wanted to know if there will be any information corresponding to a transaction in the object store before the prepare phase.
I see, the answer to that is no.
To check this yourself, you want to be looking for calls to save_state, the first time it is called is in prepare and subsequent calls are via "updateState()".
Hope that clarifies,
1 of 1 people found this helpful
The reason we don't write anything until after all participants have prepared sucessfully is that we implement what's refered to as presumed abort for JTA transactions (you could google it for more details or read one of the books on 2PC transactions). This way we can save a log write and end up with much better throughput.