@JsonIgnore public int getInstancesSafe() { return getInstances().or(1); }
System.currentTimeMillis(), scaleRequest, oldRequest.getInstances(), scaleRequest.getActionId().or(UUID.randomUUID().toString()), scaleRequest.getBounce())); } else { requestManager.deleteExpiringObject(SingularityExpiringScale.class, requestId); mailer.sendRequestScaledMail(newRequest, Optional.of(scaleRequest), oldRequest.getInstances(), user.getEmail());
checkBadRequest(!request.getInstances().isPresent() || request.getInstances().get() > 0, "Instances must be greater than 0"); checkBadRequest(request.getInstancesSafe() <= maxInstancesPerRequest, "Instances (%s) be greater than %s (maxInstancesPerRequest in mesos configuration)", request.getInstancesSafe(), maxInstancesPerRequest); checkBadRequest(request.getInstances().or(1) == 1, "Scheduler requests can not be ran on more than one instance");
private boolean isTooManyInstancesForRequest(SingularityTaskRequest taskRequest, List<SingularityTaskId> activeTaskIdsForRequest) { if (taskRequest.getRequest().getRequestType() == RequestType.ON_DEMAND) { int maxActiveOnDemandTasks = taskRequest.getRequest().getInstances().or(configuration.getMaxActiveOnDemandTasksPerRequest()); if (maxActiveOnDemandTasks > 0) { int activeTasksForRequest = activeTaskIdsForRequest.size(); LOG.debug("Running {} instances for request {}. Max is {}", activeTasksForRequest, taskRequest.getRequest().getId(), maxActiveOnDemandTasks); if (activeTasksForRequest >= maxActiveOnDemandTasks) { return true; } } } return false; } }
if (request.getInstances().isPresent() && (activeTasks.size() + pendingTasks.size() < request.getInstances().get())) { pendingType = PendingType.ONEOFF; } else {
@Override protected void handleExpiringObject(SingularityExpiringScale expiringObject, SingularityRequestWithState requestWithState, String message) { final SingularityRequest oldRequest = requestWithState.getRequest(); final SingularityRequest newRequest = oldRequest.toBuilder().setInstances(expiringObject.getRevertToInstances()).build(); try { Optional<SingularityBounceRequest> maybeBounceRequest = Optional.absent(); if (expiringObject.getBounce().or(false) || newRequest.getBounceAfterScale().or(false)) { LOG.info("Attempting to bounce request {} after expiring scale", newRequest.getId()); Optional<String> maybeActiveDeployId = deployManager.getInUseDeployId(newRequest.getId()); if (maybeActiveDeployId.isPresent()) { maybeBounceRequest = Optional.of(SingularityBounceRequest.defaultRequest()); } else { LOG.debug("No active deploy id present for request {}, not bouncing after expiring scale", newRequest.getId()); } } requestHelper.updateRequest(newRequest, Optional.of(oldRequest), requestWithState.getState(), Optional.of(RequestHistoryType.SCALE_REVERTED), expiringObject.getUser(), Optional.<Boolean>absent(), Optional.of(message), maybeBounceRequest); mailer.sendRequestScaledMail(newRequest, Optional.<SingularityScaleRequest>absent(), oldRequest.getInstances(), expiringObject.getUser()); } catch (WebApplicationException wae) { LOG.error("While trying to apply {} for {}", expiringObject, expiringObject.getRequestId(), wae); } }
System.currentTimeMillis(), scaleRequest, oldRequest.getInstances(), scaleRequest.getActionId().or(UUID.randomUUID().toString()), scaleRequest.getBounce())); } else { requestManager.deleteExpiringObject(SingularityExpiringScale.class, requestId); mailer.sendRequestScaledMail(newRequest, Optional.of(scaleRequest), oldRequest.getInstances(), user.getEmail());
} else if (request.isOneOff()) { pendingType = PendingType.ONEOFF; if (request.getInstances().isPresent()) { checkRateLimited( activeTasks.size() + pendingTasks.size() < request.getInstances().get(), "No more than %s tasks allowed to run concurrently for request %s (%s active, %s pending)", request.getInstances().get(), request, activeTasks.size(), pendingTasks.size());
checkBadRequest(!request.getInstances().isPresent() || request.getInstances().get() > 0, "Instances must be greater than 0"); checkBadRequest(request.getInstancesSafe() <= maxInstancesPerRequest, "Instances (%s) be greater than %s (maxInstancesPerRequest in mesos configuration)", request.getInstancesSafe(), maxInstancesPerRequest); checkBadRequest(request.getInstances().or(1) == 1, "Scheduler requests can not be ran on more than one instance");
private boolean isTooManyInstancesForRequest(SingularityTaskRequest taskRequest, List<SingularityTaskId> activeTaskIdsForRequest) { if (taskRequest.getRequest().getRequestType() == RequestType.ON_DEMAND) { int maxActiveOnDemandTasks = taskRequest.getRequest().getInstances().or(configuration.getMaxActiveOnDemandTasksPerRequest()); if (maxActiveOnDemandTasks > 0) { int activeTasksForRequest = activeTaskIdsForRequest.size(); LOG.debug("Running {} instances for request {}. Max is {}", activeTasksForRequest, taskRequest.getRequest().getId(), maxActiveOnDemandTasks); if (activeTasksForRequest >= maxActiveOnDemandTasks) { return true; } } } return false; } }
if (request.getInstances().isPresent() && (activeTasks.size() + pendingTasks.size() < request.getInstances().get())) { pendingType = PendingType.ONEOFF; } else {
@Override protected void handleExpiringObject(SingularityExpiringScale expiringObject, SingularityRequestWithState requestWithState, String message) { final SingularityRequest oldRequest = requestWithState.getRequest(); final SingularityRequest newRequest = oldRequest.toBuilder().setInstances(expiringObject.getRevertToInstances()).build(); try { Optional<SingularityBounceRequest> maybeBounceRequest = Optional.absent(); if (expiringObject.getBounce().or(false) || newRequest.getBounceAfterScale().or(false)) { LOG.info("Attempting to bounce request {} after expiring scale", newRequest.getId()); Optional<String> maybeActiveDeployId = deployManager.getInUseDeployId(newRequest.getId()); if (maybeActiveDeployId.isPresent()) { maybeBounceRequest = Optional.of(SingularityBounceRequest.defaultRequest()); } else { LOG.debug("No active deploy id present for request {}, not bouncing after expiring scale", newRequest.getId()); } } requestHelper.updateRequest(newRequest, Optional.of(oldRequest), requestWithState.getState(), Optional.of(RequestHistoryType.SCALE_REVERTED), expiringObject.getUser(), Optional.<Boolean>absent(), Optional.of(message), maybeBounceRequest); mailer.sendRequestScaledMail(newRequest, Optional.<SingularityScaleRequest>absent(), oldRequest.getInstances(), expiringObject.getUser()); } catch (WebApplicationException wae) { LOG.error("While trying to apply {} for {}", expiringObject, expiringObject.getRequestId(), wae); } }
} else if (request.isOneOff()) { pendingType = PendingType.ONEOFF; if (request.getInstances().isPresent()) { checkRateLimited( activeTasks.size() + pendingTasks.size() < request.getInstances().get(), "No more than %s tasks allowed to run concurrently for request %s (%s active, %s pending)", request.getInstances().get(), request, activeTasks.size(), pendingTasks.size());