Skip to content

Commit f257650

Browse files
author
William Hou
committed
add unit test for retrying tasks with new deploys
1 parent 41be52d commit f257650

2 files changed

Lines changed: 89 additions & 1 deletion

File tree

SingularityService/src/main/java/com/hubspot/singularity/scheduler/SingularityScheduler.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1016,7 +1016,7 @@ private Optional<PendingType> handleCompletedTaskWithStatistics(
10161016
if (!isDeployInUse(requestDeployState, taskId.getDeployId(), true)) {
10171017
// failed tasks with remaining retries cannot short circuit here
10181018
if (
1019-
state.equals(ExtendedTaskState.TASK_FAILED) &&
1019+
!state.equals(ExtendedTaskState.TASK_FINISHED) &&
10201020
(
10211021
deployStatistics.getNumSequentialRetries() <
10221022
request.getNumRetriesOnFailure().orElse(0)

SingularityService/src/test/java/com/hubspot/singularity/scheduler/SingularitySchedulerTest.java

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1255,6 +1255,94 @@ public void testRetriesWithOverrides() {
12551255
Assertions.assertTrue(taskManager.getActiveTaskIds().isEmpty());
12561256
}
12571257

1258+
@Test
1259+
public void testRetriesWithNewDeploys() {
1260+
SingularityRequestBuilder bldr = new SingularityRequestBuilder(
1261+
requestId,
1262+
RequestType.RUN_ONCE
1263+
);
1264+
request = bldr.setNumRetriesOnFailure(Optional.of(2)).build();
1265+
saveRequest(request);
1266+
1267+
deployResource.deploy(
1268+
new SingularityDeployRequest(
1269+
new SingularityDeployBuilder(requestId, "d1")
1270+
.setCommand(Optional.of("cmd"))
1271+
.build(),
1272+
Optional.empty(),
1273+
Optional.empty()
1274+
),
1275+
singularityUser
1276+
);
1277+
1278+
scheduler.drainPendingQueue();
1279+
deployChecker.checkDeploys();
1280+
resourceOffers();
1281+
1282+
Assertions.assertEquals(1, taskManager.getActiveTaskIds().size());
1283+
1284+
deployResource.deploy(
1285+
new SingularityDeployRequest(
1286+
new SingularityDeployBuilder(requestId, "d2")
1287+
.setCommand(Optional.of("cmd"))
1288+
.build(),
1289+
Optional.empty(),
1290+
Optional.empty()
1291+
),
1292+
singularityUser
1293+
);
1294+
1295+
statusUpdate(taskManager.getActiveTasks().get(0), TaskState.TASK_LOST);
1296+
1297+
scheduler.drainPendingQueue();
1298+
deployChecker.checkDeploys();
1299+
resourceOffers();
1300+
1301+
Assertions.assertEquals(1, taskManager.getActiveTaskIds().size());
1302+
Assertions.assertEquals("d2", taskManager.getActiveTaskIds().get(0).getDeployId());
1303+
1304+
deployResource.deploy(
1305+
new SingularityDeployRequest(
1306+
new SingularityDeployBuilder(requestId, "d3")
1307+
.setCommand(Optional.of("cmd"))
1308+
.build(),
1309+
Optional.empty(),
1310+
Optional.empty()
1311+
),
1312+
singularityUser
1313+
);
1314+
1315+
statusUpdate(taskManager.getActiveTasks().get(0), TaskState.TASK_LOST);
1316+
1317+
scheduler.drainPendingQueue();
1318+
deployChecker.checkDeploys();
1319+
resourceOffers();
1320+
1321+
Assertions.assertEquals(1, taskManager.getActiveTaskIds().size());
1322+
Assertions.assertEquals("d3", taskManager.getActiveTaskIds().get(0).getDeployId());
1323+
1324+
deployResource.deploy(
1325+
new SingularityDeployRequest(
1326+
new SingularityDeployBuilder(requestId, "d4")
1327+
.setCommand(Optional.of("cmd"))
1328+
.build(),
1329+
Optional.empty(),
1330+
Optional.empty()
1331+
),
1332+
singularityUser
1333+
);
1334+
1335+
statusUpdate(taskManager.getActiveTasks().get(0), TaskState.TASK_LOST);
1336+
1337+
scheduler.drainPendingQueue();
1338+
deployChecker.checkDeploys();
1339+
resourceOffers();
1340+
1341+
// TODO - new deploys have new deploy statistics, so we lose track of the # of retries
1342+
Assertions.assertEquals(1, taskManager.getActiveTaskIds().size());
1343+
Assertions.assertEquals("d4", taskManager.getActiveTaskIds().get(0).getDeployId());
1344+
}
1345+
12581346
/* @Test
12591347
public void testCooldownAfterSequentialFailures() {
12601348
initRequest();

0 commit comments

Comments
 (0)