You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by md...@apache.org on 2015/05/06 23:25:10 UTC

svn commit: r1678096 - in /jackrabbit/oak/trunk/oak-core/src: main/java/org/apache/jackrabbit/oak/osgi/ObserverTracker.java test/java/org/apache/jackrabbit/oak/osgi/ObserverTrackerTest.java

Author: mduerig
Date: Wed May  6 21:25:09 2015
New Revision: 1678096

URL: http://svn.apache.org/r1678096
Log:
OAK-2845: Memory leak in ObserverTracker#removedService
Clear subscription on  removeService

Modified:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/osgi/ObserverTracker.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/osgi/ObserverTrackerTest.java

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/osgi/ObserverTracker.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/osgi/ObserverTracker.java?rev=1678096&r1=1678095&r2=1678096&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/osgi/ObserverTracker.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/osgi/ObserverTracker.java Wed May  6 21:25:09 2015
@@ -80,8 +80,9 @@ public class ObserverTracker implements
 
     @Override
     public void removedService(ServiceReference reference, Object service) {
-        if (subscriptions.containsKey(reference)) {
-            Closeables.closeQuietly(subscriptions.get(reference));
+        Closeable subscription = subscriptions.remove(reference);
+        if (subscription != null) {
+            Closeables.closeQuietly(subscription);
             bundleContext.ungetService(reference);
         }
     }

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/osgi/ObserverTrackerTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/osgi/ObserverTrackerTest.java?rev=1678096&r1=1678095&r2=1678096&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/osgi/ObserverTrackerTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/osgi/ObserverTrackerTest.java Wed May  6 21:25:09 2015
@@ -34,7 +34,6 @@ import org.apache.jackrabbit.oak.spi.com
 import org.apache.jackrabbit.oak.spi.commit.Observer;
 import org.junit.After;
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.ServiceReference;
@@ -109,7 +108,6 @@ public class ObserverTrackerTest {
     }
 
     @Test
-    @Ignore("OAK-2845")  // FIXME OAK-2845
     public void unregisterTwice() {
         tracker.addingService(ref1);
         assertEquals(ImmutableSet.of(observer1), observers);