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) {