Skip to content

Commit 5fc18fc

Browse files
author
Rosie Ellis
committed
Mutate request instances based on existing request
1 parent 70b724e commit 5fc18fc

2 files changed

Lines changed: 34 additions & 4 deletions

File tree

SingularityService/src/main/java/com/hubspot/singularity/config/SingularityConfiguration.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -453,6 +453,8 @@ public class SingularityConfiguration extends Configuration {
453453

454454
private boolean skipPersistingTooLongTaskIds = false;
455455

456+
private boolean allowSettingRequestInstances = false;
457+
456458
public long getAskDriverToKillTasksAgainAfterMillis() {
457459
return askDriverToKillTasksAgainAfterMillis;
458460
}
@@ -2119,4 +2121,12 @@ public boolean skipPersistingTooLongTaskIds() {
21192121
public void setSkipPersistingTooLongTaskIds(boolean skipPersistingTooLongTaskIds) {
21202122
this.skipPersistingTooLongTaskIds = skipPersistingTooLongTaskIds;
21212123
}
2124+
2125+
public boolean allowSettingRequestInstances() {
2126+
return allowSettingRequestInstances;
2127+
}
2128+
2129+
public void setAllowSettingRequestInstances(boolean allowSettingRequestInstances) {
2130+
this.allowSettingRequestInstances = allowSettingRequestInstances;
2131+
}
21222132
}

SingularityService/src/main/java/com/hubspot/singularity/data/SingularityValidator.java

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -230,10 +230,30 @@ public SingularityRequest checkSingularityRequest(
230230
request.getId().length(),
231231
request.getId()
232232
);
233-
checkBadRequest(
234-
!request.getInstances().isPresent() || request.getInstances().get() > 0,
235-
"Instances must be greater than 0"
236-
);
233+
234+
if (singularityConfiguration.allowSettingRequestInstances()) {
235+
checkBadRequest(
236+
(
237+
!existingRequest.flatMap(SingularityRequest::getInstances).isPresent() &&
238+
!request.getInstances().isPresent()
239+
) ||
240+
request.getInstances().get() > 0,
241+
"Instances must be greater than 0"
242+
);
243+
244+
if (
245+
existingRequest.flatMap(SingularityRequest::getInstances).isPresent() &&
246+
!request.getInstances().isPresent()
247+
) {
248+
request =
249+
request.toBuilder().setInstances(existingRequest.get().getInstances()).build();
250+
}
251+
} else {
252+
checkBadRequest(
253+
!request.getInstances().isPresent() || request.getInstances().get() > 0,
254+
"Instances must be greater than 0"
255+
);
256+
}
237257

238258
checkBadRequest(
239259
request.getInstancesSafe() <= maxInstancesPerRequest,

0 commit comments

Comments
 (0)