ATLAS-2082: basic-search fails when in-memory filters all results from index-query

(cherry picked from commit 64c9bde668b52c6f621c19110f2da0a0907704d8)
diff --git a/repository/src/main/java/org/apache/atlas/discovery/ClassificationSearchProcessor.java b/repository/src/main/java/org/apache/atlas/discovery/ClassificationSearchProcessor.java
index 29670bc..0daab03 100644
--- a/repository/src/main/java/org/apache/atlas/discovery/ClassificationSearchProcessor.java
+++ b/repository/src/main/java/org/apache/atlas/discovery/ClassificationSearchProcessor.java
@@ -236,22 +236,23 @@
             // Now filter on the tag attributes
             Set<String> guids = getGuids(entityVertices);
 
-            gremlinQueryBindings.put("guids", guids);
+            // Clear prior results
+            entityVertices.clear();
 
-            try {
-                AtlasGraph        graph               = context.getGraph();
-                ScriptEngine      gremlinScriptEngine = graph.getGremlinScriptEngine();
-                List<AtlasVertex> atlasVertices       = (List<AtlasVertex>) graph.executeGremlinScript(gremlinScriptEngine, gremlinQueryBindings, gremlinTagFilterQuery, false);
+            if (CollectionUtils.isNotEmpty(guids)) {
+                gremlinQueryBindings.put("guids", guids);
 
-                // Clear prior results
-                entityVertices.clear();
+                try {
+                    AtlasGraph        graph               = context.getGraph();
+                    ScriptEngine      gremlinScriptEngine = graph.getGremlinScriptEngine();
+                    List<AtlasVertex> atlasVertices       = (List<AtlasVertex>) graph.executeGremlinScript(gremlinScriptEngine, gremlinQueryBindings, gremlinTagFilterQuery, false);
 
-                if (CollectionUtils.isNotEmpty(atlasVertices)) {
-                    entityVertices.addAll(atlasVertices);
+                    if (CollectionUtils.isNotEmpty(atlasVertices)) {
+                        entityVertices.addAll(atlasVertices);
+                    }
+                } catch (AtlasBaseException | ScriptException e) {
+                    LOG.warn(e.getMessage(), e);
                 }
-
-            } catch (AtlasBaseException | ScriptException e) {
-                LOG.warn(e.getMessage(), e);
             }
         }
 
diff --git a/repository/src/main/java/org/apache/atlas/discovery/EntitySearchProcessor.java b/repository/src/main/java/org/apache/atlas/discovery/EntitySearchProcessor.java
index f4ac8ab..a4a638a 100644
--- a/repository/src/main/java/org/apache/atlas/discovery/EntitySearchProcessor.java
+++ b/repository/src/main/java/org/apache/atlas/discovery/EntitySearchProcessor.java
@@ -173,12 +173,17 @@
                     CollectionUtils.filter(entityVertices, inMemoryPredicate);
 
                     if (graphQuery != null) {
-                        AtlasGraphQuery guidQuery = context.getGraph().query().in(Constants.GUID_PROPERTY_KEY, getGuids(entityVertices));
-
-                        guidQuery.addConditionsFrom(graphQuery);
+                        Set<String> guids = getGuids(entityVertices);
 
                         entityVertices.clear();
-                        getVertices(guidQuery.vertices().iterator(), entityVertices);
+
+                        if (CollectionUtils.isNotEmpty(guids)) {
+                            AtlasGraphQuery guidQuery = context.getGraph().query().in(Constants.GUID_PROPERTY_KEY, guids);
+
+                            guidQuery.addConditionsFrom(graphQuery);
+
+                            getVertices(guidQuery.vertices().iterator(), entityVertices);
+                        }
                     }
                 } else {
                     Iterator<AtlasVertex> queryResult = graphQuery.vertices(qryOffset, limit).iterator();
@@ -211,12 +216,17 @@
             LOG.debug("==> EntitySearchProcessor.filter({})", entityVertices.size());
         }
 
-        AtlasGraphQuery query = context.getGraph().query().in(Constants.GUID_PROPERTY_KEY, getGuids(entityVertices));
-
-        query.addConditionsFrom(filterGraphQuery);
+        Set<String> guids = getGuids(entityVertices);
 
         entityVertices.clear();
-        getVertices(query.vertices().iterator(), entityVertices);
+
+        if (CollectionUtils.isNotEmpty(guids)) {
+            AtlasGraphQuery query = context.getGraph().query().in(Constants.GUID_PROPERTY_KEY, guids);
+
+            query.addConditionsFrom(filterGraphQuery);
+
+            getVertices(query.vertices().iterator(), entityVertices);
+        }
 
         super.filter(entityVertices);