Excellent. Thanks, Felix.

I have tried to create a test case from the one example you sent me. Overall it works, but I cannot figure out how to make the test case completely clean. For example, when I test it on the snapshot everything is fine, but if I test it on an older version that exhibited deadlock, I cannot interrupt the thread when I timeout so the test case cannot clean up the threads. In the end, the test case hangs.

I guess this test case could be good enough, since if we regress tests will hang, so we will know to fix it, but it would be nicer if I could break the deadlock somehow. I will think about it a little more and will eventually commit it to my sandbox bnd testing harness.

-> richard

Felix Meschberger wrote:
Hi Richard,

Thanks for the information. In the Apache Sling project we are making
heavy use of Declarative Services, which happened to show some of the
deadlock situations.

So far, I did not encounter the known deadlock situations anymore.

I will include your last SNAPSHOT in the SNAPSHOT build of the Apache
Sling Launcher I will deploy today. This should -- hopefully -- generate
more information.

Regards and Thanks
Felix

Richard S. Hall schrieb:
Hey guys,

I think we will start to gear up for a 1.6.0 release of framework and
main. I just deployed a 1.5.0 snapshot for your pleasure or feel free to
build from trunk. I hope people will spend some time playing with this
snapshot since it has seen some major refactoring under the covers.
There are two main areas where there was a lot of refactoring:

  1. The structure of the code was simplified to remove a lot of the
     generic module layer and make it more specific to OSGi, since in
     all likelihood we will never implement a different module system
     on top of the module layer. These changes are not complete, but
     since they are implementation details we can finish this
     refactoring in later releases. Hopefully, these changes will not
     impact anyone.
  2. The locking/concurrency approach was refactored quite a bit.
     Mainly, we try to be a little more precise and strict in our
     locking. However, since strictness and precision can lead to
     deadlocks, we have tried to make the locking interruptible in the
     case a potential deadlock is detected. I just committed the final
     changes (I hope) in this area for this snapshot. It is possible
     that these changes will impact users, so testing by people using
     multiple threads is greatly appreciated.

Please report any issues back to the mailing list or with JIRA, thanks.

-> richard

Reply via email to