2011/9/29 Bertrand Delacretaz <bdelacre...@apache.org>:
> On Thu, Sep 29, 2011 at 3:16 PM, Carsten Ziegeler <cziege...@apache.org> 
> wrote:
>> I wouldn't rely on concurrent reads with the same session. In rare
>> cases this can lead to problems!
>
> Do you have more info about that?
> (not disputing, just curious)

Not that much :) But with heavy concurrent reads I ran into a problem
from time to time and I asked the Jackrabbit developers about it. And
they confirmed that this "might happen" and they discourage all
concurrent usage. This was roughly eight months ago


Regards
Carsten

>
> -Bertrand
>
>
>> 2011/9/29 Bertrand Delacretaz <bdelacre...@apache.org>:
>>> Hi,
>>>
>>> On Thu, Sep 29, 2011 at 2:09 PM, Markus Joschko
>>> <markus.josc...@gmail.com> wrote:
>>>> I want to get some assumptions of mine clarified regarding the usage
>>>> of classes like Session and ResourceResolver in event handlers.
>>>>
>>>> 1. The jackrabbit session is not threadsafe
>>>> 2. ResourceResolvers are not threadsafe
>>>> 3. Event services (EventHandler, JobProcessor,
>>>> javax.jcr.observation.Eventlistener) can be called concurrently
>>>
>>> All true AFAIK, ResourceResolvers are probably threadsafe by
>>> themselves but use JCR sessions which are not.
>>>
>>> Actually, reading from sessions from multiple threads is safe, it's
>>> writing concurrently that's not ok.
>>>
>>>>
>>>> -> Sessions and Resolvers should not be stored as instance members but
>>>> opened and closed in the in the process/handleEvent methods.
>>>
>>> If you're reading only you can use a session concurrently.
>>> If you're writing rarely you can synchronize on the session object
>>> when writing for example.
>>>
>>>>
>>>> If this is true, how expensive is the creation of a session? I read in
>>>> a blog, that the creation is considered expensive and wonder if it
>>>> makes more sense
>>>> to create the session new every time (and we have quite a lot of
>>>> events processed by the handlers), or to synchronize access to an
>>>> instance session?
>>>
>>> Jackrabbit session creation is cheap, the idea is that you can create
>>> a session on every HTTP request for example.
>>>
>>> IMO synchronizing might cause more performance and latency issues as
>>> creating new sessions as needed, but it depends on your usage patterns
>>> I guess. I'd start with whatever feels right and measure response
>>> times as needed.
>>>
>>> -Bertrand
>>>
>>
>>
>>
>> --
>> Carsten Ziegeler
>> cziege...@apache.org
>>
>



-- 
Carsten Ziegeler
cziege...@apache.org

Reply via email to