[infinispan-dev] rethinking ISPN transactions

Mircea Markus mmarkus at redhat.com
Tue Nov 12 09:17:44 EST 2013


On Nov 12, 2013, at 3:09 PM, Radim Vansa <rvansa at redhat.com> wrote:

> On 11/12/2013 02:46 PM, Mircea Markus wrote:
>> On Nov 12, 2013, at 1:26 PM, Radim Vansa <rvansa at redhat.com> wrote:
>> 
>>> Mircea, besides mentioning of removed stuff, would it be possible to
>>> compile some list of supported transactional modes and *expected
>>> behaviour*? (using short code snippets: in one mode this will fail, in
>>> other one succeed) Ideally, total order could be included there as well.
>> +1. sounds like a good idea to me.
>> 
>>> This list should provide the rationale for each mode.
>> The rationale between using optimistic vs pessimistic transaction is not going
>> to be obvious from the code snippets, but requires text explanations[1].
>> I get your point though.
> 
> It's not just about optimistic vs pessimistic - this is pretty well 
> documented, I think. The problem is how this interacts with async modes 
> (when I have pess. txs and execute put, when is the lock acquired?), 1pc 
> stuff (even if we're going to remove it in 7.0, I'd like to have it 
> documented for 6.0).
> Return values for various operations are another thing - the document 
> should mention that we can get anything as the return value
> and the 
> write skew check verifies that we're overwriting the same value as we've 
> read - actually, does it hold that with pess txs put always returns the 
> actually overwritten value?

in 7.0 we might just use explicit methods in order to return values:
put(K,V): void
putAndGet(K,V):V
Indeed the second one implies a read on V and should fail WSC.

> Can writeSkewCheck be used with pessimistic 
> transactions?

No

> 
>> 
>> [1] http://blog.infinispan.org/2011/10/transaction-remake-in-infinispan-51.html
>> 
>>> Maybe I could then
>>> provide some numbers for each mode to let user see whether the lower
>>> guarantees are worth the performance impact.
>>> 
>>> Also, I'd like to see there presented the problem with transactional
>>> reads - to let users know that if you write two values inside the
>>> transaction and commit it, in another transaction you may read one of
>>> the entries as appeared before the commit and another as appeared after.
>>> I know that this can be evaded by force locking, and I understand why
>>> this happens but when user reads /transactions/, he sees /ACID
>>> properties/. And this (default) unexpected behaviour kind of breaks
>>> isolation - user needs to be aware of that (and I haven't seen this
>>> written down anywhere in the docs).
>> Good point, again more related to documentation.
>> 
>> Cheers,
> 
> 
> -- 
> Radim Vansa <rvansa at redhat.com>
> JBoss DataGrid QA
> 
> _______________________________________________
> infinispan-dev mailing list
> infinispan-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/infinispan-dev

Cheers,
-- 
Mircea Markus
Infinispan lead (www.infinispan.org)







More information about the infinispan-dev mailing list