From 1ea2cd5407df39447fc8c5543237624c704210bd Mon Sep 17 00:00:00 2001 From: Lisheng Zheng Date: Wed, 16 Sep 2020 16:07:07 +0800 Subject: [PATCH] feat(experiment): Add a check before deletion (#1223) (#11) * feat(experiment): Add a check before deletion Signed-off-by: Ce Gao * fix: Delete all trials Signed-off-by: Ce Gao * feat: Implement in v1beta1 Signed-off-by: Ce Gao Co-authored-by: whalecold --- .../experiment/experiment_controller.go | 12 ++++++++++-- .../experiment/experiment_controller.go | 12 ++++++++++-- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/pkg/controller.v1alpha3/experiment/experiment_controller.go b/pkg/controller.v1alpha3/experiment/experiment_controller.go index 2829dca1d5e..a6ea2f20e49 100644 --- a/pkg/controller.v1alpha3/experiment/experiment_controller.go +++ b/pkg/controller.v1alpha3/experiment/experiment_controller.go @@ -357,7 +357,7 @@ func (r *ReconcileExperiment) createTrials(instance *experimentsv1alpha3.Experim func (r *ReconcileExperiment) deleteTrials(instance *experimentsv1alpha3.Experiment, trials []trialsv1alpha3.Trial, - deleteCount int32) error { + expectedDeletions int32) error { logger := log.WithValues("Experiment", types.NamespacedName{Name: instance.GetName(), Namespace: instance.GetNamespace()}) trialSlice := trials @@ -366,7 +366,15 @@ func (r *ReconcileExperiment) deleteTrials(instance *experimentsv1alpha3.Experim After(trialSlice[j].CreationTimestamp.Time) }) - for i := 0; i < int(deleteCount); i++ { + expected := int(expectedDeletions) + actual := len(trialSlice) + // If the number of trials < expected, we delete all we have. + if actual < expected { + logger.Info("deleteTrials does not find enough trials, we will delete all trials instead", + "expectedDeletions", expected, "trials", actual) + expected = actual + } + for i := 0; i < expected; i++ { if err := r.Delete(context.TODO(), &trialSlice[i]); err != nil { logger.Error(err, "Trial Delete error") return err diff --git a/pkg/controller.v1beta1/experiment/experiment_controller.go b/pkg/controller.v1beta1/experiment/experiment_controller.go index 1fc4ec2ef3d..a10960f82d2 100644 --- a/pkg/controller.v1beta1/experiment/experiment_controller.go +++ b/pkg/controller.v1beta1/experiment/experiment_controller.go @@ -372,7 +372,7 @@ func (r *ReconcileExperiment) createTrials(instance *experimentsv1beta1.Experime func (r *ReconcileExperiment) deleteTrials(instance *experimentsv1beta1.Experiment, trials []trialsv1beta1.Trial, - deleteCount int32) error { + expectedDeletions int32) error { logger := log.WithValues("Experiment", types.NamespacedName{Name: instance.GetName(), Namespace: instance.GetNamespace()}) trialSlice := trials @@ -381,7 +381,15 @@ func (r *ReconcileExperiment) deleteTrials(instance *experimentsv1beta1.Experime After(trialSlice[j].CreationTimestamp.Time) }) - for i := 0; i < int(deleteCount); i++ { + expected := int(expectedDeletions) + actual := len(trialSlice) + // If the number of trials < expected, we delete all we have. + if actual < expected { + logger.Info("deleteTrials does not find enough trials, we will delete all trials instead", + "expectedDeletions", expected, "trials", actual) + expected = actual + } + for i := 0; i < expected; i++ { if err := r.Delete(context.TODO(), &trialSlice[i]); err != nil { logger.Error(err, "Trial Delete error") return err