From 0cccec93f60bd8dd530b924dced3d8de5dcccf3a Mon Sep 17 00:00:00 2001 From: Sarath Subramanian <ssubramanian@hortonworks.com> Date: Thu, 18 May 2017 15:07:30 -0700 Subject: [PATCH] ATLAS-1815: Basic search API might return fewer entities when excludeDeletedEntities=true --- repository/src/main/java/org/apache/atlas/discovery/EntityDiscoveryService.java | 9 ++++++--- repository/src/main/java/org/apache/atlas/util/AtlasGremlin2QueryProvider.java | 2 ++ repository/src/main/java/org/apache/atlas/util/AtlasGremlinQueryProvider.java | 1 + 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/repository/src/main/java/org/apache/atlas/discovery/EntityDiscoveryService.java b/repository/src/main/java/org/apache/atlas/discovery/EntityDiscoveryService.java index 874487c..e6a06c3 100644 --- a/repository/src/main/java/org/apache/atlas/discovery/EntityDiscoveryService.java +++ b/repository/src/main/java/org/apache/atlas/discovery/EntityDiscoveryService.java @@ -324,6 +324,12 @@ public class EntityDiscoveryService implements AtlasDiscoveryService { basicQuery += gremlinQueryProvider.getQuery(AtlasGremlinQuery.BASIC_SEARCH_TYPE_FILTER); } + if (excludeDeletedEntities) { + bindings.put("state", Status.ACTIVE.toString()); + + basicQuery += gremlinQueryProvider.getQuery(AtlasGremlinQuery.BASIC_SEARCH_STATE_FILTER); + } + if (isGuidPrefixSearch) { bindings.put("guid", attrValuePrefix + ".*"); @@ -347,9 +353,6 @@ public class EntityDiscoveryService implements AtlasDiscoveryService { if (firstElement instanceof AtlasVertex) { for (Object element : queryResult) { if (element instanceof AtlasVertex) { - if (skipDeletedEntities(excludeDeletedEntities, (AtlasVertex) element)) { - continue; - } ret.addEntity(entityRetriever.toAtlasEntityHeader((AtlasVertex) element)); } else { diff --git a/repository/src/main/java/org/apache/atlas/util/AtlasGremlin2QueryProvider.java b/repository/src/main/java/org/apache/atlas/util/AtlasGremlin2QueryProvider.java index 139e7c3..1bf0346 100644 --- a/repository/src/main/java/org/apache/atlas/util/AtlasGremlin2QueryProvider.java +++ b/repository/src/main/java/org/apache/atlas/util/AtlasGremlin2QueryProvider.java @@ -69,6 +69,8 @@ public class AtlasGremlin2QueryProvider extends AtlasGremlinQueryProvider { return ".has('__typeName', T.in, typeNames)"; case BASIC_SEARCH_CLASSIFICATION_FILTER: return ".has('__traitNames', T.in, traitNames)"; + case BASIC_SEARCH_STATE_FILTER: + return ".has('__state', state)"; case TO_RANGE_LIST: return " [startIdx..<endIdx].toList()"; case GUID_PREFIX_FILTER: diff --git a/repository/src/main/java/org/apache/atlas/util/AtlasGremlinQueryProvider.java b/repository/src/main/java/org/apache/atlas/util/AtlasGremlinQueryProvider.java index 8fb1793..8481a4f 100644 --- a/repository/src/main/java/org/apache/atlas/util/AtlasGremlinQueryProvider.java +++ b/repository/src/main/java/org/apache/atlas/util/AtlasGremlinQueryProvider.java @@ -58,6 +58,7 @@ public abstract class AtlasGremlinQueryProvider { // Discovery Queries BASIC_SEARCH_TYPE_FILTER, BASIC_SEARCH_CLASSIFICATION_FILTER, + BASIC_SEARCH_STATE_FILTER, TO_RANGE_LIST, GUID_PREFIX_FILTER } -- libgit2 0.27.1