[
https://issues.apache.org/jira/browse/TAPESTRY-2141?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12567047#action_12567047
]
Davor Hrg commented on TAPESTRY-2141:
-------------------------------------
the bug mentioned for happens if ThreadLocal.initialValue() happens inside
another ThreadLocal.initialValue()
this is exactly the case if any threaded service is initialized and when
threadCleanupHub is not initialized yet.
It is because PerThreadServiceCreator uses ThreadLocal and inside initValue()
generates a new instance of a service by calling
ObjectCreator.createObject() .. which actualy calls a build method.
Build method for HibernateSesionManager adds a listener to ThreadCleanupHub
ThreadCleanupHub then gets initialized and calls own initialValue() and things
get messed up.
I'm not yet grasping the problem to it's full depth, but possible workarrounds
are comming in mind..
maybe this was noticed and solved in T4 ...
> ThreadLocal bug that needs a workarround
> ----------------------------------------
>
> Key: TAPESTRY-2141
> URL: https://issues.apache.org/jira/browse/TAPESTRY-2141
> Project: Tapestry
> Issue Type: Bug
> Components: tapestry-ioc
> Affects Versions: 5.0.10
> Environment: jre 1.5
> Reporter: Davor Hrg
>
> There is a ThreadLocal bug that might be a source of problems for following
> code:
> here is a non trivial example that is broken,
> I'll try to make a trivial one that fails :)
> a simple page with test link
> <t:eventlink event="test">test</t:eventlink>
> page:
> @Inject private HibernateSessionManager _sessionManager;
> @Inject private ThreadCleanupHub _cleanupHub;
> public void onTest(){
> new Thread(new Runnable(){
> public void run() {
> User user = (User)
> _sessionManager.getSession().load(User.class, Long.valueOf(1L));
> user.setName(user.getName()+"1");
> _cleanupHub.cleanup();
> }
> }).start();
> }
> for java 1.5 this code fails to save data (threadCleanupHub looses listener
> list )
> and it works fo 1.6
> here's a link to articles about this bug
> http://crazybob.org/2006/07/hard-core-java-threadlocal.html
> and the bug
> http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5025230
> it also makes this snippet not working
> http://wiki.apache.org/tapestry/Tapestry5HowToRunTaskInThread
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]