Mark,

Thank you for your "kind" response.

> and it seems that there may be a problem there. More specifically, in the
> > execute method, getAttribute of Globals.SUBJECT_ATTR is obtained on a
> > session
> > and then it is set in a non-atomic fashion.
>
> While that statement is true, you have not explained why this is a
> problem in this particular case.
>
> What more explanation is needed? Two threads having access to the same
session object
can clobber the attribute. Both threads (A and B) do a getAttribute, find
the attribute to be null and create a subject.
One of them (A) sets the attribute with a subject with principal x. In the
interim, a third thread (C) does a getAttribute,
subject is not null and proceeds with using principal x. Now thread B gets
scheduled and sets the subject attribute with principal y.
Now, aren't the semantics inconsistent between B and C? After C had
obtained the subject, the subject is guaranteed to not change.

Having looked at this particular code, I see some potential
> opportunities for simplifying things but no chance of a threading
> problem. If you analysis reaches a different conclusion, please share it.
>

Why don't you see a threading problem? Is it because multiple threads
cannot access this code?
Is it because a lost update is not a problem? Is it because the session is
not shared?
Instead of a blanket "I do not see a threading problem", provide more
details so that
other new contributors understand and can also help in contributing to the
project in the future.

Chris.

Reply via email to