You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@felix.apache.org by "Pierre De Rop (JIRA)" <ji...@apache.org> on 2012/10/01 17:49:07 UTC

[jira] [Commented] (FELIX-3680) Exceptions in SCR using concurrent service activation/deactivation

    [ https://issues.apache.org/jira/browse/FELIX-3680?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13466885#comment-13466885 ] 

Pierre De Rop commented on FELIX-3680:
--------------------------------------

I confirm that the "could not obtain writelock" exception has disappeared, after having applied the patch you proposed in FELIX-3687.

However, I still have the two remaining problems:

1) A is sometimes never satisfied with log:
Level=2 D=17:05:40,113 T=Thread-1: A[unsatisfied] B[registered] C[registered] D[registered] E[registered] F[unsatisfied] G[registered] H[registered] I[registered] J[registered] K[registered] 

2) sometimes, main.bindA method gets a null when trying to dereference A from the bundle context.

Regarding the second point, correct me if I am wrong, but I believe that the "enabledLatch" latch I am using should always ensure that we never get null from getService:

  @Reference(type = '*', service = A.class, unbind = "unbindA")
  void bindA(ServiceReference sr) {
    sr.getBundle().getBundleContext().getService(sr);
    if (_counter.incrementAndGet() != 1) {
      throw new IllegalStateException("bindA: invalid counter value: " + _counter);
    }
    _enabledLatch.countDown();
  }

