public NewExperiment build() { new ExperimentValidator().validateNewExperiment(instance); NewExperiment result = instance; instance = null; return result; } }
public void validateNewExperiment(NewExperiment newExperiment) { validateLabel(newExperiment.getLabel()); validateExperimentStartEnd(newExperiment.getStartTime(), newExperiment.getEndTime()); validateSamplingPercent(newExperiment.getSamplingPercent()); validateExperimentRule(newExperiment.getRule()); validateModelNameNotNullForPersonalizedExperiments(newExperiment.getIsPersonalizationEnabled(), newExperiment.getModelName()); validateDescriptionNotEmpty(newExperiment.getDescription()); }
@Override public Experiment updateExperimentState(Experiment experiment, State state) throws RepositoryException { validator.validateExperiment(experiment); final String SQL = "update experiment " + "set state=? where id=?"; int rowCount = newTransaction().update( SQL, state.toString(), experiment.getID()); if (rowCount > 1) { throw new RepositoryException("Concurrent updates; please retry"); } if (rowCount < 1) { throw new RepositoryException("No rows were updated"); } return experiment; }
/** * {@inheritDoc} */ @Override public void checkStateTransition(Experiment.ID experimentID, Experiment.State currentState, Experiment.State desiredState) { if (desiredState != null && !currentState.equals(desiredState)) { // Throw an exception if the StateTransition is invalid validator.validateStateTransition(currentState, desiredState); /* If moving from a DRAFT state to a RUNNING state a sanity-check is required on the experiment buckets. Fetch the bucket information if the experiment will be (or remain) in an active state (running, paused) because that info is used to create the KV-store entry. * */ if (currentState.equals(DRAFT) && desiredState.equals(RUNNING)) { // Throw an exception if the sanity-check fails BucketList bucketList = buckets.getBuckets(experimentID, false /* don't check experiment again */); validator.validateExperimentBuckets(bucketList.getBuckets()); } } }
validator.validateNewExperiment(newExperiment); try {
validator.validateBucketStateTransition(bucket.getState(), desiredState); validator.validateExperimentBuckets(newBuckets.getBuckets());
if (!changeBucketList.getBuckets().isEmpty()) { allBuckets = buckets.combineOldAndNewBuckets(oldBuckets, changeBucketList); validator.validateExperimentBuckets(allBuckets.getBuckets());
throw new ExperimentNotFoundException(experimentID); validator.ensureStateIsDraft(experiment);
/** * {@inheritDoc} */ @Override public Experiment updateExperimentState(Experiment experiment, State state) { LOGGER.debug("Updating experiment {} state {} ", new Object[]{experiment, state}); validator.validateExperiment(experiment); try { // Note that this timestamp gets serialized as mulliseconds from // the epoch, so timezone is irrelevant final Date NOW = new Date(); experimentAccessor.updateExperiment(state.name(), NOW, experiment.getID().getRawID()); experiment = Experiment.from(experiment).withState(state).build(); // Point the experiment index to this experiment updateExperimentLabelIndex(experiment.getID(), experiment.getApplicationName(), experiment.getLabel(), experiment.getStartTime(), experiment.getEndTime(), experiment.getState()); updateStateIndex(experiment); } catch (Exception e) { LOGGER.error("Error while updating experiment {} state {} ", new Object[]{experiment, state}, e); throw new RepositoryException("Could not update experiment with ID \"" + experiment.getID() + "\"" + " to state " + state.toString(), e); } return experiment; }
public void validateExperiment(Experiment experiment) { Experiment.State state = experiment.getState(); if (state.equals(Experiment.State.DELETED) || state.equals(Experiment.State.TERMINATED)) { return; } validateLabel(experiment.getLabel()); validateExperimentStartEnd(experiment.getStartTime(), experiment.getEndTime()); validateSamplingPercent(experiment.getSamplingPercent()); validateExperimentRule(experiment.getRule()); validateModelNameNotNullForPersonalizedExperiments(experiment.getIsPersonalizationEnabled() , experiment.getModelName()); }
@Override public Experiment updateExperiment(Experiment experiment) throws RepositoryException { validator.validateExperiment(experiment); final String SQL = "update experiment " + "set description=?, sampling_percent=?, state=?, " + "label=?, start_time=?, end_time=?, app_name=? " + "where id=?"; int rowCount = newTransaction().update( SQL, experiment.getDescription() != null ? experiment.getDescription() : "", experiment.getSamplingPercent(), experiment.getState().toString(), experiment.getLabel().toString(), experiment.getStartTime(), experiment.getEndTime(), experiment.getApplicationName().toString(), experiment.getID()); if (rowCount > 1) { throw new RepositoryException("Concurrent updates; please retry"); } if (rowCount < 1) { throw new RepositoryException("No rows were updated"); } return experiment; }
public NewExperiment build() { new ExperimentValidator().validateNewExperiment(instance); NewExperiment result = instance; instance = null; return result; } }
public void validateNewExperiment(NewExperiment newExperiment) { validateLabel(newExperiment.getLabel()); validateExperimentStartEnd(newExperiment.getStartTime(), newExperiment.getEndTime()); validateSamplingPercent(newExperiment.getSamplingPercent()); validateExperimentRule(newExperiment.getRule()); validateModelNameNotNullForPersonalizedExperiments(newExperiment.getIsPersonalizationEnabled(), newExperiment.getModelName()); validateDescriptionNotEmpty(newExperiment.getDescription()); }
validator.validateExperiment(experiment);
public void validateExperiment(Experiment experiment) { Experiment.State state = experiment.getState(); if (state.equals(Experiment.State.DELETED) || state.equals(Experiment.State.TERMINATED)) { return; } validateLabel(experiment.getLabel()); validateExperimentStartEnd(experiment.getStartTime(), experiment.getEndTime()); validateSamplingPercent(experiment.getSamplingPercent()); validateExperimentRule(experiment.getRule()); validateModelNameNotNullForPersonalizedExperiments(experiment.getIsPersonalizationEnabled() , experiment.getModelName()); }
validator.validateExperiment(experiment);