diff --git a/commons/solr/managed/src/main/java/org/apache/stanbol/commons/solr/managed/IndexMetadata.java b/commons/solr/managed/src/main/java/org/apache/stanbol/commons/solr/managed/IndexMetadata.java
index 443fca8..9782fb5 100644
--- a/commons/solr/managed/src/main/java/org/apache/stanbol/commons/solr/managed/IndexMetadata.java
+++ b/commons/solr/managed/src/main/java/org/apache/stanbol/commons/solr/managed/IndexMetadata.java
@@ -161,7 +161,7 @@
         StringBuilder value = new StringBuilder();
         boolean first = true;
         for(String archive:archives){
-            if(archive != null && archive != null){
+            if(archive != null){
                 if(!first){
                     value.append(',');
                 } else {
@@ -174,7 +174,7 @@
     }
     public boolean isSynchronized(){
         String value = getProperty(SYNCHRONIZED);
-        return value == null ? false : Boolean.parseBoolean(value);
+        return Boolean.parseBoolean(value);
     }
     public void setSynchronized(boolean state){
         setProperty(SYNCHRONIZED, Boolean.toString(state));
diff --git a/commons/testing/jarexec/src/main/java/org/apache/stanbol/commons/testing/jarexec/JarExecutor.java b/commons/testing/jarexec/src/main/java/org/apache/stanbol/commons/testing/jarexec/JarExecutor.java
index 03c2a88..0a96d1c 100644
--- a/commons/testing/jarexec/src/main/java/org/apache/stanbol/commons/testing/jarexec/JarExecutor.java
+++ b/commons/testing/jarexec/src/main/java/org/apache/stanbol/commons/testing/jarexec/JarExecutor.java
@@ -72,13 +72,9 @@
         return serverPort;
     }
 
-    public static JarExecutor getInstance(Properties config) throws ExecutorException {
+    public synchronized static JarExecutor getInstance(Properties config) throws ExecutorException {
         if (instance == null) {
-            synchronized (JarExecutor.class) {
-                if (instance == null) {
-                    instance = new JarExecutor(config);
-                }
-            }
+            instance = new JarExecutor(config);
         }
         return instance;
     }
diff --git a/enhancement-engines/entitylinking/labeltokenizer-lucene/src/main/java/org/apache/stanbol/enhancer/engines/entitylinking/labeltokenizer/lucene/LuceneLabelTokenizer.java b/enhancement-engines/entitylinking/labeltokenizer-lucene/src/main/java/org/apache/stanbol/enhancer/engines/entitylinking/labeltokenizer/lucene/LuceneLabelTokenizer.java
index b91ca70..cbfa6ed 100644
--- a/enhancement-engines/entitylinking/labeltokenizer-lucene/src/main/java/org/apache/stanbol/enhancer/engines/entitylinking/labeltokenizer/lucene/LuceneLabelTokenizer.java
+++ b/enhancement-engines/entitylinking/labeltokenizer-lucene/src/main/java/org/apache/stanbol/enhancer/engines/entitylinking/labeltokenizer/lucene/LuceneLabelTokenizer.java
@@ -206,10 +206,19 @@
                     tokens.add(label.substring(offset.startOffset(), offset.endOffset()));
                 }
                 tokenizer.end();
-                tokenizer.close();
             } catch (IOException e) {
                 log.error("IOException while reading from a StringReader :(",e);
                 return null;
+            } finally {
+                try {
+                    if (tokenizer == null) {
+                        return null;
+                    }
+                    tokenizer.close();
+                } catch (IOException e) {
+                    log.error("IOException while closing a StringReader :(",e);
+                    return null;
+                }
             }
             return tokens.toArray(new String[tokens.size()]);
         } else {
