@Override public int compareTo(SingularityPendingTaskId o) { return ComparisonChain.start() .compare(this.getNextRunAt(), o.getNextRunAt()) .compare(this.getRequestId(), o.getRequestId()) .compare(this.getDeployId(), o.getDeployId()) .compare(this.getInstanceNo(), o.getInstanceNo()) .compare(this.getCreatedAt(), o.getCreatedAt()) .compare(this.getPendingType(), o.getPendingType()) .result(); }
public static SingularityScheduledTasksInfo getInfo(List<SingularityPendingTask> pendingTasks, long millisDeltaForLateTasks) { final long now = System.currentTimeMillis(); int numFutureTasks = 0; long maxTaskLag = 0; List<SingularityPendingTaskId> lateTasks = new ArrayList<>(); for (SingularityPendingTask pendingTask : pendingTasks) { long delta = now - pendingTask.getPendingTaskId().getNextRunAt(); if (delta > millisDeltaForLateTasks) { lateTasks.add(pendingTask.getPendingTaskId()); } else { numFutureTasks++; } if (delta > maxTaskLag) { maxTaskLag = delta; } } return new SingularityScheduledTasksInfo(lateTasks, numFutureTasks, maxTaskLag, now); } }
@Timed public List<SingularityTaskRequest> getDueTasks() { final List<SingularityPendingTask> tasks = taskManager.getPendingTasks(); final long now = System.currentTimeMillis(); final List<SingularityPendingTask> dueTasks = Lists.newArrayListWithCapacity(tasks.size()); for (SingularityPendingTask task : tasks) { if (task.getPendingTaskId().getNextRunAt() <= now) { dueTasks.add(task); } } final List<SingularityTaskRequest> dueTaskRequests = taskRequestManager.getTaskRequests(dueTasks); return checkForStaleScheduledTasks(dueTasks, dueTaskRequests); }
private double getWeightedPriority(SingularityTaskRequest taskRequest, long now) { Long overdueMillis = Math.max(now - taskRequest.getPendingTask().getPendingTaskId().getNextRunAt(), 1); Double requestPriority = priorityManager.getTaskPriorityLevelForRequest(taskRequest.getRequest()); return overdueMillis * Math.pow(requestPriority, configuration.getSchedulerPriorityWeightFactor()); }
long taskLagMillis = now - pendingTask.getNextRunAt(); if (taskLagMillis > 0) { numPastDueTasks++;
long dueTime = task.get().getTaskRequest().getPendingTask().getPendingTaskId().getNextRunAt(); long startedAt = taskId.getStartedAt();
final List<SingularityPendingTaskId> pendingTaskIds = taskManager.getPendingTaskIds(); if (pendingTaskIds.get(0).getRequestId().equals(requestEST.getId())) { nextRunEST = pendingTaskIds.get(0).getNextRunAt(); nextRunGMT = pendingTaskIds.get(1).getNextRunAt(); } else { nextRunEST = pendingTaskIds.get(1).getNextRunAt(); nextRunGMT = pendingTaskIds.get(0).getNextRunAt();
@Test public void testWaitAfterTaskWorks() { initRequest(); initFirstDeploy(); SingularityTask task = launchTask(request, firstDeploy, 1, TaskState.TASK_RUNNING); statusUpdate(task, TaskState.TASK_FAILED); scheduler.drainPendingQueue(); Assert.assertTrue(taskManager.getPendingTaskIds().get(0).getNextRunAt() - System.currentTimeMillis() < 1000L); resourceOffers(); long extraWait = 100000L; saveAndSchedule(request.toBuilder().setWaitAtLeastMillisAfterTaskFinishesForReschedule(Optional.of(extraWait)).setInstances(Optional.of(2))); resourceOffers(); statusUpdate(taskManager.getActiveTasks().get(0), TaskState.TASK_FAILED); scheduler.drainPendingQueue(); Assert.assertTrue(taskManager.getPendingTaskIds().get(0).getNextRunAt() - System.currentTimeMillis() > 1000L); Assert.assertEquals(1, taskManager.getActiveTaskIds().size()); }
@Test public void testOnDemandRunNowJobRespectsSpecifiedRunAtTime() { initOnDemandRequest(); initFirstDeploy(); long requestedLaunchTime = System.currentTimeMillis() + TimeUnit.MINUTES.toMillis(10); requestResource.scheduleImmediately( singularityUser, requestId, new SingularityRunNowRequestBuilder() .setRunAt(requestedLaunchTime) .build() ); scheduler.drainPendingQueue(); SingularityPendingTaskId task = taskManager.getPendingTaskIds().get(0); long runAt = task.getNextRunAt(); Assert.assertEquals(requestedLaunchTime, runAt); }
@Test public void testScheduledRunNowJobRespectsSpecifiedRunAtTime() { initScheduledRequest(); initFirstDeploy(); long requestedLaunchTime = System.currentTimeMillis() + TimeUnit.MINUTES.toMillis(10); requestResource.scheduleImmediately( singularityUser, requestId, new SingularityRunNowRequestBuilder() .setRunAt(requestedLaunchTime) .build() ); scheduler.drainPendingQueue(); SingularityPendingTaskId task = taskManager.getPendingTaskIds().get(0); long runAt = task.getNextRunAt(); Assert.assertEquals(requestedLaunchTime, runAt); }
private void relaunchTask(SingularityTask task) { SingularityPendingTask pendingTask = task.getTaskRequest().getPendingTask(); SingularityPendingRequest pendingRequest = new SingularityPendingRequestBuilder() .setRequestId(task.getTaskRequest().getRequest().getId()) .setDeployId(task.getTaskRequest().getDeploy().getId()) .setPendingType(PendingType.RETRY) .setUser(pendingTask.getUser()) .setRunId(pendingTask.getRunId()) .setCmdLineArgsList(pendingTask.getCmdLineArgsList()) .setSkipHealthchecks(pendingTask.getSkipHealthchecks()) .setMessage(pendingTask.getMessage()) .setResources(pendingTask.getResources()) .setS3UploaderAdditionalFiles(pendingTask.getS3UploaderAdditionalFiles()) .setRunAsUserOverride(pendingTask.getRunAsUserOverride()) .setEnvOverrides(pendingTask.getEnvOverrides()) .setExtraArtifacts(pendingTask.getExtraArtifacts()) .setActionId(pendingTask.getActionId()) .setRunAt(pendingTask.getPendingTaskId().getNextRunAt()) .setTimestamp(System.currentTimeMillis()) .build(); requestManager.addToPendingQueue(pendingRequest); }
@Timed public List<SingularityTaskRequest> getDueTasks() { final List<SingularityPendingTask> tasks = taskManager.getPendingTasks(); final long now = System.currentTimeMillis(); final List<SingularityPendingTask> dueTasks = Lists.newArrayListWithCapacity(tasks.size()); for (SingularityPendingTask task : tasks) { if (task.getPendingTaskId().getNextRunAt() <= now) { dueTasks.add(task); } } final List<SingularityTaskRequest> dueTaskRequests = taskRequestManager.getTaskRequests(dueTasks); return checkForStaleScheduledTasks(dueTasks, dueTaskRequests); }
private double getWeightedPriority(SingularityTaskRequest taskRequest, long now) { Long overdueMillis = Math.max(now - taskRequest.getPendingTask().getPendingTaskId().getNextRunAt(), 1); Double requestPriority = priorityManager.getTaskPriorityLevelForRequest(taskRequest.getRequest()); return overdueMillis * Math.pow(requestPriority, configuration.getSchedulerPriorityWeightFactor()); }
long taskLagMillis = now - pendingTask.getNextRunAt(); if (taskLagMillis > 0) { numPastDueTasks++;
long dueTime = task.get().getTaskRequest().getPendingTask().getPendingTaskId().getNextRunAt(); long startedAt = taskId.getStartedAt();
@Test public void testWaitAfterTaskWorks() { initRequest(); initFirstDeploy(); SingularityTask task = launchTask(request, firstDeploy, 1, TaskState.TASK_RUNNING); statusUpdate(task, TaskState.TASK_FAILED); scheduler.drainPendingQueue(); Assert.assertTrue(taskManager.getPendingTaskIds().get(0).getNextRunAt() - System.currentTimeMillis() < 1000L); resourceOffers(); long extraWait = 100000L; saveAndSchedule(request.toBuilder().setWaitAtLeastMillisAfterTaskFinishesForReschedule(Optional.of(extraWait)).setInstances(Optional.of(2))); resourceOffers(); statusUpdate(taskManager.getActiveTasks().get(0), TaskState.TASK_FAILED); scheduler.drainPendingQueue(); Assert.assertTrue(taskManager.getPendingTaskIds().get(0).getNextRunAt() - System.currentTimeMillis() > 1000L); Assert.assertEquals(1, taskManager.getActiveTaskIds().size()); }
final List<SingularityPendingTaskId> pendingTaskIds = taskManager.getPendingTaskIds(); if (pendingTaskIds.get(0).getRequestId().equals(requestEST.getId())) { nextRunEST = pendingTaskIds.get(0).getNextRunAt(); nextRunGMT = pendingTaskIds.get(1).getNextRunAt(); } else { nextRunEST = pendingTaskIds.get(1).getNextRunAt(); nextRunGMT = pendingTaskIds.get(0).getNextRunAt();
@Test public void testOnDemandRunNowJobRespectsSpecifiedRunAtTime() { initOnDemandRequest(); initFirstDeploy(); long requestedLaunchTime = System.currentTimeMillis() + TimeUnit.MINUTES.toMillis(10); requestResource.scheduleImmediately( singularityUser, requestId, new SingularityRunNowRequestBuilder() .setRunAt(requestedLaunchTime) .build() ); scheduler.drainPendingQueue(); SingularityPendingTaskId task = taskManager.getPendingTaskIds().get(0); long runAt = task.getNextRunAt(); Assert.assertEquals(requestedLaunchTime, runAt); }
@Test public void testScheduledRunNowJobRespectsSpecifiedRunAtTime() { initScheduledRequest(); initFirstDeploy(); long requestedLaunchTime = System.currentTimeMillis() + TimeUnit.MINUTES.toMillis(10); requestResource.scheduleImmediately( singularityUser, requestId, new SingularityRunNowRequestBuilder() .setRunAt(requestedLaunchTime) .build() ); scheduler.drainPendingQueue(); SingularityPendingTaskId task = taskManager.getPendingTaskIds().get(0); long runAt = task.getNextRunAt(); Assert.assertEquals(requestedLaunchTime, runAt); }
private void relaunchTask(SingularityTask task) { SingularityPendingTask pendingTask = task.getTaskRequest().getPendingTask(); SingularityPendingRequest pendingRequest = new SingularityPendingRequestBuilder() .setRequestId(task.getTaskRequest().getRequest().getId()) .setDeployId(task.getTaskRequest().getDeploy().getId()) .setPendingType(PendingType.RETRY) .setUser(pendingTask.getUser()) .setRunId(pendingTask.getRunId()) .setCmdLineArgsList(pendingTask.getCmdLineArgsList()) .setSkipHealthchecks(pendingTask.getSkipHealthchecks()) .setMessage(pendingTask.getMessage()) .setResources(pendingTask.getResources()) .setS3UploaderAdditionalFiles(pendingTask.getS3UploaderAdditionalFiles()) .setRunAsUserOverride(pendingTask.getRunAsUserOverride()) .setEnvOverrides(pendingTask.getEnvOverrides()) .setExtraArtifacts(pendingTask.getExtraArtifacts()) .setActionId(pendingTask.getActionId()) .setRunAt(pendingTask.getPendingTaskId().getNextRunAt()) .setTimestamp(System.currentTimeMillis()) .build(); requestManager.addToPendingQueue(pendingRequest); }