Class DynamicFilterService


  • @ThreadSafe
    public class DynamicFilterService
    extends Object
    • Method Detail

      • stop

        @PreDestroy
        public void stop()
      • removeQuery

        public void removeQuery​(QueryId queryId)
      • isCollectingTaskNeeded

        public boolean isCollectingTaskNeeded​(QueryId queryId,
                                              PlanFragment plan)
        Dynamic filters are collected in same stage as the join operator. This can result in deadlock for source stage joins and connectors that wait for dynamic filters before generating splits (probe splits might be blocked on dynamic filters which require at least one probe task in order to be collected). To overcome this issue an initial task is created for source stages running broadcast join operator. This task allows for dynamic filters collection without any probe side splits being scheduled.
      • unblockStageDynamicFilters

        public void unblockStageDynamicFilters​(QueryId queryId,
                                               PlanFragment plan)
        Join build source tasks might become blocked waiting for join stage to collect build data. In such case dynamic filters must be unblocked (and probe split generation resumed) for source stage containing joins to allow build source tasks to flush data and complete.
      • stageCannotScheduleMoreTasks

        public void stageCannotScheduleMoreTasks​(StageId stageId,
                                                 int numberOfTasks)