Provide deep copies of the session objets to prevent synchronization issues
with concurrent requests
----------------------------------------------------------------------------------------------------
Key: TAPESTRY-1075
URL: http://issues.apache.org/jira/browse/TAPESTRY-1075
Project: Tapestry
Issue Type: Improvement
Components: Core
Affects Versions: 4.1, 4.0, 4.0.1, 4.0.2
Reporter: Henri Dupre
this aims to improve Tapestry behavior with concurrent requests from the same
user. They may lead to synchronization issue because all concurrent requests
will share the same instance of the session objects.
An elegant and efficient solution can be implemented by improving the
SessionScopeManager and by providing deep copies of the session objects when a
session object is requested. The session objects then get cached by the
ApplicationStateManager and get stored at the end of the request by the
SessionScopeManager.
This way concurrent requests will execute correctly and the request that ends
up last overrides the other requests. And this will be totally transparent for
any application.
An efficient deep copy mecanism can be found at
http://javatechniques.com/public/java/docs/basics/faster-deep-copy.html.
On my tests, a deep copy of our visit object is hardly measurable, < 1 ms and
the overhead of deep copies is probably lower than any synchronization mecanism.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]