Grzegorz Kossakowski pisze:
> Hello,
> 
> Having (finally) some free time again I decided to give COCOON-2216 another 
> try. Unfortunately, I
> wasn't entirely successful with my latest attempt even if there seems to be 
> progress.
> 
> Actually, you don't need to follow my previous attempts and comments to 
> understand what's going on
> with latest patches trying to fix this annoying bug. Current problem is that 
> it looks like I get
> into some race conditions but I have no idea how to track them.
> 
> Little background: the problem was with the ObjectModel that was shared 
> between child threads
> leading to illegal state. The solution was to clone ObjectModel object so 
> separate instances are
> used across different child threads. I decided to bind ObjectModel to 
> Environment (as it felt rather
> natural to do so) and to implement cloning in AbstractCocoonRunnable. 
> Moreover, there is a custom
> bean factory that returns an ObjectModel instance obtained from the current 
> Environment.
> Additionally, this instance is being wrapped by a proxy so we can be sure 
> that other beans always
> reference correct instance of the ObjectModel.
> 
> You can find my modifications here:
> http://github.com/gkossakowski/apache-cocoon/commits/COCOON-2216-multi-thread-simple
> 
> If you wonder why this is uploaded to Github the answer is rather simple - I 
> believe that it's
> better way to share patches so they are available for online browsing along 
> with commit messages
> before they get committed to trunk. Imran provided us a test-case that nicely 
> exhibits problems with
> both our implementation in Cocoon's trunk (or lack of it) and these race 
> conditions in my
> implementation. The code is available here:
> https://issues.apache.org/jira/secure/attachment/12391183/test-block.zip 
> (referenced from
> https://issues.apache.org/jira/browse/COCOON-2216)
> 
> How to reproduce:
> 1. Download patched Cocoon sources from
> http://github.com/gkossakowski/apache-cocoon/commits/COCOON-2216-multi-thread-simple
>  and compile them.
> 2. Download test-block, run it using mvn jetty:run.
> 3. Point your browser to http://localhost:8888/test-block/index.html
> 4. Check console if information about exceptions are being printed out.
> 
> 
> I would kindly ask multi-thread-programming gurus to have a look at this 
> problem as I feel like
> running out of ideas and energy...
> 

Anyone even have a plan to look at it?

Otherwise I'll have to  definitively resign from fixing this issue which will 
mean that Cocoon 2.2.x
will have any multi-thread processing completely broken. These are *BAD* news.


-- 
Best regards,
Grzegorz Kossakowski

Reply via email to