public PartitionedSplitCountTracker createPartitionedSplitCountTracker(TaskId taskId) { requireNonNull(taskId, "taskId is null"); TaskPartitionedSplitCountTracker tracker = new TaskPartitionedSplitCountTracker(taskId); PartitionedSplitCountTracker partitionedSplitCountTracker = new PartitionedSplitCountTracker(tracker::setPartitionedSplitCount); // when partitionedSplitCountTracker is garbage collected, run the cleanup method on the tracker // Note: tracker can not have a reference to partitionedSplitCountTracker finalizerService.addFinalizer(partitionedSplitCountTracker, tracker::cleanup); return partitionedSplitCountTracker; }
@Test public void testMultipleNodes() { FixedCountScheduler nodeScheduler = new FixedCountScheduler( (node, partition, totalPartitions) -> Optional.of(taskFactory.createTableScanTask( new TaskId("test", 1, 1), node, ImmutableList.of(), new PartitionedSplitCountTracker(delta -> {}))), generateRandomNodes(5)); ScheduleResult result = nodeScheduler.schedule(); assertTrue(result.isFinished()); assertTrue(result.getBlocked().isDone()); assertEquals(result.getNewTasks().size(), 5); assertEquals(result.getNewTasks().stream().map(RemoteTask::getNodeId).collect(toImmutableSet()).size(), 5); }
@Test public void testSingleNode() { FixedCountScheduler nodeScheduler = new FixedCountScheduler( (node, partition, totalPartitions) -> Optional.of(taskFactory.createTableScanTask( new TaskId("test", 1, 1), node, ImmutableList.of(), new PartitionedSplitCountTracker(delta -> {}))), generateRandomNodes(1)); ScheduleResult result = nodeScheduler.schedule(); assertTrue(result.isFinished()); assertTrue(result.getBlocked().isDone()); assertEquals(result.getNewTasks().size(), 1); assertTrue(result.getNewTasks().iterator().next().getNodeId().equals("other 0")); }
@Test public void testSingleNode() throws Exception { FixedCountScheduler nodeScheduler = new FixedCountScheduler( (node, partition) -> taskFactory.createTableScanTask( new TaskId(new StageId("test", "1"), "1"), (Node) node, ImmutableList.of(), new PartitionedSplitCountTracker(delta -> { })), generateRandomNodes(1)); ScheduleResult result = nodeScheduler.schedule(); assertTrue(result.isFinished()); assertTrue(result.getBlocked().isDone()); assertEquals(result.getNewTasks().size(), 1); result.getNewTasks().iterator().next().getNodeId().equals("other 0"); }
@Test public void testMultipleNodes() throws Exception { FixedCountScheduler nodeScheduler = new FixedCountScheduler( (node, partition) -> taskFactory.createTableScanTask( new TaskId(new StageId("test", "1"), "1"), (Node) node, ImmutableList.of(), new PartitionedSplitCountTracker(delta -> { })), generateRandomNodes(5)); ScheduleResult result = nodeScheduler.schedule(); assertTrue(result.isFinished()); assertTrue(result.getBlocked().isDone()); assertEquals(result.getNewTasks().size(), 5); assertEquals(result.getNewTasks().stream().map(RemoteTask::getNodeId).collect(toImmutableSet()).size(), 5); }
public PartitionedSplitCountTracker createPartitionedSplitCountTracker(TaskId taskId) { requireNonNull(taskId, "taskId is null"); TaskPartitionedSplitCountTracker tracker = new TaskPartitionedSplitCountTracker(taskId); PartitionedSplitCountTracker partitionedSplitCountTracker = new PartitionedSplitCountTracker(tracker::setPartitionedSplitCount); // when partitionedSplitCountTracker is garbage collected, run the cleanup method on the tracker // Note: tracker can not have a reference to partitionedSplitCountTracker finalizerService.addFinalizer(partitionedSplitCountTracker, tracker::cleanup); return partitionedSplitCountTracker; }
private RemoteTask createRemoteTask(HttpRemoteTaskFactory httpRemoteTaskFactory) { return httpRemoteTaskFactory.createRemoteTask( TEST_SESSION, new TaskId("test", 1, 2), new PrestoNode("node-id", URI.create("http://fake.invalid/"), new NodeVersion("version"), false), TaskTestUtils.PLAN_FRAGMENT, ImmutableMultimap.of(), OptionalInt.empty(), createInitialEmptyOutputBuffers(OutputBuffers.BufferType.BROADCAST), new NodeTaskMap.PartitionedSplitCountTracker(i -> {}), true); }