You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ma...@apache.org on 2015/04/19 20:44:22 UTC
svn commit: r1674666 - in /lucene/dev/trunk/solr: CHANGES.txt
core/src/java/org/apache/solr/core/SolrConfig.java
Author: markrmiller
Date: Sun Apr 19 18:44:21 2015
New Revision: 1674666
URL: http://svn.apache.org/r1674666
Log:
SOLR-7426: SolrConfig#getConfigOverlay does not clean up it's resources.
Modified:
lucene/dev/trunk/solr/CHANGES.txt
lucene/dev/trunk/solr/core/src/java/org/apache/solr/core/SolrConfig.java
Modified: lucene/dev/trunk/solr/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/CHANGES.txt?rev=1674666&r1=1674665&r2=1674666&view=diff
==============================================================================
--- lucene/dev/trunk/solr/CHANGES.txt (original)
+++ lucene/dev/trunk/solr/CHANGES.txt Sun Apr 19 18:44:21 2015
@@ -138,6 +138,8 @@ Bug Fixes
* SOLR-7392: Fix SOLR_JAVA_MEM and SOLR_OPTS customizations in solr.in.sh being ignored
(Ramkumar Aiyengar, Ere Maijala)
+* SOLR-7426: SolrConfig#getConfigOverlay does not clean up it's resources. (Mark Miller)
+
Optimizations
----------------------
Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/core/SolrConfig.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/core/SolrConfig.java?rev=1674666&r1=1674665&r2=1674666&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/core/SolrConfig.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/core/SolrConfig.java Sun Apr 19 18:44:21 2015
@@ -20,6 +20,7 @@ package org.apache.solr.core;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.xpath.XPathConstants;
+
import java.io.File;
import java.io.FileFilter;
import java.io.IOException;
@@ -41,6 +42,7 @@ import java.util.regex.Matcher;
import java.util.regex.Pattern;
import com.google.common.collect.ImmutableList;
+
import org.apache.lucene.index.IndexDeletionPolicy;
import org.apache.lucene.search.BooleanQuery;
import org.apache.lucene.util.Version;
@@ -48,6 +50,7 @@ import org.apache.solr.cloud.ZkSolrResou
import org.apache.solr.common.SolrException;
import org.apache.solr.common.SolrException.ErrorCode;
import org.apache.solr.common.cloud.ZkNodeProps;
+import org.apache.solr.common.util.IOUtils;
import org.apache.solr.handler.component.SearchComponent;
import org.apache.solr.request.SolrRequestHandler;
import org.apache.solr.response.QueryResponseWriter;
@@ -375,25 +378,31 @@ public class SolrConfig extends Config i
public static ConfigOverlay getConfigOverlay(SolrResourceLoader loader) {
InputStream in = null;
+ InputStreamReader isr = null;
try {
- in = loader.openResource(ConfigOverlay.RESOURCE_NAME);
- } catch (IOException e) {
- //no problem no overlay.json file
- return new ConfigOverlay(Collections.EMPTY_MAP, -1);
- }
-
- try {
- int version = 0; //will be always 0 for file based resourceloader
+ try {
+ in = loader.openResource(ConfigOverlay.RESOURCE_NAME);
+ } catch (IOException e) {
+ // TODO: we should be explicitly looking for file not found exceptions
+ // and logging if it's not the expected IOException
+ // hopefully no problem, assume no overlay.json file
+ return new ConfigOverlay(Collections.EMPTY_MAP, -1);
+ }
+
+ int version = 0; // will be always 0 for file based resourceLoader
if (in instanceof ZkSolrResourceLoader.ZkByteArrayInputStream) {
version = ((ZkSolrResourceLoader.ZkByteArrayInputStream) in).getStat().getVersion();
log.info("config overlay loaded . version : {} ", version);
}
- Map m = (Map) ObjectBuilder.getVal(new JSONParser(new InputStreamReader(in, StandardCharsets.UTF_8)));
+ isr = new InputStreamReader(in, StandardCharsets.UTF_8);
+ Map m = (Map) ObjectBuilder.getVal(new JSONParser(isr));
return new ConfigOverlay(m, version);
} catch (Exception e) {
throw new SolrException(ErrorCode.SERVER_ERROR, "Error reading config overlay", e);
+ } finally {
+ IOUtils.closeQuietly(isr);
+ IOUtils.closeQuietly(in);
}
-
}
private Map<String, InitParams> initParams = Collections.emptyMap();