On Thursday, May 9, 2013 11:45:29 AM UTC+2,
brohitr...@gmail.com wrote:
Suppose i had 3 PUT's as part of my transaction.
At the time of COMMIT no conflict has been detected.
First PUT has been performed, before the second PUT the client machine has crashed. We need to UNDO the first PUT right?
Note that in Omid data can be written in hbase even though it is not yet committed.
In my understanding, here is what happens in your scenario:
1/ client initiates a transaction, by asking the transaction oracle, which returns a start timestamp t1
2/ clients performs 3 put operations. They are written in hbase with timestamp t1.
3/ client initiates commit: asks the transaction oracle. If no conflict is detected, the transaction oracle validates the commit and keeps a commit timestamp t2, which is also returned to the user.
There is nothing to undo: the data is already in hbase, with timestamp t1, and the oracle is the authority that decides whether the transaction is committed or not. Either all written data for t1 is committed, or nothing is committed for t1.
Transactions initiated after t2 will see the data written in t1 if commit was succesful, otherwise they won't "see" that data.
Hope this helps,
Matthieu