Specify the maximum amount of time a task should run |
You want to limit how long a task runs.
Set the TaskExecutionTimeout option on the job to the maximum amount of time for which a task should run. The value is expected to be in milliseconds.
If a task runs longer than the time specified, the task will be canceled and its task status will be TIMED_OUT. The host process will be terminated immediately.
package stkparallelcomputingserversdk.howto; import agi.parallel.client.ClusterJobScheduler; import agi.parallel.client.IJobScheduler; import agi.parallel.client.Job; import agi.parallel.infrastructure.Task; public class SpecifyHowLongTaskRuns { public static void main(String[] args) { try (IJobScheduler scheduler = new ClusterJobScheduler("localhost")) { scheduler.connect(); Job job = scheduler.createJob(); // For example, specify to let the tasks run for 20 seconds. job.setTaskExecutionTimeout(20_000); Task task = new LongRunningTask(); job.addTask(task); job.submit(); job.waitUntilDone(); System.out.println("TaskStatus = " + task.getTaskStatus()); } /* * The output of the application should resemble: * TaskStatus = TIMED_OUT. */ } private static class LongRunningTask extends Task { @Override public void execute() { // For example, sleep forever. If TaskExecutionTimeout was not specified, this // task would run forever. try { Thread.sleep(Long.MAX_VALUE); } catch (InterruptedException e) { e.printStackTrace(); } } } }
By default a task can run indefinitely until it completes or is canceled. This behavior can be changed for scenarios where the task can run for a variable amount of time and a hard limit on the maximum time it can run is needed. This problem arises often when working with unpredictable data sets.
STK Parallel Computing Server 2.9 API for Java