File tree Expand file tree Collapse file tree
SingularityService/src/main/java/com/hubspot/singularity Expand file tree Collapse file tree Original file line number Diff line number Diff 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}
Original file line number Diff line number Diff 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 ,
You can’t perform that action at this time.
0 commit comments