From 0e212c93f05fc174a6ad47bafb25975e0b95b892 Mon Sep 17 00:00:00 2001 From: Victor Colombo Date: Mon, 22 May 2023 18:10:09 +0100 Subject: [PATCH] fix: Rollback to previous cluster when cluster set fails (#631) ## Description: When `kurtosis cluster set` fails, we wrongly call `kurtosis cluster set` on `clusterName` again instead of rolling back to `clusterPriorToUpdate` as intended. ## Is this change user facing? YES ## References (if applicable): --- cli/cli/commands/cluster/set/set.go | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/cli/cli/commands/cluster/set/set.go b/cli/cli/commands/cluster/set/set.go index 5cb7f54119..7f1168e270 100644 --- a/cli/cli/commands/cluster/set/set.go +++ b/cli/cli/commands/cluster/set/set.go @@ -49,11 +49,6 @@ func run(ctx context.Context, flags *flags.ParsedFlags, args *args.ParsedArgs) e return stacktrace.Propagate(err, "'%s' is not a valid name for Kurtosis cluster", clusterName) } - engineManager, err := engine_manager.NewEngineManager(ctx) - if err != nil { - return stacktrace.Propagate(err, "An error occurred creating an engine manager.") - } - clusterUpdateSuccessful := false clusterSettingStore := kurtosis_cluster_setting.GetKurtosisClusterSettingStore() clusterPriorToUpdate, err := clusterSettingStore.GetClusterSetting() @@ -74,15 +69,19 @@ func run(ctx context.Context, flags *flags.ParsedFlags, args *args.ParsedArgs) e if clusterUpdateSuccessful { return } - if err = clusterSettingStore.SetClusterSetting(clusterName); err != nil { + if err = clusterSettingStore.SetClusterSetting(clusterPriorToUpdate); err != nil { logrus.Errorf("An error happened updating cluster to '%s'. KUrtosis tried to roll back to the "+ "previous value '%s' but the roll back failed. You have to roll back manually running "+ "'kurtosis %s %s %s'", clusterName, clusterPriorToUpdate, command_str_consts.ClusterCmdStr, command_str_consts.ClusterSetCmdStr, clusterPriorToUpdate) } }() - logrus.Infof("Clustet set to '%s', Kurtosis engine will now be restarted", clusterName) + logrus.Infof("Cluster set to '%s', Kurtosis engine will now be restarted", clusterName) + engineManager, err := engine_manager.NewEngineManager(ctx) + if err != nil { + return stacktrace.Propagate(err, "An error occurred creating an engine manager.") + } // We try to do our best to restart an engine on the same version the current on is on _, engineClientCloseFunc, restartEngineErr := engineManager.RestartEngineIdempotently(ctx, logrus.InfoLevel, noEngineVersion, restartEngineOnSameVersionIfAnyRunning) if restartEngineErr != nil {