You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by dj...@apache.org on 2012/10/03 21:31:49 UTC

svn commit: r1393716 - /felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/AbstractComponentManager.java

Author: djencks
Date: Wed Oct  3 19:31:49 2012
New Revision: 1393716

URL: http://svn.apache.org/viewvc?rev=1393716&view=rev
Log:
FELIX-3680 Fix some state change problems and add logging

Modified:
    felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/AbstractComponentManager.java

Modified: felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/AbstractComponentManager.java
URL: http://svn.apache.org/viewvc/felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/AbstractComponentManager.java?rev=1393716&r1=1393715&r2=1393716&view=diff
==============================================================================
--- felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/AbstractComponentManager.java (original)
+++ felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/AbstractComponentManager.java Wed Oct  3 19:31:49 2012
@@ -759,6 +759,9 @@ public abstract class AbstractComponentM
                 }
                 newRegistration.unregister();
             }
+            else {
+                log( LogService.LOG_DEBUG, "Existing service registration, not registering", null );
+            }
         }
         finally
         {
@@ -789,6 +792,14 @@ public abstract class AbstractComponentM
             log( LogService.LOG_DEBUG, "Unregistering services", null );
             sr.unregister();
         }
+        else if (sr == null)
+        {
+            log( LogService.LOG_DEBUG, "Service already unregistered", null);
+        }
+        else
+        {
+            log( LogService.LOG_DEBUG, "Service unregistered concurrently by another thread", null);
+        }
     }
 
     boolean initDependencyManagers()
@@ -1274,8 +1285,8 @@ public abstract class AbstractComponentM
      */
     void changeState( State newState )
     {
-        log( LogService.LOG_DEBUG, "State transition : {0} -> {1}", new Object[]
-            { m_state, newState }, null );
+        log( LogService.LOG_DEBUG, "State transition : {0} -> {1} : service reg: {2}", new Object[]
+            { m_state, newState, m_serviceRegistration.get() }, null );
         m_state = newState;
     }
 
@@ -1386,8 +1397,8 @@ public abstract class AbstractComponentM
 
         private void log( AbstractComponentManager acm, String event )
         {
-            acm.log( LogService.LOG_DEBUG, "Current state: {0}, Event: {1}", new Object[]
-                { m_name, event }, null );
+            acm.log( LogService.LOG_DEBUG, "Current state: {0}, Event: {1}, Service registration: {2}", new Object[]
+                { m_name, event, acm.m_serviceRegistration.get() }, null );
         }
 
         void doDeactivate( AbstractComponentManager acm, int reason )
@@ -1620,6 +1631,16 @@ public abstract class AbstractComponentM
 
         }
 
+        void deactivate( AbstractComponentManager acm, int reason )
+        {
+            acm.log( LogService.LOG_DEBUG, "Deactivating component", null );
+
+            // catch any problems from deleting the component to prevent the
+            // component to remain in the deactivating state !
+            doDeactivate(acm, reason);
+
+            acm.log( LogService.LOG_DEBUG, "Component deactivated", null );
+        }
 
         void disable( AbstractComponentManager acm )
         {
@@ -1675,7 +1696,10 @@ public abstract class AbstractComponentM
             // component to remain in the deactivating state !
             doDeactivate(acm, reason);
 
-            acm.changeState( Unsatisfied.getInstance() );
+            if ( acm.state() == this )
+            {
+                acm.changeState( Unsatisfied.getInstance() );
+            }
             acm.log( LogService.LOG_DEBUG, "Component deactivated", null );
         }