Fix timeout when updating FieldInfoCache from solr
- Release connection in a finally block when executing a SchemaRequest to
update FieldInfoCache (used in typed facet result).
diff --git a/core/org.eclipse.smila.solr/code/src/org/eclipse/smila/solr/administration/FieldInfoCache.java b/core/org.eclipse.smila.solr/code/src/org/eclipse/smila/solr/administration/FieldInfoCache.java
index 118c464..b2b270c 100755
--- a/core/org.eclipse.smila.solr/code/src/org/eclipse/smila/solr/administration/FieldInfoCache.java
+++ b/core/org.eclipse.smila.solr/code/src/org/eclipse/smila/solr/administration/FieldInfoCache.java
@@ -36,8 +36,8 @@
return fieldInfo;
}
- public static FieldInfo getFieldInfo(final String index, final String fieldName) throws HttpException,
- InterruptedException, IOException {
+ public static FieldInfo getFieldInfo(final String index, final String fieldName)
+ throws HttpException, InterruptedException, IOException {
FieldInfo fieldInfo = getFieldInfo(index).get(fieldName);
if (fieldInfo == null) {
fieldInfo = getFromSchema(index, fieldName);
@@ -48,8 +48,8 @@
return fieldInfo;
}
- private static FieldInfo getFromSchema(final String index, final String fieldName) throws InterruptedException,
- HttpException, IOException {
+ private static FieldInfo getFromSchema(final String index, final String fieldName)
+ throws InterruptedException, HttpException, IOException {
final SolrOperationService service = ServiceUtils.getService(SolrOperationService.class);
// add parameter
final Map<String, String[]> params = new HashMap<String, String[]>();
diff --git a/core/org.eclipse.smila.solr/code/src/org/eclipse/smila/solr/administration/SchemaRequest.java b/core/org.eclipse.smila.solr/code/src/org/eclipse/smila/solr/administration/SchemaRequest.java
index 5b094db..8885a1a 100755
--- a/core/org.eclipse.smila.solr/code/src/org/eclipse/smila/solr/administration/SchemaRequest.java
+++ b/core/org.eclipse.smila.solr/code/src/org/eclipse/smila/solr/administration/SchemaRequest.java
@@ -35,13 +35,20 @@
public Any getAsAny(final String index, final Map<String, String[]> params, List<String> path)
throws HttpException, IOException {
- final String uri = getUri(index, path);
- final GetMethod method = new GetMethod(uri);
- final NameValuePair[] nameValuePairs = getAsNameValuePairs(params);
- method.setQueryString(nameValuePairs);
- _httpClient.executeMethod(method);
- final InputStream response = method.getResponseBodyAsStream();
- return new IpcAnyReader().readJsonStream(response);
+ GetMethod method = null;
+ try {
+ final String uri = getUri(index, path);
+ method = new GetMethod(uri);
+ final NameValuePair[] nameValuePairs = getAsNameValuePairs(params);
+ method.setQueryString(nameValuePairs);
+ _httpClient.executeMethod(method);
+ final InputStream response = method.getResponseBodyAsStream();
+ return new IpcAnyReader().readJsonStream(response);
+ } finally {
+ if (method != null) {
+ method.releaseConnection();
+ }
+ }
}
private String getUri(final String index, final List<String> path) {