Hi,
Are transactions appended to the tLog in the order in which they are conflict-checked? Because otherwise, can’t the following scenario occur?
T1 {
if (x == 1)
x = 3
}
T2 {
x = 2
}
Now, suppose we conflict-check T1 first. Since no update exists for x, it is good to go and will pass conflict checking. Next, we conflict-check T2, and since its read-set is empty, there is nothing to check, so it will pass as well. Now, if we append and apply T2 before T1 then we will end up in a state where x = 3 which is not equivalent to any serial execution.
History: R1(x) W2(x) R1(x) thus we have T1 —> T2 —> T1 (cycle)
Since proxies conflict-check independently and in parallel, isn’t it possible they append to tLog out of order of the conflict-checking?
So
-
Does fbd guarantee that the order of conflict-checking is preserved on the tlog? if yes how? given we have multiple proxies.
-
Does conflict-checking only check the read-set? or it also checks the write-set as well? because if we keep track of what version is overwritten by a transaction, in the scenario above T2 will be aborted.