Github user arina-ielchiieva commented on a diff in the pull request: https://github.com/apache/drill/pull/1051#discussion_r153458672 --- Diff: exec/java-exec/src/main/java/org/apache/drill/exec/work/foreman/Foreman.java --- @@ -426,48 +413,25 @@ private void runPhysicalPlan(final PhysicalPlan plan) throws ExecutionSetupExcep queryManager.setTotalCost(plan.totalCost()); work.applyPlan(drillbitContext.getPlanReader()); logWorkUnit(work); - admit(work); - queryManager.setQueueName(queryRM.queueName()); - - final List<PlanFragment> planFragments = work.getFragments(); - final PlanFragment rootPlanFragment = work.getRootFragment(); - assert queryId == rootPlanFragment.getHandle().getQueryId(); - drillbitContext.getWorkBus().addFragmentStatusListener(queryId, queryManager.getFragmentStatusListener()); - drillbitContext.getClusterCoordinator().addDrillbitStatusListener(queryManager.getDrillbitStatusListener()); + fragmentsRunner.setPlanFragments(work.getFragments()); + fragmentsRunner.setRootPlanFragment(work.getRootFragment()); + fragmentsRunner.setRootOperator(work.getRootOperator()); --- End diff -- 1. Agree. I will create single function to accept all of these. 2. `work` object is applicable only when we run query / prepared statement / plans. For the cases when run fragment, work object is not used at all [1]. Featured introduced in DRILL-4132 [2]. [1] https://github.com/arina-ielchiieva/drill/blob/master/exec/java-exec/src/main/java/org/apache/drill/exec/work/foreman/Foreman.java#L473 [2] https://issues.apache.org/jira/browse/DRILL-4132
---