On 3/23/15 10:17 , David Bosschaert wrote:
On 23 March 2015 at 13:39, Richard S. Hall <he...@ungoverned.org> wrote:
On 3/23/15 03:55 , Guillaume Nodet wrote:
There's a call to interrupt() in Felix#acquireBundleLock(), not sure if it
can be the culprit though.
Interrupts could also be caused by a bundle being shutdown while one of
its
thread is waiting for a service, which should is a valid use case imho.
Anyway, I think sanely reacting to a thread being interrupted would be
good.

Yes, threads can be interrupted if they are holding a bundle lock and the
global lock holder needs the bundle lock.

I admit that I do not recall why we ignore the interrupt here, but didn't we
implement service lookup so that a bundle lock wasn't necessary? I thought
we just checked for the validity of the bundle context before returning or
something. Perhaps we felt there was no reason to be interrupted in that
case. I really don't know.
I think that the Service Registry could be rewritten to be completely
free of synchronized blocks using the Java 5 concurrency libraries,

Well, that just moves the sync blocks to the library, but yeah sure.

which I think would really be a better approach. There is too much
locking going on in the current SR implementation IMHO.

I don't really think there is too much, but it is complicated. Unfortunately, it is complicated to make sure that locks aren't held while do service lookups and this is complicated because you can run into cycles, etc.

But feel free to try to simplify it.


This brings the question: can we move to Java 5 (or Java 6) for the
Framework codebase? AFAIK we're currently still JDK 1.4 compatible but
I would be surprised if there is anyone who still needs a JDK that
went end-of-life 7 years ago.

At this point, it doesn't really matter to me.

-> richard


Best regards,

David

Reply via email to