Commit 64c9bde6 by Madhan Neethiraj

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

parent bb189766
...@@ -236,6 +236,10 @@ public class ClassificationSearchProcessor extends SearchProcessor { ...@@ -236,6 +236,10 @@ public class ClassificationSearchProcessor extends SearchProcessor {
// Now filter on the tag attributes // Now filter on the tag attributes
Set<String> guids = getGuids(entityVertices); Set<String> guids = getGuids(entityVertices);
// Clear prior results
entityVertices.clear();
if (CollectionUtils.isNotEmpty(guids)) {
gremlinQueryBindings.put("guids", guids); gremlinQueryBindings.put("guids", guids);
try { try {
...@@ -243,17 +247,14 @@ public class ClassificationSearchProcessor extends SearchProcessor { ...@@ -243,17 +247,14 @@ public class ClassificationSearchProcessor extends SearchProcessor {
ScriptEngine gremlinScriptEngine = graph.getGremlinScriptEngine(); ScriptEngine gremlinScriptEngine = graph.getGremlinScriptEngine();
List<AtlasVertex> atlasVertices = (List<AtlasVertex>) graph.executeGremlinScript(gremlinScriptEngine, gremlinQueryBindings, gremlinTagFilterQuery, false); List<AtlasVertex> atlasVertices = (List<AtlasVertex>) graph.executeGremlinScript(gremlinScriptEngine, gremlinQueryBindings, gremlinTagFilterQuery, false);
// Clear prior results
entityVertices.clear();
if (CollectionUtils.isNotEmpty(atlasVertices)) { if (CollectionUtils.isNotEmpty(atlasVertices)) {
entityVertices.addAll(atlasVertices); entityVertices.addAll(atlasVertices);
} }
} catch (AtlasBaseException | ScriptException e) { } catch (AtlasBaseException | ScriptException e) {
LOG.warn(e.getMessage(), e); LOG.warn(e.getMessage(), e);
} }
} }
}
super.filter(entityVertices); super.filter(entityVertices);
......
...@@ -173,13 +173,18 @@ public class EntitySearchProcessor extends SearchProcessor { ...@@ -173,13 +173,18 @@ public class EntitySearchProcessor extends SearchProcessor {
CollectionUtils.filter(entityVertices, inMemoryPredicate); CollectionUtils.filter(entityVertices, inMemoryPredicate);
if (graphQuery != null) { if (graphQuery != null) {
AtlasGraphQuery guidQuery = context.getGraph().query().in(Constants.GUID_PROPERTY_KEY, getGuids(entityVertices)); Set<String> guids = getGuids(entityVertices);
entityVertices.clear();
if (CollectionUtils.isNotEmpty(guids)) {
AtlasGraphQuery guidQuery = context.getGraph().query().in(Constants.GUID_PROPERTY_KEY, guids);
guidQuery.addConditionsFrom(graphQuery); guidQuery.addConditionsFrom(graphQuery);
entityVertices.clear();
getVertices(guidQuery.vertices().iterator(), entityVertices); getVertices(guidQuery.vertices().iterator(), entityVertices);
} }
}
} else { } else {
Iterator<AtlasVertex> queryResult = graphQuery.vertices(qryOffset, limit).iterator(); Iterator<AtlasVertex> queryResult = graphQuery.vertices(qryOffset, limit).iterator();
...@@ -211,12 +216,17 @@ public class EntitySearchProcessor extends SearchProcessor { ...@@ -211,12 +216,17 @@ public class EntitySearchProcessor extends SearchProcessor {
LOG.debug("==> EntitySearchProcessor.filter({})", entityVertices.size()); LOG.debug("==> EntitySearchProcessor.filter({})", entityVertices.size());
} }
AtlasGraphQuery query = context.getGraph().query().in(Constants.GUID_PROPERTY_KEY, getGuids(entityVertices)); Set<String> guids = getGuids(entityVertices);
entityVertices.clear();
if (CollectionUtils.isNotEmpty(guids)) {
AtlasGraphQuery query = context.getGraph().query().in(Constants.GUID_PROPERTY_KEY, guids);
query.addConditionsFrom(filterGraphQuery); query.addConditionsFrom(filterGraphQuery);
entityVertices.clear();
getVertices(query.vertices().iterator(), entityVertices); getVertices(query.vertices().iterator(), entityVertices);
}
super.filter(entityVertices); super.filter(entityVertices);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment