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