[
https://issues.jboss.org/browse/ISPN-4018?page=com.atlassian.jira.plugin....
]
Pedro Ruivo commented on ISPN-4018:
-----------------------------------
I don't agree with you. If you are going to check all the keys, then you are entering
in one-copy serializability (1CS) isolation level.
A transaction system is a set of reads and/or writes in a shared state, and we can look in
conditional commands as:
{code}
if (isConditionMet(read(x), expected-value)) { write(x, new-value) }
{code}
For ISPN (and for me), tx1 should not fail in this scenario (assuming initially x = y):
{code}
tx1: read(x) //return y
tx2: write(x, w)
tx1: putIfAbsent(x, z) //no-op since x's value is y
{code}
and it should fail in this:
{code}
tx1: read(x) //read y
tx2: write(x,w)
tx1: putIfAbsent(x,z) //no-op since x's value is y
//read(x) will return read y in tx1
tx1: write(x,u)
{code}
Write skew should not be check if conditional operations does not
change the value
----------------------------------------------------------------------------------
Key: ISPN-4018
URL:
https://issues.jboss.org/browse/ISPN-4018
Project: Infinispan
Issue Type: Bug
Components: Core, Transactions
Affects Versions: 6.0.1.Final
Reporter: Pedro Ruivo
Assignee: Pedro Ruivo
Fix For: 7.0.0.Alpha1, 7.0.0.Final
Currently, if a conditional operation does no perform the update, we still perform the
check. however, the write never happened. It simple makes no sense.
However, if a write succeeds after, the write skew check must be performed for the key.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see:
http://www.atlassian.com/software/jira