A note on DC thread-safety. With a few bug fixes that came out in
2.0.3, DC is fully tread-safe in a read-only situation. In a read/
write situation DC is still technically thread-safe, but in practice
at least two types of race conditions can happen:
* Two or more threads updating the same DataObject (i.e. DataObjects
are not thread-safe)
* Two or more threads issuing "commit" or "rollback"
BTW, I like "one DC per session, one child DC per request" approach
to solving the problem, but I am yet to try this in a heavily loaded
read/write app.
Thanks
Andrus
P.S. Should we keep CAY-791 around as a bug, i.e. is there a
framework-level solution to that, other than better documentation?
Thoughts?
On May 23, 2007, at 11:23 AM, Tore Halset wrote:
Hello.
The DataContext are not thread-safe so you may experience random
problems if your app has a single DC used by two different threads.
There are different ways to "solve" this issue.
A) Make sure each session only have one request at any time. See
http://tinyurl.com/2r4kcy
B) Use a single DC for each thread. session bound data objects
must then be transferred using localObject() between contexts. Or
just store the objects ObjectId in the session.
C) Use child DC or peer DC. I have not tried this approach.
I am sure someone else can come up with other variants.
Regards,
- Tore.
On May 23, 2007, at 03:30, Steve Wells wrote:
I guess the result could be hard to predict and test? Are you
suggesting
that I should wrap the block of dc == null {...} in a synchronized()?
Clearly my knowledge of this area is limited and I do appreciate your
guidance and questions.
Steve
On 23/05/07, Tore Halset <[EMAIL PROTECTED]> wrote:
On May 22, 2007, at 05:22, Steve Wells wrote:
> My approach would be to have a simple per session DC and a global
> web app
> one...at this stage, hardly seems dangerous, what could
possibly go
> wrong?
> ;)
What if a user (session) issues two simultanous requests?
- Tore.