Hi, I think either me or StandardSession.java are missing some synchronization knowledge :-)
/** * We are currently processing a session expiration, so bypass * certain IllegalStateException tests. NOTE: This value is not * included in the serialized version of this object. */ protected transient boolean expiring = false; public void expire(boolean notify) { // Mark this session as "being expired" if needed if (expiring) return; synchronized (this) { if (manager == null) return; expiring = true; .... ...do a lot of stuff ... expiring = false; } } Correct me if I'm wrong, but if two threads come in simultaneously into this method, wouldn't they both bypass the first check for expiring==true and the synchronized block would be executed twice? With the java memory model, is there a guarantee that the second thread will see the version of 'expiring' which the first thread set, without 'expiring' being declared volatile? Shouldn't a check whether the session is already expired by a previous call be added after the synchronized(this) statement? regards Leon Alas, on a side note, shouldn't someone fix all the missing generics in the code? I'd volunteer if the patch is welcome ;-) --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]