Turns out our LDAP filter is not reentrant - but it is easy to fix - so this patch should make it work. It is needed because filter evaluations can call out to keys being compared which might in turn use the given thread to evaluate their own filter.

git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@633818 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/framework/src/main/java/org/apache/felix/framework/FilterImpl.java b/framework/src/main/java/org/apache/felix/framework/FilterImpl.java
index 8a5a95f..d4457ca 100644
--- a/framework/src/main/java/org/apache/felix/framework/FilterImpl.java
+++ b/framework/src/main/java/org/apache/felix/framework/FilterImpl.java
@@ -133,6 +133,7 @@
         {
             evaluator = (Evaluator) tuple[0];
             mapper = (SimpleMapper) tuple[1];
+            m_cache.set(null);
         }
 
         try 
@@ -171,6 +172,10 @@
             {
                 m_cache.set(new SoftReference(new Object[] {evaluator, mapper}));
             }
+            else
+            {
+                m_cache.set(tupleRef);
+            }
         }
 
         return false;