You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@cocoon.apache.org by Grzegorz Kossakowski <gr...@tuffmail.com> on 2008/11/13 11:07:37 UTC

Ask for a help with multi-thread problems (COCOON-2216)

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...

-- 
Best regards,
Grzegorz Kossakowski

Re: Ask for a help with multi-thread problems (COCOON-2216)

Posted by Grzegorz Kossakowski <gr...@tuffmail.com>.
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