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 2013/12/10 02:19:50 UTC
svn commit: r1549728 - in
/felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager:
DependencyManager.java ServiceTracker.java
Author: djencks
Date: Tue Dec 10 01:19:49 2013
New Revision: 1549728
URL: http://svn.apache.org/r1549728
Log:
FELIX-4350 Fix race between service tracker open and service removed event
Modified:
felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/DependencyManager.java
felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/ServiceTracker.java
Modified: felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/DependencyManager.java
URL: http://svn.apache.org/viewvc/felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/DependencyManager.java?rev=1549728&r1=1549727&r2=1549728&view=diff
==============================================================================
--- felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/DependencyManager.java (original)
+++ felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/DependencyManager.java Tue Dec 10 01:19:49 2013
@@ -942,10 +942,7 @@ public class DependencyManager<S, T> imp
public void removedService( ServiceReference<T> serviceReference, RefPair<T> refPair, int trackingCount )
{
m_componentManager.log( LogService.LOG_DEBUG, "dm {0} tracking {1} SingleStatic removed {2} (enter)", new Object[] {getName(), trackingCount, serviceReference}, null );
- if ( refPair != null ) //TODO needs investigation
- {
- refPair.setDeleted( true );
- }
+ refPair.setDeleted( true );
this.trackingCount = trackingCount;
tracked( trackingCount );
boolean reactivate;
Modified: felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/ServiceTracker.java
URL: http://svn.apache.org/viewvc/felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/ServiceTracker.java?rev=1549728&r1=1549727&r2=1549728&view=diff
==============================================================================
--- felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/ServiceTracker.java (original)
+++ felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/ServiceTracker.java Tue Dec 10 01:19:49 2013
@@ -1249,6 +1249,9 @@ public class ServiceTracker<S, T> {
object = tracked.remove(item); /* * must remove from tracker before
* calling customizer callback
*/
+ if (object == null) { /* are we actually tracking the item */
+ return;
+ }
trackingCount = modified(); /* increment modification count */
}
if (DEBUG) {