On 12/20/12 14:43 , Jad Naous wrote:
I am using Gemini JPA along with EclipseLink on Apache Felix, and I can
reproduce a deadlock at will. Here's what happens:

- Gemini JPA gets installed.
- My bundle which includes persistence entities is installing.
- Gemini JPA gets notification about my bundle's status change
- Gemini JPA scans the bundle, decides it's a persistence bundle, then
calls refresh on the bundle.
- The refresh is locked waiting for the install to complete
- The install is waiting for the refresh to complete.

Anybody seen something like that happen before? What's the right way to do
this? It seems like a lock ordering problem (looking at what's being
locked, it seems one thread is waiting for the bundle lock while the other
is waiting for the global lock).

Is Gemini JPA holding onto the installing thread until the refresh is done? If so, that sounds like the issue to me. Assuming Gemini JPA is using a synchronous bundle listener to get the bundle state change event, it shouldn't turn around and block that thread.

But that's just a guess. You could provide the framework version and thread stack dumps to make our guesses more accurate. :-)

-> richard


Thanks,

Jad.


Reply via email to