You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by bu...@apache.org on 2023/05/26 08:28:40 UTC

[Bug 66513] Primary Key Violation using PersistentManager + PersistentValves +

https://bz.apache.org/bugzilla/show_bug.cgi?id=66513

--- Comment #7 from Remy Maucherat <re...@apache.org> ---
First, I'd like to add that this issue is in the javadoc of PersistentValve: it
requires a persistent manager, *and* "to work correctly it assumes only one
request exists per session at any one time". So no big surprise then.

Actually, someone already talked about this problem (= the session object can
change so sync on that object may fail to do what is expected):
http://illegalargumentexception.blogspot.com/2008/04/java-synchronizing-on-transient-id.html
Unfortunately, it seems the solution proposed is not good since it syncs too
much.
Similarly, String.intern should not be used for sync (explanations are
available online).

Instead, I think we should use the original suggestion from Vincent: the
ParsistentManager (or most likely, the StoreBase) should use a concurrent map
to deduplicate the session ids. But there's still a problem: all the session
ids that are in a store would now be in memory. Maybe that's not a problem
these days but it was certainly something that was avoided before.

So I cannot find a solution yet that fixes this while keeping everything as it
was.

-- 
You are receiving this mail because:
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org