You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by rm...@apache.org on 2013/05/08 19:21:47 UTC

svn commit: r1480362 - in /lucene/dev/trunk/solr/core/src: java/org/apache/solr/core/CoreContainer.java java/org/apache/solr/core/SolrResourceLoader.java test/org/apache/solr/core/ResourceLoaderTest.java

Author: rmuir
Date: Wed May  8 17:21:46 2013
New Revision: 1480362

URL: http://svn.apache.org/r1480362
Log:
SOLR-4791: Use URLClassLoader.close() to try to release jar files from URLClassLoader

Modified:
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/core/CoreContainer.java
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/core/SolrResourceLoader.java
    lucene/dev/trunk/solr/core/src/test/org/apache/solr/core/ResourceLoaderTest.java

Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/core/CoreContainer.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/core/CoreContainer.java?rev=1480362&r1=1480361&r2=1480362&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/core/CoreContainer.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/core/CoreContainer.java Wed May  8 17:21:46 2013
@@ -580,6 +580,7 @@ public class CoreContainer
       zkSys.close();
 
     }
+    org.apache.lucene.util.IOUtils.closeWhileHandlingException(loader); // best effort
   }
 
   public void cancelCoreRecoveries() {

Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/core/SolrResourceLoader.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/core/SolrResourceLoader.java?rev=1480362&r1=1480361&r2=1480362&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/core/SolrResourceLoader.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/core/SolrResourceLoader.java Wed May  8 17:21:46 2013
@@ -17,6 +17,7 @@
 
 package org.apache.solr.core;
 
+import java.io.Closeable;
 import java.io.File;
 import java.io.FileFilter;
 import java.io.FileInputStream;
@@ -37,6 +38,7 @@ import org.apache.lucene.analysis.util.T
 import org.apache.lucene.codecs.Codec;
 import org.apache.lucene.codecs.PostingsFormat;
 import org.apache.lucene.codecs.DocValuesFormat;
+import org.apache.lucene.util.IOUtils;
 import org.apache.lucene.analysis.util.WordlistLoader;
 import org.apache.solr.common.ResourceLoader;
 import org.apache.solr.handler.admin.CoreAdminHandler;
@@ -68,7 +70,7 @@ import org.apache.solr.search.QParserPlu
 /**
  * @since solr 1.3
  */ 
-public class SolrResourceLoader implements ResourceLoader
+public class SolrResourceLoader implements ResourceLoader,Closeable
 {
   public static final Logger log = LoggerFactory.getLogger(SolrResourceLoader.class);
 
@@ -206,7 +208,9 @@ public class SolrResourceLoader implemen
           SolrException.log(log, "Can't add element to classloader: " + files[j], e);
         }
       }
-      return URLClassLoader.newInstance(elements, oldLoader.getParent());
+      ClassLoader oldParent = oldLoader.getParent();
+      IOUtils.closeWhileHandlingException(oldLoader); // best effort
+      return URLClassLoader.newInstance(elements, oldParent);
     }
     // are we still here?
     return oldLoader;
@@ -755,4 +759,9 @@ public class SolrResourceLoader implemen
     }
     throw new SolrException( SolrException.ErrorCode.SERVER_ERROR, builder.toString() );
   }
+
+  @Override
+  public void close() throws IOException {
+    IOUtils.close(classLoader);
+  }
 }

Modified: lucene/dev/trunk/solr/core/src/test/org/apache/solr/core/ResourceLoaderTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/test/org/apache/solr/core/ResourceLoaderTest.java?rev=1480362&r1=1480361&r2=1480362&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/test/org/apache/solr/core/ResourceLoaderTest.java (original)
+++ lucene/dev/trunk/solr/core/src/test/org/apache/solr/core/ResourceLoaderTest.java Wed May  8 17:21:46 2013
@@ -181,5 +181,6 @@ public class ResourceLoaderTest extends 
     // null file filter means accept all (making otherFile accessible)
     loader.addToClassLoader("otherLib", null, false);
     assertNotNull(loader.getClassLoader().getResource("otherFile"));
+    loader.close();
   }
 }