Details
-
Bug
-
Resolution: Works as Designed
-
Major - P3
-
None
-
4.4.4
-
None
-
Storage Execution
-
ALL
-
Hide
case 1:
T1 execute stmt: 't1.put(0, 0)'
T1 execute stmt: 't1.put(1, 0)'
T1 start transaction successT1 execute stmt: 't1.put(0, 1)'
T2 start transaction successT2 execute stmt: 't1.put(1, 1)'
T2 execute stmt: 't1.get(0)'
current_result:(0,0)
T1 execute stmt: 't1.get(1)'
current_result:(1,0)
T2 COMMIT transaction successT1 COMMIT transaction successT3 execute stmt: 't1.get(*)'
current_result:(0,1) (1,1)
case 2:
T1 execute stmt: 't1.put(0, 0)'
T1 execute stmt: 't1.put(1, 0)'
T1 start transaction successT1 execute stmt: 't1.put(0, 1)'
T2 start transaction successT2 execute stmt: 't1.put(1, 1)'
T2 execute stmt: 't1.get(0)'
current_result:(0,0) T2 COMMIT transaction success
T1 execute stmt: 't1.get(1)'
current_result:(1,0) T1 COMMIT transaction success
T3 execute stmt: 't1.get(*)'
current_result:(0,1) (1,1)
case 3:
T1 execute stmt: 't1.put(0, 0)'
T1 execute stmt: 't1.put(1, 0)'
T1 execute stmt: 't1.put(2, 0)'
T1 start transaction successT1 execute stmt: 't1.put(0, 1)'
T2 start transaction successT2 execute stmt: 't1.put(1, 1)'
T2 execute stmt: 't1.get(0)'
current_result:(0,0)
T3 start transaction successT3 execute stmt: 't1.put(2, 1)'
T3 execute stmt: 't1.get(1)'
current_result:(1,0)
T1 execute stmt: 't1.get(2)'
current_result:(2,0)
T1 COMMIT transaction successT2 COMMIT transaction successT3 COMMIT transaction successT4 execute stmt: 't1.get(*)'
current_result:(0,1) (1,1) (2,1)
case 4:
T1 execute stmt: 't1.put(0, 0)'
T1 execute stmt: 't1.put(1, 0)'
T1 start transaction successT1 execute stmt: 't1.get(0)'
current_result:(0,0) T2 start transaction success
T2 execute stmt: 't1.get(1)'
current_result:(1,0) T2 execute stmt: 't1.put(0, 1)'
T1 execute stmt: 't1.put(1, 1)'
T1 COMMIT transaction successT2 COMMIT transaction successT3 execute stmt: 't1.get(*)'
current_result:(0,1) (1,1)
case 5:
T1 execute stmt: 't1.put(0, 0)'
T1 execute stmt: 't1.put(1, 0)'
T1 start transaction successT1 execute stmt: 't1.get(0)'
current_result:(0,0) T2 start transaction success
T2 execute stmt: 't1.get(1)'
current_result:(1,0) T2 execute stmt: 't1.put(0, 1)'
T1 COMMIT transaction successT1 execute stmt: 't1.put(1, 1)'
T2 COMMIT transaction successT3 execute stmt: 't1.get(*)'
current_result:(0,1) (1,1)
case 6:
T1 execute stmt: 't1.put(0, 0)'
T1 execute stmt: 't1.put(1, 0)'
T1 execute stmt: 't1.put(2, 0)'
T1 start transaction successT1 execute stmt: 't1.get(2)'
current_result:(2,0) T2 start transaction success
T2 execute stmt: 't1.get(0)'
current_result:(0,0) T3 start transaction success
T3 execute stmt: 't1.get(1)'
current_result:(1,0)T1 execute stmt: 't1.put(0, 1)'
T2 execute stmt: 't1.put(1, 1)'
T3 execute stmt: 't1.put(2, 1)'
T1 COMMIT transaction successT2 COMMIT transaction successT3 COMMIT transaction successT4 execute stmt: 't1.get(*)'
current_result:(0,1) (1,1) (2,1)
Showcase 1: T1 execute stmt: 't1.put(0, 0)' T1 execute stmt: 't1.put(1, 0)' T1 start transaction success T1 execute stmt: 't1.put(0, 1)' T2 start transaction success T2 execute stmt: 't1.put(1, 1)' T2 execute stmt: 't1.get(0)' current_result: ( 0 , 0 ) T1 execute stmt: 't1.get(1)' current_result: ( 1 , 0 ) T2 COMMIT transaction success T1 COMMIT transaction success T3 execute stmt: 't1.get(*)' current_result: ( 0 , 1 ) ( 1 , 1 ) case 2: T1 execute stmt: 't1.put(0, 0)' T1 execute stmt: 't1.put(1, 0)' T1 start transaction success T1 execute stmt: 't1.put(0, 1)' T2 start transaction success T2 execute stmt: 't1.put(1, 1)' T2 execute stmt: 't1.get(0)' current_result: ( 0 , 0 ) T2 COMMIT transaction success T1 execute stmt: 't1.get(1)' current_result: ( 1 , 0 ) T1 COMMIT transaction success T3 execute stmt: 't1.get(*)' current_result: ( 0 , 1 ) ( 1 , 1 ) case 3: T1 execute stmt: 't1.put(0, 0)' T1 execute stmt: 't1.put(1, 0)' T1 execute stmt: 't1.put(2, 0)' T1 start transaction success T1 execute stmt: 't1.put(0, 1)' T2 start transaction success T2 execute stmt: 't1.put(1, 1)' T2 execute stmt: 't1.get(0)' current_result: ( 0 , 0 ) T3 start transaction success T3 execute stmt: 't1.put(2, 1)' T3 execute stmt: 't1.get(1)' current_result: ( 1 , 0 ) T1 execute stmt: 't1.get(2)' current_result: ( 2 , 0 ) T1 COMMIT transaction success T2 COMMIT transaction success T3 COMMIT transaction success T4 execute stmt: 't1.get(*)' current_result: ( 0 , 1 ) ( 1 , 1 ) ( 2 , 1 ) case 4: T1 execute stmt: 't1.put(0, 0)' T1 execute stmt: 't1.put(1, 0)' T1 start transaction success T1 execute stmt: 't1.get(0)' current_result: ( 0 , 0 ) T2 start transaction success T2 execute stmt: 't1.get(1)' current_result: ( 1 , 0 ) T2 execute stmt: 't1.put(0, 1)' T1 execute stmt: 't1.put(1, 1)' T1 COMMIT transaction success T2 COMMIT transaction success T3 execute stmt: 't1.get(*)' current_result: ( 0 , 1 ) ( 1 , 1 ) case 5: T1 execute stmt: 't1.put(0, 0)' T1 execute stmt: 't1.put(1, 0)' T1 start transaction success T1 execute stmt: 't1.get(0)' current_result: ( 0 , 0 ) T2 start transaction success T2 execute stmt: 't1.get(1)' current_result: ( 1 , 0 ) T2 execute stmt: 't1.put(0, 1)' T1 COMMIT transaction success T1 execute stmt: 't1.put(1, 1)' T2 COMMIT transaction success T3 execute stmt: 't1.get(*)' current_result: ( 0 , 1 ) ( 1 , 1 ) case 6: T1 execute stmt: 't1.put(0, 0)' T1 execute stmt: 't1.put(1, 0)' T1 execute stmt: 't1.put(2, 0)' T1 start transaction success T1 execute stmt: 't1.get(2)' current_result: ( 2 , 0 ) T2 start transaction success T2 execute stmt: 't1.get(0)' current_result: ( 0 , 0 ) T3 start transaction success T3 execute stmt: 't1.get(1)' current_result: ( 1 , 0 )T1 execute stmt: 't1.put(0, 1)' T2 execute stmt: 't1.put(1, 1)' T3 execute stmt: 't1.put(2, 1)' T1 COMMIT transaction success T2 COMMIT transaction success T3 COMMIT transaction success T4 execute stmt: 't1.get(*)' current_result: ( 0 , 1 ) ( 1 , 1 ) ( 2 , 1 ) -
Execution NAMR Team 2023-07-24, Execution NAMR Team 2023-08-07
Description
I execute some histories for multiple transactions in different sessions. There are some read-write dependencies between these transactions and I expect that at least one transaction should be aborted.
However, all transactions commit successfully unexpectedly which means there are data anomailies in these histories.