Repository: atlas Updated Branches: refs/heads/master bb1897663 -> 64c9bde66
ATLAS-2082: basic-search fails when in-memory filters all results from index-query Project: http://git-wip-us.apache.org/repos/asf/atlas/repo Commit: http://git-wip-us.apache.org/repos/asf/atlas/commit/64c9bde6 Tree: http://git-wip-us.apache.org/repos/asf/atlas/tree/64c9bde6 Diff: http://git-wip-us.apache.org/repos/asf/atlas/diff/64c9bde6 Branch: refs/heads/master Commit: 64c9bde668b52c6f621c19110f2da0a0907704d8 Parents: bb18976 Author: Madhan Neethiraj <[email protected]> Authored: Wed Aug 23 09:57:46 2017 -0700 Committer: Madhan Neethiraj <[email protected]> Committed: Wed Aug 23 10:59:23 2017 -0700 ---------------------------------------------------------------------- .../ClassificationSearchProcessor.java | 25 ++++++++++--------- .../atlas/discovery/EntitySearchProcessor.java | 26 ++++++++++++++------ 2 files changed, 31 insertions(+), 20 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/atlas/blob/64c9bde6/repository/src/main/java/org/apache/atlas/discovery/ClassificationSearchProcessor.java ---------------------------------------------------------------------- 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 @@ public class ClassificationSearchProcessor extends SearchProcessor { // 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); } } http://git-wip-us.apache.org/repos/asf/atlas/blob/64c9bde6/repository/src/main/java/org/apache/atlas/discovery/EntitySearchProcessor.java ---------------------------------------------------------------------- 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 @@ public class EntitySearchProcessor extends SearchProcessor { 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 @@ public class EntitySearchProcessor extends SearchProcessor { 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);
