On Sep 24, 2012, at 12:27 PM, Manik Surtani <ma...@jboss.org> wrote:

> 
> On 24 Sep 2012, at 11:01, Galder Zamarreño <gal...@redhat.com> wrote:
> 
>> 
>> On Sep 21, 2012, at 3:43 PM, Sanne Grinovero <sa...@infinispan.org> wrote:
>> 
>>> On 20 September 2012 17:38, Andrig Miller <anmil...@redhat.com> wrote:
>>>> 
>>>> 
>>>> ----- Original Message -----
>>>>> From: "Galder Zamarreño" <gal...@redhat.com>
>>>>> To: "Andrig Miller" <anmil...@redhat.com>
>>>>> Cc: "Steve Ebersole" <st...@hibernate.org>, "John O'Hara" 
>>>>> <joh...@redhat.com>, "Jeremy Whiting"
>>>>> <jwhit...@redhat.com>, "infinispan -Dev List" 
>>>>> <infinispan-dev@lists.jboss.org>
>>>>> Sent: Thursday, September 20, 2012 6:48:59 AM
>>>>> Subject: Re: [infinispan-dev] Issue with cache blocks for local read-only 
>>>>> cache
>>>>> 
>>>>> 
>>>>> On Sep 19, 2012, at 4:20 PM, Andrig Miller <anmil...@redhat.com>
>>>>> wrote:
>>>>> 
>>>>>> Yes, I can see how that can happen, if the data is deleted from
>>>>>> outside the application.
>>>>> 
>>>>> ^ The issue does not only happen if the data is deleted outside the
>>>>> application. As indicated in
>>>>> https://hibernate.onjira.com/browse/HHH-3817, this can happen with
>>>>> two competing transactions.
>>>>> 
>>>>>> If you cache something as READ_ONLY, and it gets deleted, that
>>>>>> doesn't fit the definition of READ_ONLY though.  You are using the
>>>>>> wrong cache concurrency strategy.
>>>>>> 
>>>>>> Even that issue outlines the scenario where the collection is
>>>>>> updated, which means its not a READ_ONLY.
>>>>> 
>>>>> I think the update is irrelevant here. The issue is related to
>>>>> putFromLoad + remove, which both AFAIK, are allowed in READ_ONLY
>>>>> (remember that we had the discussion on whether remove should be
>>>>> allowed in a READ_ONLY cache:
>>>>> https://hibernate.onjira.com/browse/HHH-7350).
>>>>> 
>>>> 
>>>> Yes, remove can be done, its just update that matters to READ_ONLY.  One 
>>>> thing I thought about was I thought we were using MVCC for this stuff.  
>>>> Any transaction that reads from the cache, while something is being 
>>>> added/removed, should be reading the read consistent image, and should 
>>>> never wait on a lock, correct?  We see all the threads in our thread pool 
>>>> sitting in a blocked state based on this locking.
>> 
>> I'm not 100% sure which locking are you talking about, but if you're 
>> refering to the lock in 
>> https://dl.dropbox.com/u/30971563/specjent_block.png, that's related to the 
>> 2LC integration, not Infinispan itself.
> 
> Yes, we're analysing the 2LC impl as well as Infinispan.
> 
>> If you're talking about threads waiting for a lock somewhere else, please 
>> provide more details.
>> 
>> I have some short-term ideas to improve the 2LC integration code, but I 
>> wanna check with Brian first.
>> 
>> Long term, I think https://issues.jboss.org/browse/ISPN-506 will be 
>> necessary to provide a lock-free solution to these edge cases in such way 
>> that 'newer' removes cannot be overridden by 'old' putFromLoad calls. 
>> However, I'm intrigued by the fact that JBoss Cache OL had the capability of 
>> being given a version externally, but the 2LC code for JBoss Cache OL still 
>> used this PutFromLoadValidator logic. Again, something I need to check with 
>> Brian.
> 
> ISPN-506 will only help in the clustered case.  

^ I disagree. It might help with the edge case highlighted in 
https://hibernate.onjira.com/browse/HHH-3817 which happens in a local cache.

> And SpecJ - and most other use cases - are not clustered.  Maybe we need two 
> 2LC implementations, one for clustered and one for non-clustered use?  There 
> are a lot of unnecessary locks that can be removed in the local case.  Sanne 
> and I were having a chat about this yesterday.
> - M
> 
> --
> Manik Surtani
> ma...@jboss.org
> twitter.com/maniksurtani
> 
> Platform Architect, JBoss Data Grid
> http://red.ht/data-grid
> 
> _______________________________________________
> infinispan-dev mailing list
> infinispan-dev@lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/infinispan-dev


--
Galder Zamarreño
gal...@redhat.com
twitter.com/galderz

Project Lead, Escalante
http://escalante.io

Engineer, Infinispan
http://infinispan.org


_______________________________________________
infinispan-dev mailing list
infinispan-dev@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/infinispan-dev

Reply via email to