Here, the enableLatch is decremented in order to unblock the Main.run() method, which at this point should not have deactivated  B,C,D,E,F,G,H,I,J,K.
The enableLatch is initialized to 11 (10 for the activation of B,C,D,E,F,G,H,I,J,K, plus one additional latch (10+1=11) decremented by the Main.bindA() method call.

So, to summarize, the Main.run method  does the following, in an infinite loop:

- create enabledLatch = 11
- create disableLatch = 11
- concurrently enable B,C,D,E,F,G,H,I,J,K (each decrement the enableLatch ten times,concurrently)
- when A is available, Main.bindA is called and A service is dereferenced using sr.getBundle().getBundleContext().getService(sr);
- At this point: A should be available because the Main.run() method should be blocked on the _enableLatch
- Then once Main.bindA method has dereferenced the A service, it then decrements the "enableLatch".
- Then at this point, the Main.run() is unblocked from the enableLatch, and B,C,D,E,F,G,H,I,J,K are disabled concurrently, and the disableLatch is decremented 10 times
- Then Main.unbindA method should be called and the disableLatch is then decremented (to 0)
- Then Main.run is unblocked from the disableLatch and the same steps are repeated in an infinite loop.

Now, I have applied the patches from FELIX-3557 and FELIX-3692, and now I have modified the Main.run method in  order to
invoke _scr.waitForTasksCompleted() before disabling  B,C,D,E,F,G,H,I,J,K:

      manager.enableComponents(exec);
      if (!_enabledLatch.await(10000, TimeUnit.MILLISECONDS)) {
         ...
      }
      _scr.waitForTasksCompleted();
      manager.disableComponents(exec);
      try {
        if (!_disabledLatch.await(10000, TimeUnit.MILLISECONDS)) {
        ...

But I am getting:

g! Exception in thread "Thread-1" java.lang.IllegalMonitorStateException
        at java.lang.Object.wait(Native Method)
        at java.lang.Object.wait(Object.java:485)
        at org.apache.felix.scr.impl.ComponentActorThread.waitForTasksCompleted(ComponentActorThread.java:148)
        at org.apache.felix.scr.impl.ComponentRegistry.waitForTasksCompleted(ComponentRegistry.java:707)
        at test.scr.Main.run(Main.java:148)
        at java.lang.Thread.run(Thread.java:662)

So, in ComponentActorThread, I changed the method:

    void waitForTasksCompleted()
    {
        synchronized ( tasks )
        {
            while ( !tasks.isEmpty() )
            {
                try
                {
                    wait();
                }
                catch ( InterruptedException e )
                {

                }
            }

        }
    }

to:

    void waitForTasksCompleted()
    {
        synchronized ( tasks )
        {
            while ( !tasks.isEmpty() )
            {
                try
                {
                    tasks.wait();
                }
                catch ( InterruptedException e )
                {

                }
            }

        }
    }

(I wait on the tasks instead of this)

So, no more exception but I still have sometimes null returned by getService (from Main.bindA method).

But I also noticed another exception, telling that the Main.unbindA method seems to be invoked twice (but should not):

ERROR: test.scr (8): [test.scr.Main] The unbindA method has thrown an exception
java.lang.IllegalStateException: unbindA: invalid counter value: -1
        at test.scr.Main.unbindA(Main.java:110)


(I only got this exception with the patches from  FELIX-3557 and FELIX-3692 + my fix in waitForTasksCompleted method).



                
> Exceptions in SCR using concurrent service activation/deactivation
> ------------------------------------------------------------------
>
>                 Key: FELIX-3680
>                 URL: https://issues.apache.org/jira/browse/FELIX-3680
>             Project: Felix
>          Issue Type: Bug
>          Components: Declarative Services (SCR)
>         Environment: linux fc16, jdk1.6.032
>            Reporter: Pierre De Rop
>         Attachments: test.scr.tgz, test_with_fwk.tgz
>
>
> This issue contains a sample code which reproduces many various exceptions, using a concurrent
> scenario, where some services are enabled/disabled concurrently.
> I did not have time to commit an integration test about these exceptions but I will try to do.
> In the meantime, I join to this issue my scenario ... 
> Before trying to make an integration test, could you please run the scenario, in order to confirm the problems, and that the scenario is valid ?
> To execute the scenario
> 1) first, since the framework is not currently using any available log service, you have to make a modification in the framework, in order to force the framework to use a log service, when displaying caught exceptions. If you don't do this, then you will get many exceptions thrown by many threads and displayed in the console; and this is then not easy to diagnose problems.
> So, in the framework, in the file src/main/java/org/apache/felix/framework/Logger.java, in method setBundleContext, just uncomment the following code, which activate the fwk log service listener:
>     protected void setSystemBundleContext(BundleContext context)
>     {
>         // TODO: Find a way to log to a log service inside the framework.
>         // The issue is that we log messages while holding framework
>         // internal locks -- hence, when a log service calls back into 
>         // the framework (e.g., by loading a class) we might deadlock. 
>         // One instance of this problem is tracked in FELIX-536.
>         // For now we just disable logging to log services inside the
>         // framework. 
>         m_context = context;
>         startListeningForLogService();
>     }
> -> this will make sure all logs caught by the framework are redirected to the log service, and I did not find any deadlock issue, as described in the comments.
> Notice that even if you don't activate the log service listener, then the Exceptions are also taking place ...
> 2) next, compile the attached concurrent scenario (it's a simple maven project).
> 3) run the framework with the following bundles:
> org.apache.felix.scr from trunk
> org.apache.felix.configadmin-1.4.0.jar
> 4) wait for about 20 seconds, then suspend the framework, and kill it (using kill -9)
> Don't do "Ctrl-C", because this might interrupt some locked threads and some exceptions might be generated because of the Ctlr-C ... So doing a "Kill -9" is better.
> 5) Then take a look at the produced "./logs.txt" file.
> scenario description:
> ===============
> here is a description of the Components used in the scenario:
> A: delayed component, enabled, depending on B,C,D,E,F
> B,C,D,E: delayed components, disabled, without any dependencies
> F: delayed component, disabled, depending on G
> G: delayed component, disabled, depending on H
> I: delayed component, disabled, depending on J
> J: delayed component, disabled, depending on K
> Main: depends on A. 
> "Main" is the main scenario component: it uses a thread pool in order to enable B,C,D,E,F,G,H,I,J,K in parallel, randomly. 
> "Main" depends on A.
> When B,C,D,E,F,G,H,I,J,K are enabled, then A becomes satisfied, provided and injected in the "Main" component.
> Once "A" is bound to "Main", then B,C,D,E,F,G,H,I,J,K are then disabled in parallel, randomly. "Main" also checks that "A" is properly unbound.
> LogService logs are written to "./logs.txt".
> So, running the test using scr 1.6.0 runs seamlessly. But with trunk we have many various exceptions.
> For example, I have noticed the three following exceptions:
> 1) we have some IllegalMontorStateException:
> =================================
> log level: 1 D=Mon Sep 24 11:07:45 CEST 2012, T=Thread-1: [F] Locking activity before IllegalMonitorStateException: 
>   obtainWriteLock failure from: ImmediateComponentManager.ungetService.1 readLocks: 0 writeLocks: 0 thread: Thread[SCR Component Actor,5,main] time: 1348477665425 Could not obtain write lock.
> log level: 1 D=Mon Sep 24 11:07:45 CEST 2012, T=Thread-1: [F] Thread dump
> ThreadId: 59 : name: pool-1-thread-30 State: WAITING
>   LockInfo: java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@15d17d7 LockOwnerId: -1 LockOwnerName: null
>   sun.misc.Unsafe.park(Native Method)
>   java.util.concurrent.locks.LockSupport.park(LockSupport.java:156)
>   java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1987)
>   java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:399)
>   java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:947)
>   java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
>   java.lang.Thread.run(Thread.java:662)
> ThreadId: 58 : name: pool-1-thread-29 State: WAITING
>   LockInfo: java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@15d17d7 LockOwnerId: -1 LockOwnerName: null
>   sun.misc.Unsafe.park(Native Method)
>   java.util.concurrent.locks.LockSupport.park(LockSupport.java:156)
>   java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1987)
>   java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:399)
>   java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:947)
>   java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
>   java.lang.Thread.run(Thread.java:662)
> ThreadId: 57 : name: pool-1-thread-28 State: WAITING
>   LockInfo: java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@15d17d7 LockOwnerId: -1 LockOwnerName: null
>   sun.misc.Unsafe.park(Native Method)
>   java.util.concurrent.locks.LockSupport.park(LockSupport.java:156)
>   java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1987)
>   java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:399)
>   java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:947)
>   java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
>   java.lang.Thread.run(Thread.java:662)
> ThreadId: 56 : name: pool-1-thread-27 State: WAITING
>   LockInfo: java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@15d17d7 LockOwnerId: -1 LockOwnerName: null
>   sun.misc.Unsafe.park(Native Method)
>   java.util.concurrent.locks.LockSupport.park(LockSupport.java:156)
>   java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1987)
>   java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:399)
>   java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:947)
>   java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
>   java.lang.Thread.run(Thread.java:662)
> ThreadId: 55 : name: pool-1-thread-26 State: BLOCKED
>   LockInfo: org.apache.felix.framework.ServiceRegistry@ae533a LockOwnerId: 15 LockOwnerName: SCR Component Actor
>   org.apache.felix.framework.ServiceRegistry.getServiceReferences(ServiceRegistry.java:204)
>   org.apache.felix.framework.Felix.getServiceReferences(Felix.java:3372)
>   org.apache.felix.framework.Felix.getAllowedServiceReferences(Felix.java:3445)
>   org.apache.felix.framework.BundleContextImpl.getServiceReferences(BundleContextImpl.java:432)
>   org.apache.felix.scr.impl.manager.DependencyManager.getFrameworkServiceReferences(DependencyManager.java:658)
>   org.apache.felix.scr.impl.manager.DependencyManager.getFrameworkServiceReferences(DependencyManager.java:634)
>   org.apache.felix.scr.impl.manager.DependencyManager.enable(DependencyManager.java:551)
>   org.apache.felix.scr.impl.manager.AbstractComponentManager.enableDependencyManagers(AbstractComponentManager.java:1056)
>   org.apache.felix.scr.impl.manager.AbstractComponentManager.access$700(AbstractComponentManager.java:63)
>   org.apache.felix.scr.impl.manager.AbstractComponentManager$Disabled.enable(AbstractComponentManager.java:1440)
>   org.apache.felix.scr.impl.manager.AbstractComponentManager.enableInternal(AbstractComponentManager.java:625)
>   org.apache.felix.scr.impl.manager.AbstractComponentManager.enable(AbstractComponentManager.java:358)
>   org.apache.felix.scr.impl.config.ImmediateComponentHolder.enableComponents(ImmediateComponentHolder.java:384)
>   org.apache.felix.scr.impl.BundleComponentActivator.enableComponent(BundleComponentActivator.java:395)
>   org.apache.felix.scr.impl.manager.ComponentContextImpl.enableComponent(ComponentContextImpl.java:101)
>   test.scr.Main$EnableManager$1.run(Main.java:66)
>   java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>   java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>   java.lang.Thread.run(Thread.java:662)
> ThreadId: 54 : name: pool-1-thread-25 State: BLOCKED
>   LockInfo: org.apache.felix.framework.ServiceRegistry@ae533a LockOwnerId: 15 LockOwnerName: SCR Component Actor
>   org.apache.felix.framework.ServiceRegistry.getServiceReferences(ServiceRegistry.java:204)
>   org.apache.felix.framework.Felix.getServiceReferences(Felix.java:3372)
>   org.apache.felix.framework.Felix.getAllowedServiceReferences(Felix.java:3445)
>   org.apache.felix.framework.BundleContextImpl.getServiceReferences(BundleContextImpl.java:432)
>   org.apache.felix.scr.impl.manager.DependencyManager.getFrameworkServiceReferences(DependencyManager.java:658)
>   org.apache.felix.scr.impl.manager.DependencyManager.getFrameworkServiceReferences(DependencyManager.java:634)
>   org.apache.felix.scr.impl.manager.DependencyManager.enable(DependencyManager.java:551)
>   org.apache.felix.scr.impl.manager.AbstractComponentManager.enableDependencyManagers(AbstractComponentManager.java:1056)
>   org.apache.felix.scr.impl.manager.AbstractComponentManager.access$700(AbstractComponentManager.java:63)
>   org.apache.felix.scr.impl.manager.AbstractComponentManager$Disabled.enable(AbstractComponentManager.java:1440)
>   org.apache.felix.scr.impl.manager.AbstractComponentManager.enableInternal(AbstractComponentManager.java:625)
>   org.apache.felix.scr.impl.manager.AbstractComponentManager.enable(AbstractComponentManager.java:358)
>   org.apache.felix.scr.impl.config.ImmediateComponentHolder.enableComponents(ImmediateComponentHolder.java:384)
>   org.apache.felix.scr.impl.BundleComponentActivator.enableComponent(BundleComponentActivator.java:395)
>   org.apache.felix.scr.impl.manager.ComponentContextImpl.enableComponent(ComponentContextImpl.java:101)
>   test.scr.Main$EnableManager$1.run(Main.java:66)
>   java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>   java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>   java.lang.Thread.run(Thread.java:662)
> ThreadId: 53 : name: pool-1-thread-24 State: BLOCKED
>   LockInfo: org.apache.felix.framework.ServiceRegistry@ae533a LockOwnerId: 15 LockOwnerName: SCR Component Actor
>   org.apache.felix.framework.ServiceRegistry.getServiceReferences(ServiceRegistry.java:204)
>   org.apache.felix.framework.Felix.getServiceReferences(Felix.java:3372)
>   org.apache.felix.framework.Felix.getAllowedServiceReferences(Felix.java:3445)
>   org.apache.felix.framework.BundleContextImpl.getServiceReferences(BundleContextImpl.java:432)
>   org.apache.felix.scr.impl.manager.DependencyManager.getFrameworkServiceReferences(DependencyManager.java:658)
>   org.apache.felix.scr.impl.manager.DependencyManager.getFrameworkServiceReferences(DependencyManager.java:634)
>   org.apache.felix.scr.impl.manager.DependencyManager.enable(DependencyManager.java:551)
>   org.apache.felix.scr.impl.manager.AbstractComponentManager.enableDependencyManagers(AbstractComponentManager.java:1056)
>   org.apache.felix.scr.impl.manager.AbstractComponentManager.access$700(AbstractComponentManager.java:63)
>   org.apache.felix.scr.impl.manager.AbstractComponentManager$Disabled.enable(AbstractComponentManager.java:1440)
>   org.apache.felix.scr.impl.manager.AbstractComponentManager.enableInternal(AbstractComponentManager.java:625)
>   org.apache.felix.scr.impl.manager.AbstractComponentManager.enable(AbstractComponentManager.java:358)
>   org.apache.felix.scr.impl.config.ImmediateComponentHolder.enableComponents(ImmediateComponentHolder.java:384)
>   org.apache.felix.scr.impl.BundleComponentActivator.enableComponent(BundleComponentActivator.java:395)
>   org.apache.felix.scr.impl.manager.ComponentContextImpl.enableComponent(ComponentContextImpl.java:101)
>   test.scr.Main$EnableManager$1.run(Main.java:66)
>   java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>   java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>   java.lang.Thread.run(Thread.java:662)
> ThreadId: 52 : name: pool-1-thread-23 State: BLOCKED
>   LockInfo: org.apache.felix.framework.ServiceRegistry@ae533a LockOwnerId: 15 LockOwnerName: SCR Component Actor
>   org.apache.felix.framework.ServiceRegistry.getServiceReferences(ServiceRegistry.java:204)
>   org.apache.felix.framework.Felix.getServiceReferences(Felix.java:3372)
>   org.apache.felix.framework.Felix.getAllowedServiceReferences(Felix.java:3445)
>   org.apache.felix.framework.BundleContextImpl.getServiceReferences(BundleContextImpl.java:432)
>   org.apache.felix.scr.impl.manager.DependencyManager.getFrameworkServiceReferences(DependencyManager.java:658)
>   org.apache.felix.scr.impl.manager.DependencyManager.getFrameworkServiceReferences(DependencyManager.java:634)
>   org.apache.felix.scr.impl.manager.DependencyManager.enable(DependencyManager.java:551)
>   org.apache.felix.scr.impl.manager.AbstractComponentManager.enableDependencyManagers(AbstractComponentManager.java:1056)
>   org.apache.felix.scr.impl.manager.AbstractComponentManager.access$700(AbstractComponentManager.java:63)
>   org.apache.felix.scr.impl.manager.AbstractComponentManager$Disabled.enable(AbstractComponentManager.java:1440)
>   org.apache.felix.scr.impl.manager.AbstractComponentManager.enableInternal(AbstractComponentManager.java:625)
>   org.apache.felix.scr.impl.manager.AbstractComponentManager.enable(AbstractComponentManager.java:358)
>   org.apache.felix.scr.impl.config.ImmediateComponentHolder.enableComponents(ImmediateComponentHolder.java:384)
>   org.apache.felix.scr.impl.BundleComponentActivator.enableComponent(BundleComponentActivator.java:395)
>   org.apache.felix.scr.impl.manager.ComponentContextImpl.enableComponent(ComponentContextImpl.java:101)
>   test.scr.Main$EnableManager$1.run(Main.java:66)
>   java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>   java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>   java.lang.Thread.run(Thread.java:662)
> ThreadId: 51 : name: pool-1-thread-22 State: BLOCKED
>   LockInfo: org.apache.felix.framework.ServiceRegistry@ae533a LockOwnerId: 15 LockOwnerName: SCR Component Actor
>   org.apache.felix.framework.ServiceRegistry.getServiceReferences(ServiceRegistry.java:204)
>   org.apache.felix.framework.Felix.getServiceReferences(Felix.java:3372)
>   org.apache.felix.framework.Felix.getAllowedServiceReferences(Felix.java:3445)
>   org.apache.felix.framework.BundleContextImpl.getServiceReferences(BundleContextImpl.java:432)
>   org.apache.felix.scr.impl.manager.DependencyManager.getFrameworkServiceReferences(DependencyManager.java:658)
>   org.apache.felix.scr.impl.manager.DependencyManager.getFrameworkServiceReferences(DependencyManager.java:634)
>   org.apache.felix.scr.impl.manager.DependencyManager.enable(DependencyManager.java:551)
>   org.apache.felix.scr.impl.manager.AbstractComponentManager.enableDependencyManagers(AbstractComponentManager.java:1056)
>   org.apache.felix.scr.impl.manager.AbstractComponentManager.access$700(AbstractComponentManager.java:63)
>   org.apache.felix.scr.impl.manager.AbstractComponentManager$Disabled.enable(AbstractComponentManager.java:1440)
>   org.apache.felix.scr.impl.manager.AbstractComponentManager.enableInternal(AbstractComponentManager.java:625)
>   org.apache.felix.scr.impl.manager.AbstractComponentManager.enable(AbstractComponentManager.java:358)
>   org.apache.felix.scr.impl.config.ImmediateComponentHolder.enableComponents(ImmediateComponentHolder.java:384)
>   org.apache.felix.scr.impl.BundleComponentActivator.enableComponent(BundleComponentActivator.java:395)
>   org.apache.felix.scr.impl.manager.ComponentContextImpl.enableComponent(ComponentContextImpl.java:101)
>   test.scr.Main$EnableManager$1.run(Main.java:66)
>   java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>   java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>   java.lang.Thread.run(Thread.java:662)
> ThreadId: 50 : name: pool-1-thread-21 State: WAITING
>   LockInfo: java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@15d17d7 LockOwnerId: -1 LockOwnerName: null
>   sun.misc.Unsafe.park(Native Method)
>   java.util.concurrent.locks.LockSupport.park(LockSupport.java:156)
>   java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1987)
>   java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:399)
>   java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:947)
>   java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
>   java.lang.Thread.run(Thread.java:662)
> ThreadId: 49 : name: pool-1-thread-20 State: WAITING
>   LockInfo: java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@15d17d7 LockOwnerId: -1 LockOwnerName: null
>   sun.misc.Unsafe.park(Native Method)
>   java.util.concurrent.locks.LockSupport.park(LockSupport.java:156)
>   java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1987)
>   java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:399)
>   java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:947)
>   java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
>   java.lang.Thread.run(Thread.java:662)
> ThreadId: 48 : name: pool-1-thread-19 State: WAITING
>   LockInfo: java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@15d17d7 LockOwnerId: -1 LockOwnerName: null
>   sun.misc.Unsafe.park(Native Method)
>   java.util.concurrent.locks.LockSupport.park(LockSupport.java:156)
>   java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1987)
>   java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:399)
>   java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:947)
>   java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
>   java.lang.Thread.run(Thread.java:662)
> ThreadId: 47 : name: pool-1-thread-18 State: WAITING
>   LockInfo: java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@15d17d7 LockOwnerId: -1 LockOwnerName: null
>   sun.misc.Unsafe.park(Native Method)
>   java.util.concurrent.locks.LockSupport.park(LockSupport.java:156)
>   java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1987)
>   java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:399)
>   java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:947)
>   java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
>   java.lang.Thread.run(Thread.java:662)
> ThreadId: 46 : name: pool-1-thread-17 State: WAITING
>   LockInfo: java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@15d17d7 LockOwnerId: -1 LockOwnerName: null
>   sun.misc.Unsafe.park(Native Method)
>   java.util.concurrent.locks.LockSupport.park(LockSupport.java:156)
>   java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1987)
>   java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:399)
>   java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:947)
>   java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
>   java.lang.Thread.run(Thread.java:662)
> ThreadId: 45 : name: pool-1-thread-16 State: WAITING
>   LockInfo: java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@15d17d7 LockOwnerId: -1 LockOwnerName: null
>   sun.misc.Unsafe.park(Native Method)
>   java.util.concurrent.locks.LockSupport.park(LockSupport.java:156)
>   java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1987)
>   java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:399)
>   java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:947)
>   java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
>   java.lang.Thread.run(Thread.java:662)
> ThreadId: 44 : name: pool-1-thread-15 State: WAITING
>   LockInfo: java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@15d17d7 LockOwnerId: -1 LockOwnerName: null
>   sun.misc.Unsafe.park(Native Method)
>   java.util.concurrent.locks.LockSupport.park(LockSupport.java:156)
>   java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1987)
>   java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:399)
>   java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:947)
>   java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
>   java.lang.Thread.run(Thread.java:662)
> ThreadId: 43 : name: pool-1-thread-14 State: WAITING
>   LockInfo: java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@15d17d7 LockOwnerId: -1 LockOwnerName: null
>   sun.misc.Unsafe.park(Native Method)
>   java.util.concurrent.locks.LockSupport.park(LockSupport.java:156)
>   java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1987)
>   java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:399)
>   java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:947)
>   java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
>   java.lang.Thread.run(Thread.java:662)
> ThreadId: 42 : name: pool-1-thread-13 State: WAITING
>   LockInfo: java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@15d17d7 LockOwnerId: -1 LockOwnerName: null
>   sun.misc.Unsafe.park(Native Method)
>   java.util.concurrent.locks.LockSupport.park(LockSupport.java:156)
>   java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1987)
>   java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:399)
>   java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:947)
>   java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
>   java.lang.Thread.run(Thread.java:662)
> ThreadId: 41 : name: pool-1-thread-12 State: WAITING
>   LockInfo: java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@15d17d7 LockOwnerId: -1 LockOwnerName: null
>   sun.misc.Unsafe.park(Native Method)
>   java.util.concurrent.locks.LockSupport.park(LockSupport.java:156)
>   java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1987)
>   java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:399)
>   java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:947)
>   java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
>   java.lang.Thread.run(Thread.java:662)
> ThreadId: 40 : name: pool-1-thread-11 State: WAITING
>   LockInfo: java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@15d17d7 LockOwnerId: -1 LockOwnerName: null
>   sun.misc.Unsafe.park(Native Method)
>   java.util.concurrent.locks.LockSupport.park(LockSupport.java:156)
>   java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1987)
>   java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:399)
>   java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:947)
>   java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
>   java.lang.Thread.run(Thread.java:662)
> ThreadId: 28 : name: pool-1-thread-10 State: WAITING
>   LockInfo: java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@15d17d7 LockOwnerId: -1 LockOwnerName: null
>   sun.misc.Unsafe.park(Native Method)
>   java.util.concurrent.locks.LockSupport.park(LockSupport.java:156)
>   java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1987)
>   java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:399)
>   java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:947)
>   java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
>   java.lang.Thread.run(Thread.java:662)
> ThreadId: 27 : name: pool-1-thread-9 State: WAITING
>   LockInfo: java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@15d17d7 LockOwnerId: -1 LockOwnerName: null
>   sun.misc.Unsafe.park(Native Method)
>   java.util.concurrent.locks.LockSupport.park(LockSupport.java:156)
>   java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1987)
>   java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:399)
>   java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:947)
>   java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
>   java.lang.Thread.run(Thread.java:662)
> ThreadId: 26 : name: pool-1-thread-8 State: WAITING
>   LockInfo: java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@15d17d7 LockOwnerId: -1 LockOwnerName: null
>   sun.misc.Unsafe.park(Native Method)
>   java.util.concurrent.locks.LockSupport.park(LockSupport.java:156)
>   java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1987)
>   java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:399)
>   java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:947)
>   java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
>   java.lang.Thread.run(Thread.java:662)
> ThreadId: 25 : name: pool-1-thread-7 State: WAITING
>   LockInfo: java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@15d17d7 LockOwnerId: -1 LockOwnerName: null
>   sun.misc.Unsafe.park(Native Method)
>   java.util.concurrent.locks.LockSupport.park(LockSupport.java:156)
>   java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1987)
>   java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:399)
>   java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:947)
>   java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
>   java.lang.Thread.run(Thread.java:662)
> ThreadId: 24 : name: pool-1-thread-6 State: WAITING
>   LockInfo: java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@15d17d7 LockOwnerId: -1 LockOwnerName: null
>   sun.misc.Unsafe.park(Native Method)
>   java.util.concurrent.locks.LockSupport.park(LockSupport.java:156)
>   java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1987)
>   java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:399)
>   java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:947)
>   java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
>   java.lang.Thread.run(Thread.java:662)
> ThreadId: 23 : name: pool-1-thread-5 State: WAITING
>   LockInfo: java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@15d17d7 LockOwnerId: -1 LockOwnerName: null
>   sun.misc.Unsafe.park(Native Method)
>   java.util.concurrent.locks.LockSupport.park(LockSupport.java:156)
>   java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1987)
>   java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:399)
>   java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:947)
>   java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
>   java.lang.Thread.run(Thread.java:662)
> ThreadId: 22 : name: pool-1-thread-4 State: WAITING
>   LockInfo: java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@15d17d7 LockOwnerId: -1 LockOwnerName: null
>   sun.misc.Unsafe.park(Native Method)
>   java.util.concurrent.locks.LockSupport.park(LockSupport.java:156)
>   java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1987)
>   java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:399)
>   java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:947)
>   java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
>   java.lang.Thread.run(Thread.java:662)
> ThreadId: 21 : name: pool-1-thread-3 State: WAITING
>   LockInfo: java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@15d17d7 LockOwnerId: -1 LockOwnerName: null
>   sun.misc.Unsafe.park(Native Method)
>   java.util.concurrent.locks.LockSupport.park(LockSupport.java:156)
>   java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1987)
>   java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:399)
>   java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:947)
>   java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
>   java.lang.Thread.run(Thread.java:662)
> ThreadId: 20 : name: pool-1-thread-2 State: WAITING
>   LockInfo: java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@15d17d7 LockOwnerId: -1 LockOwnerName: null
>   sun.misc.Unsafe.park(Native Method)
>   java.util.concurrent.locks.LockSupport.park(LockSupport.java:156)
>   java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1987)
>   java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:399)
>   java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:947)
>   java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
>   java.lang.Thread.run(Thread.java:662)
> ThreadId: 19 : name: pool-1-thread-1 State: WAITING
>   LockInfo: java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@15d17d7 LockOwnerId: -1 LockOwnerName: null
>   sun.misc.Unsafe.park(Native Method)
>   java.util.concurrent.locks.LockSupport.park(LockSupport.java:156)
>   java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1987)
>   java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:399)
>   java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:947)
>   java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
>   java.lang.Thread.run(Thread.java:662)
> ThreadId: 17 : name: Thread-2 State: TIMED_WAITING
>   LockInfo: java.util.concurrent.CountDownLatch$Sync@ba5bdb LockOwnerId: -1 LockOwnerName: null
>   sun.misc.Unsafe.park(Native Method)
>   java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:196)
>   java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedNanos(AbstractQueuedSynchronizer.java:1011)
>   java.util.concurrent.locks.AbstractQueuedSynchronizer.tryAcquireSharedNanos(AbstractQueuedSynchronizer.java:1303)
>   java.util.concurrent.CountDownLatch.await(CountDownLatch.java:253)
>   test.scr.Main.run(Main.java:157)
>   java.lang.Thread.run(Thread.java:662)
> ThreadId: 16 : name: Thread-1 State: WAITING
>   LockInfo: java.util.ArrayList@e49dcd LockOwnerId: -1 LockOwnerName: null
>   java.lang.Object.wait(Native Method)
>   java.lang.Object.wait(Object.java:485)
>   org.apache.felix.log.LogListenerThread.run(LogListenerThread.java:139)
> ThreadId: 15 : name: SCR Component Actor State: RUNNABLE
>   LockInfo: null LockOwnerId: -1 LockOwnerName: null
>   sun.management.ThreadImpl.dumpThreads0(Native Method)
>   sun.management.ThreadImpl.dumpAllThreads(ThreadImpl.java:433)
>   org.apache.felix.scr.impl.manager.AbstractComponentManager.dumpThreads(AbstractComponentManager.java:294)
>   org.apache.felix.scr.impl.manager.AbstractComponentManager.logLockingInfo(AbstractComponentManager.java:240)
>   org.apache.felix.scr.impl.manager.AbstractComponentManager.releaseReadLock(AbstractComponentManager.java:222)
>   org.apache.felix.scr.impl.manager.ImmediateComponentManager.ungetService(ImmediateComponentManager.java:706)
>   org.apache.felix.framework.ServiceRegistrationImpl.ungetFactoryUnchecked(ServiceRegistrationImpl.java:349)
>   org.apache.felix.framework.ServiceRegistrationImpl.ungetService(ServiceRegistrationImpl.java:258)
>   org.apache.felix.framework.ServiceRegistry.ungetService(ServiceRegistry.java:389)
>   org.apache.felix.framework.Felix.ungetService(Felix.java:3494)
>   org.apache.felix.framework.BundleContextImpl.ungetService(BundleContextImpl.java:486)
>   org.apache.felix.scr.impl.manager.DependencyManager.ungetService(DependencyManager.java:900)
>   org.apache.felix.scr.impl.manager.DependencyManager.unbind(DependencyManager.java:1138)
>   org.apache.felix.scr.impl.manager.DependencyManager.close(DependencyManager.java:970)
>   org.apache.felix.scr.impl.manager.ImmediateComponentManager.disposeImplementationObject(ImmediateComponentManager.java:274)
>   org.apache.felix.scr.impl.manager.ImmediateComponentManager.deleteComponent(ImmediateComponentManager.java:147)
>   org.apache.felix.scr.impl.manager.AbstractComponentManager$Active.ungetService(AbstractComponentManager.java:1697)
>   org.apache.felix.scr.impl.manager.ImmediateComponentManager.ungetService(ImmediateComponentManager.java:692)
>   org.apache.felix.framework.ServiceRegistrationImpl.ungetFactoryUnchecked(ServiceRegistrationImpl.java:349)
>   org.apache.felix.framework.ServiceRegistrationImpl.ungetService(ServiceRegistrationImpl.java:258)
>   org.apache.felix.framework.ServiceRegistry.ungetService(ServiceRegistry.java:389)
>   org.apache.felix.framework.ServiceRegistry.unregisterService(ServiceRegistry.java:158)
>   org.apache.felix.framework.ServiceRegistrationImpl.unregister(ServiceRegistrationImpl.java:127)
>   org.apache.felix.scr.impl.manager.AbstractComponentManager.unregisterComponentService(AbstractComponentManager.java:779)
>   org.apache.felix.scr.impl.manager.AbstractComponentManager$State.doDeactivate(AbstractComponentManager.java:1382)
>   org.apache.felix.scr.impl.manager.AbstractComponentManager$Satisfied.deactivate(AbstractComponentManager.java:1644)
>   org.apache.felix.scr.impl.manager.AbstractComponentManager.deactivateInternal(AbstractComponentManager.java:635)
>   org.apache.felix.scr.impl.manager.DependencyManager.serviceRemoved(DependencyManager.java:375)
>   org.apache.felix.scr.impl.manager.DependencyManager.serviceChanged(DependencyManager.java:217)
>   org.apache.felix.framework.util.EventDispatcher.invokeServiceListenerCallback(EventDispatcher.java:932)
>   org.apache.felix.framework.util.EventDispatcher.fireEventImmediately(EventDispatcher.java:793)
>   org.apache.felix.framework.util.EventDispatcher.fireServiceEvent(EventDispatcher.java:543)
>   org.apache.felix.framework.Felix.fireServiceEvent(Felix.java:4327)
>   org.apache.felix.framework.Felix.access$000(Felix.java:74)
>   org.apache.felix.framework.Felix$1.serviceChanged(Felix.java:390)
>   org.apache.felix.framework.ServiceRegistry.unregisterService(ServiceRegistry.java:148)
>   org.apache.felix.framework.ServiceRegistrationImpl.unregister(ServiceRegistrationImpl.java:127)
>   org.apache.felix.scr.impl.manager.AbstractComponentManager.unregisterComponentService(AbstractComponentManager.java:779)
>   org.apache.felix.scr.impl.manager.AbstractComponentManager$State.doDeactivate(AbstractComponentManager.java:1382)
>   org.apache.felix.scr.impl.manager.AbstractComponentManager$Disabled.deactivate(AbstractComponentManager.java:1456)
>   org.apache.felix.scr.impl.manager.AbstractComponentManager.deactivateInternal(AbstractComponentManager.java:635)
>   org.apache.felix.scr.impl.manager.AbstractComponentManager$2.run(AbstractComponentManager.java:435)
>   org.apache.felix.scr.impl.ComponentActorThread.run(ComponentActorThread.java:98)
>   java.lang.Thread.run(Thread.java:662)
> ThreadId: 14 : name: Gogo shell State: RUNNABLE
>   LockInfo: null LockOwnerId: -1 LockOwnerName: null
>   java.io.FileInputStream.readBytes(Native Method)
>   java.io.FileInputStream.read(FileInputStream.java:220)
>   java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
>   java.io.BufferedInputStream.read(BufferedInputStream.java:237)
>   org.apache.felix.gogo.runtime.threadio.ThreadInputStream.read(ThreadInputStream.java:77)
>   org.apache.felix.gogo.shell.Console.getLine(Console.java:117)
>   org.apache.felix.gogo.shell.Console.run(Console.java:53)
>   org.apache.felix.gogo.shell.Shell.console(Shell.java:203)
>   org.apache.felix.gogo.shell.Shell.gosh(Shell.java:128)
>   sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>   sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>   sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>   java.lang.reflect.Method.invoke(Method.java:597)
>   org.apache.felix.gogo.runtime.Reflective.invoke(Reflective.java:137)
>   org.apache.felix.gogo.runtime.CommandProxy.execute(CommandProxy.java:82)
>   org.apache.felix.gogo.runtime.Closure.executeCmd(Closure.java:477)
>   org.apache.felix.gogo.runtime.Closure.executeStatement(Closure.java:403)
>   org.apache.felix.gogo.runtime.Pipe.run(Pipe.java:108)
>   org.apache.felix.gogo.runtime.Closure.execute(Closure.java:183)
>   org.apache.felix.gogo.runtime.Closure.execute(Closure.java:120)
>   org.apache.felix.gogo.runtime.CommandSessionImpl.execute(CommandSessionImpl.java:89)
>   org.apache.felix.gogo.shell.Activator.run(Activator.java:75)
>   java.lang.Thread.run(Thread.java:662)
> ThreadId: 13 : name: CM Event Dispatcher State: WAITING
>   LockInfo: java.util.LinkedList@13c0b53 LockOwnerId: -1 LockOwnerName: null
>   java.lang.Object.wait(Native Method)
>   java.lang.Object.wait(Object.java:485)
>   org.apache.felix.cm.impl.UpdateThread.run(UpdateThread.java:77)
>   java.lang.Thread.run(Thread.java:662)
> ThreadId: 12 : name: CM Configuration Updater State: WAITING
>   LockInfo: java.util.LinkedList@10b9279 LockOwnerId: -1 LockOwnerName: null
>   java.lang.Object.wait(Native Method)
>   java.lang.Object.wait(Object.java:485)
>   org.apache.felix.cm.impl.UpdateThread.run(UpdateThread.java:77)
>   java.lang.Thread.run(Thread.java:662)
> ThreadId: 11 : name: FelixStartLevel State: WAITING
>   LockInfo: java.util.ArrayList@bd6a5f LockOwnerId: -1 LockOwnerName: null
>   java.lang.Object.wait(Native Method)
>   java.lang.Object.wait(Object.java:485)
>   org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:273)
>   java.lang.Thread.run(Thread.java:662)
> ThreadId: 10 : name: FelixDispatchQueue State: WAITING
>   LockInfo: java.util.ArrayList@192a848 LockOwnerId: -1 LockOwnerName: null
>   java.lang.Object.wait(Native Method)
>   java.lang.Object.wait(Object.java:485)
>   org.apache.felix.framework.util.EventDispatcher.run(EventDispatcher.java:1063)
>   org.apache.felix.framework.util.EventDispatcher.access$000(EventDispatcher.java:54)
>   org.apache.felix.framework.util.EventDispatcher$1.run(EventDispatcher.java:101)
>   java.lang.Thread.run(Thread.java:662)
> ThreadId: 4 : name: Signal Dispatcher State: RUNNABLE
>   LockInfo: null LockOwnerId: -1 LockOwnerName: null
> ThreadId: 3 : name: Finalizer State: WAITING
>   LockInfo: java.lang.ref.ReferenceQueue$Lock@16614e7 LockOwnerId: -1 LockOwnerName: null
>   java.lang.Object.wait(Native Method)
>   java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:118)
>   java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:134)
>   java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:159)
> ThreadId: 2 : name: Reference Handler State: WAITING
>   LockInfo: java.lang.ref.Reference$Lock@e66f56 LockOwnerId: -1 LockOwnerName: null
>   java.lang.Object.wait(Native Method)
>   java.lang.Object.wait(Object.java:485)
>   java.lang.ref.Reference$ReferenceHandler.run(Reference.java:116)
> ThreadId: 1 : name: main State: WAITING
>   LockInfo: org.apache.felix.framework.util.ThreadGate@979e8b LockOwnerId: -1 LockOwnerName: null
>   java.lang.Object.wait(Native Method)
>   org.apache.felix.framework.util.ThreadGate.await(ThreadGate.java:79)
>   org.apache.felix.framework.Felix.waitForStop(Felix.java:983)
>   org.apache.felix.main.Main.main(Main.java:299)
> log level: 1 D=Mon Sep 24 11:07:45 CEST 2012, T=Thread-1: ServiceRegistrationImpl: Error ungetting service.
> java.lang.IllegalMonitorStateException
> 	at java.util.concurrent.locks.ReentrantReadWriteLock$Sync.tryReleaseShared(ReentrantReadWriteLock.java:363)
> 	at java.util.concurrent.locks.AbstractQueuedSynchronizer.releaseShared(AbstractQueuedSynchronizer.java:1317)
> 	at java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock.unlock(ReentrantReadWriteLock.java:745)
> 	at org.apache.felix.scr.impl.manager.AbstractComponentManager$JLock.unlockReadLock(AbstractComponentManager.java:1895)
> 	at org.apache.felix.scr.impl.manager.AbstractComponentManager.releaseReadLock(AbstractComponentManager.java:218)
> 	at org.apache.felix.scr.impl.manager.ImmediateComponentManager.ungetService(ImmediateComponentManager.java:706)
> 	at org.apache.felix.framework.ServiceRegistrationImpl.ungetFactoryUnchecked(ServiceRegistrationImpl.java:349)
> 	at org.apache.felix.framework.ServiceRegistrationImpl.ungetService(ServiceRegistrationImpl.java:258)
> 	at org.apache.felix.framework.ServiceRegistry.ungetService(ServiceRegistry.java:389)
> 	at org.apache.felix.framework.Felix.ungetService(Felix.java:3494)
> 	at org.apache.felix.framework.BundleContextImpl.ungetService(BundleContextImpl.java:486)
> 	at org.apache.felix.scr.impl.manager.DependencyManager.ungetService(DependencyManager.java:900)
> 	at org.apache.felix.scr.impl.manager.DependencyManager.unbind(DependencyManager.java:1138)
> 	at org.apache.felix.scr.impl.manager.DependencyManager.close(DependencyManager.java:970)
> 	at org.apache.felix.scr.impl.manager.ImmediateComponentManager.disposeImplementationObject(ImmediateComponentManager.java:274)
> 	at org.apache.felix.scr.impl.manager.ImmediateComponentManager.deleteComponent(ImmediateComponentManager.java:147)
> 	at org.apache.felix.scr.impl.manager.AbstractComponentManager$Active.ungetService(AbstractComponentManager.java:1697)
> 	at org.apache.felix.scr.impl.manager.ImmediateComponentManager.ungetService(ImmediateComponentManager.java:692)
> 	at org.apache.felix.framework.ServiceRegistrationImpl.ungetFactoryUnchecked(ServiceRegistrationImpl.java:349)
> 	at org.apache.felix.framework.ServiceRegistrationImpl.ungetService(ServiceRegistrationImpl.java:258)
> 	at org.apache.felix.framework.ServiceRegistry.ungetService(ServiceRegistry.java:389)
> 	at org.apache.felix.framework.ServiceRegistry.unregisterService(ServiceRegistry.java:158)
> 	at org.apache.felix.framework.ServiceRegistrationImpl.unregister(ServiceRegistrationImpl.java:127)
> 	at org.apache.felix.scr.impl.manager.AbstractComponentManager.unregisterComponentService(AbstractComponentManager.java:779)
> 	at org.apache.felix.scr.impl.manager.AbstractComponentManager$State.doDeactivate(AbstractComponentManager.java:1382)
> 	at org.apache.felix.scr.impl.manager.AbstractComponentManager$Satisfied.deactivate(AbstractComponentManager.java:1644)
> 	at org.apache.felix.scr.impl.manager.AbstractComponentManager.deactivateInternal(AbstractComponentManager.java:635)
> 	at org.apache.felix.scr.impl.manager.DependencyManager.serviceRemoved(DependencyManager.java:375)
> 	at org.apache.felix.scr.impl.manager.DependencyManager.serviceChanged(DependencyManager.java:217)
> 	at org.apache.felix.framework.util.EventDispatcher.invokeServiceListenerCallback(EventDispatcher.java:932)
> 	at org.apache.felix.framework.util.EventDispatcher.fireEventImmediately(EventDispatcher.java:793)
> 	at org.apache.felix.framework.util.EventDispatcher.fireServiceEvent(EventDispatcher.java:543)
> 	at org.apache.felix.framework.Felix.fireServiceEvent(Felix.java:4327)
> 	at org.apache.felix.framework.Felix.access$000(Felix.java:74)
> 	at org.apache.felix.framework.Felix$1.serviceChanged(Felix.java:390)
> 	at org.apache.felix.framework.ServiceRegistry.unregisterService(ServiceRegistry.java:148)
> 	at org.apache.felix.framework.ServiceRegistrationImpl.unregister(ServiceRegistrationImpl.java:127)
> 	at org.apache.felix.scr.impl.manager.AbstractComponentManager.unregisterComponentService(AbstractComponentManager.java:779)
> 	at org.apache.felix.scr.impl.manager.AbstractComponentManager$State.doDeactivate(AbstractComponentManager.java:1382)
> 	at org.apache.felix.scr.impl.manager.AbstractComponentManager$Disabled.deactivate(AbstractComponentManager.java:1456)
> 	at org.apache.felix.scr.impl.manager.AbstractComponentManager.deactivateInternal(AbstractComponentManager.java:635)
> 	at org.apache.felix.scr.impl.manager.AbstractComponentManager$2.run(AbstractComponentManager.java:435)
> 	at org.apache.felix.scr.impl.ComponentActorThread.run(ComponentActorThread.java:98)
> 	at java.lang.Thread.run(Thread.java:662)
> 2) we also have this IllegalStateException:
> ==============================
> log level: 1 D=Mon Sep 24 11:07:45 CEST 2012, T=Thread-1: ServiceRegistrationImpl: Error ungetting service.
> java.lang.IllegalStateException: ungetServiceUnsatisfied
> 	at org.apache.felix.scr.impl.manager.AbstractComponentManager$State.ungetService(AbstractComponentManager.java:1336)
> 	at org.apache.felix.scr.impl.manager.ImmediateComponentManager.ungetService(ImmediateComponentManager.java:692)
> 	at org.apache.felix.framework.ServiceRegistrationImpl.ungetFactoryUnchecked(ServiceRegistrationImpl.java:349)
> 	at org.apache.felix.framework.ServiceRegistrationImpl.ungetService(ServiceRegistrationImpl.java:258)
> 	at org.apache.felix.framework.ServiceRegistry.ungetService(ServiceRegistry.java:389)
> 	at org.apache.felix.framework.Felix.ungetService(Felix.java:3494)
> 	at org.apache.felix.framework.BundleContextImpl.ungetService(BundleContextImpl.java:486)
> 	at org.apache.felix.scr.impl.manager.DependencyManager.ungetService(DependencyManager.java:900)
> 	at org.apache.felix.scr.impl.manager.DependencyManager.unbind(DependencyManager.java:1138)
> 	at org.apache.felix.scr.impl.manager.DependencyManager.close(DependencyManager.java:970)
> 	at org.apache.felix.scr.impl.manager.ImmediateComponentManager.disposeImplementationObject(ImmediateComponentManager.java:274)
> 	at org.apache.felix.scr.impl.manager.ImmediateComponentManager.deleteComponent(ImmediateComponentManager.java:147)
> 	at org.apache.felix.scr.impl.manager.AbstractComponentManager$Active.ungetService(AbstractComponentManager.java:1697)
> 	at org.apache.felix.scr.impl.manager.ImmediateComponentManager.ungetService(ImmediateComponentManager.java:692)
> 	at org.apache.felix.framework.ServiceRegistrationImpl.ungetFactoryUnchecked(ServiceRegistrationImpl.java:349)
> 	at org.apache.felix.framework.ServiceRegistrationImpl.ungetService(ServiceRegistrationImpl.java:258)
> 	at org.apache.felix.framework.ServiceRegistry.ungetService(ServiceRegistry.java:389)
> 	at org.apache.felix.framework.ServiceRegistry.unregisterService(ServiceRegistry.java:158)
> 	at org.apache.felix.framework.ServiceRegistrationImpl.unregister(ServiceRegistrationImpl.java:127)
> 	at org.apache.felix.scr.impl.manager.AbstractComponentManager.unregisterComponentService(AbstractComponentManager.java:779)
> 	at org.apache.felix.scr.impl.manager.AbstractComponentManager$State.doDeactivate(AbstractComponentManager.java:1382)
> 	at org.apache.felix.scr.impl.manager.AbstractComponentManager$Satisfied.deactivate(AbstractComponentManager.java:1644)
> 	at org.apache.felix.scr.impl.manager.AbstractComponentManager.deactivateInternal(AbstractComponentManager.java:635)
> 	at org.apache.felix.scr.impl.manager.DependencyManager.serviceRemoved(DependencyManager.java:375)
> 	at org.apache.felix.scr.impl.manager.DependencyManager.serviceChanged(DependencyManager.java:217)
> 	at org.apache.felix.framework.util.EventDispatcher.invokeServiceListenerCallback(EventDispatcher.java:932)
> 	at org.apache.felix.framework.util.EventDispatcher.fireEventImmediately(EventDispatcher.java:793)
> 	at org.apache.felix.framework.util.EventDispatcher.fireServiceEvent(EventDispatcher.java:543)
> 	at org.apache.felix.framework.Felix.fireServiceEvent(Felix.java:4327)
> 	at org.apache.felix.framework.Felix.access$000(Felix.java:74)
> 	at org.apache.felix.framework.Felix$1.serviceChanged(Felix.java:390)
> 	at org.apache.felix.framework.ServiceRegistry.unregisterService(ServiceRegistry.java:148)
> 	at org.apache.felix.framework.ServiceRegistrationImpl.unregister(ServiceRegistrationImpl.java:127)
> 	at org.apache.felix.scr.impl.manager.AbstractComponentManager.unregisterComponentService(AbstractComponentManager.java:779)
> 	at org.apache.felix.scr.impl.manager.AbstractComponentManager$State.doDeactivate(AbstractComponentManager.java:1382)
> 	at org.apache.felix.scr.impl.manager.AbstractComponentManager$Disabled.deactivate(AbstractComponentManager.java:1456)
> 	at org.apache.felix.scr.impl.manager.AbstractComponentManager.deactivateInternal(AbstractComponentManager.java:635)
> 	at org.apache.felix.scr.impl.manager.AbstractComponentManager$2.run(AbstractComponentManager.java:435)
> 	at org.apache.felix.scr.impl.ComponentActorThread.run(ComponentActorThread.java:98)
> 	at java.lang.Thread.run(Thread.java:662)
> 3) An exception when getting a service from a Reference:
> ==============================================
> log level: 2 D=Mon Sep 24 11:07:45 CEST 2012, T=Thread-1: [A] Could not get service from ref [test.scr.F]
> Can you please confirm that you also see these exceptions ?
> Thanks.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira