From 15013b3f67a69d55635485a54f34d207a50ef65e Mon Sep 17 00:00:00 2001 From: riteshmodi Date: Tue, 1 Dec 2020 16:13:50 +0100 Subject: [PATCH] Fetch active experiment id for given experiment label --- .../assignment/impl/AssignmentsImpl.java | 2 +- .../impl/CassandraExperimentRepository.java | 22 +++++++++++++------ 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/modules/assignment/src/main/java/com/intuit/wasabi/assignment/impl/AssignmentsImpl.java b/modules/assignment/src/main/java/com/intuit/wasabi/assignment/impl/AssignmentsImpl.java index 9da296059..ecba633a1 100644 --- a/modules/assignment/src/main/java/com/intuit/wasabi/assignment/impl/AssignmentsImpl.java +++ b/modules/assignment/src/main/java/com/intuit/wasabi/assignment/impl/AssignmentsImpl.java @@ -959,7 +959,7 @@ protected Experiment getExperiment(Application.Name applicationName, Experiment. if (prioritizedExperimentListOptional.isPresent()) { //Iterate as per experiment priority and look for the matching experiment by their label for (PrioritizedExperiment prioritizedExperiment : prioritizedExperimentListOptional.get().getPrioritizedExperiments()) { - if (experimentLabel.equals(prioritizedExperiment.getLabel())) { + if (experimentLabel.equals(prioritizedExperiment.getLabel()) && prioritizedExperiment.getState().isActiveState()) { //Upon match, get the complete experiment object from cache result = metadataCache.getExperimentById(prioritizedExperiment.getID()).orElse(null); break; diff --git a/modules/repository-datastax/src/main/java/com/intuit/wasabi/repository/cassandra/impl/CassandraExperimentRepository.java b/modules/repository-datastax/src/main/java/com/intuit/wasabi/repository/cassandra/impl/CassandraExperimentRepository.java index 6c0259f33..ab60aa2d1 100644 --- a/modules/repository-datastax/src/main/java/com/intuit/wasabi/repository/cassandra/impl/CassandraExperimentRepository.java +++ b/modules/repository-datastax/src/main/java/com/intuit/wasabi/repository/cassandra/impl/CassandraExperimentRepository.java @@ -333,16 +333,24 @@ protected Experiment internalGetExperiment(Application.Name appName, Experiment experiment = null; try { - ExperimentByAppNameLabel experimentAppLabel = experimentLabelIndexAccessor - .getExperimentBy(appName.toString(), - experimentLabel.toString()).one(); - if (experimentAppLabel != null) { - com.intuit.wasabi.repository.cassandra.pojo.Experiment experimentPojo = experimentAccessor - .getExperimentById(experimentAppLabel.getId()).one(); - experiment = ExperimentHelper.makeExperiment(experimentPojo); + Result result = experimentLabelIndexAccessor + .getExperimentBy(appName.toString(), + experimentLabel.toString()); + for(ExperimentByAppNameLabel experimentAppLabel: result.all()){ + if (experimentAppLabel != null) { + // Need to iterate here as well + com.intuit.wasabi.repository.cassandra.pojo.Experiment experimentPojo = experimentAccessor + .getExperimentById(experimentAppLabel.getId()).one(); + experiment = ExperimentHelper.makeExperiment(experimentPojo); + if(experiment.getState().isActiveState()){ + break; + } + } } + + } catch (Exception e) { LOGGER.error("Error while getting experiment by app {} with label {} ", new Object[]{appName, experimentLabel}, e);