diff --git a/repository/src/main/java/org/apache/atlas/discovery/EntityLineageService.java b/repository/src/main/java/org/apache/atlas/discovery/EntityLineageService.java index 7e5fd20992..a881539741 100644 --- a/repository/src/main/java/org/apache/atlas/discovery/EntityLineageService.java +++ b/repository/src/main/java/org/apache/atlas/discovery/EntityLineageService.java @@ -366,7 +366,7 @@ private void traverseEdgesOnDemand(Iterator processEdges, boolean isI } private void traverseEdgesOnDemand(AtlasVertex datasetVertex, boolean isInput, int depth, int level, Set visitedVertices, AtlasLineageOnDemandContext atlasLineageOnDemandContext, AtlasLineageOnDemandInfo ret, String baseGuid, AtomicInteger entitiesTraversed, AtomicInteger traversalOrder, TimeoutTracker timeoutTracker) throws AtlasBaseException { - if (isEntityTraversalLimitReached(entitiesTraversed)) + if (isEntityTraversalLimitReached(entitiesTraversed) || timeoutTracker.hasTimedOut()) return; if (depth != 0) { // base condition of recursion for depth AtlasPerfMetrics.MetricRecorder metricRecorder = RequestContext.get().startMetricRecord("traverseEdgesOnDemand"); @@ -461,6 +461,10 @@ private void traverseEdgesOnDemand(AtlasVertex datasetVertex, boolean isInput, i AtlasEntityHeader traversedEntity = ret.getGuidEntityMap().get(AtlasGraphUtilsV2.getIdFromVertex(entityVertex)); if (traversedEntity != null) traversedEntity.setFinishTime(traversalOrder.get()); + if (timeoutTracker.hasTimedOut()) { + ret.setTraversalTimedOut(true); + return; + } } } } @@ -471,12 +475,6 @@ private void traverseEdgesOnDemand(AtlasVertex datasetVertex, boolean isInput, i } - private void executeCircuitBreaker(AtlasEdge atlasEdge, boolean isInput, AtlasLineageOnDemandContext atlasLineageOnDemandContext, AtlasLineageOnDemandInfo ret, int depth, AtomicInteger entitiesTraversed, Set visitedVertices, TimeoutTracker timeoutTracker) { - // Set timeout flags on the entity - handleHorizontalAndVerticalPagination(atlasEdge, !isInput, atlasLineageOnDemandContext, ret, depth, entitiesTraversed, visitedVertices, timeoutTracker); - ret.setTraversalTimedOut(true); - } - private static void setEntityLimitReachedFlag(boolean isInput, AtlasLineageOnDemandInfo ret) { if (isInput) ret.setUpstreamEntityLimitReached(true);