Skip to content

Commit b70dc80

Browse files
committed
Try to fix the upgrade bug
1 parent ff0c10f commit b70dc80

File tree

3 files changed

+20
-2
lines changed

3 files changed

+20
-2
lines changed

internal/pkg/agent/application/upgrade/rollback.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ type RollbackSettings struct {
4444
skipCleanup bool
4545
skipRestart bool
4646
preRestartHook RollbackHook
47+
removeMarker bool
4748
}
4849

4950
func newRollbackSettings(opts ...RollbackOpt) *RollbackSettings {
@@ -68,6 +69,10 @@ func (r *RollbackSettings) SetPreRestartHook(preRestartHook RollbackHook) {
6869
r.preRestartHook = preRestartHook
6970
}
7071

72+
func (r *RollbackSettings) SetRemoveMarker(removeMarker bool) {
73+
r.removeMarker = removeMarker
74+
}
75+
7176
func RollbackWithOpts(ctx context.Context, log *logger.Logger, c client.Client, topDirPath string, prevVersionedHome string, prevHash string, opts ...RollbackOpt) error {
7277

7378
settings := newRollbackSettings(opts...)
@@ -122,7 +127,7 @@ func RollbackWithOpts(ctx context.Context, log *logger.Logger, c client.Client,
122127
}
123128

124129
// cleanup everything except version we're rolling back into
125-
return Cleanup(log, topDirPath, prevVersionedHome, prevHash, false, true)
130+
return Cleanup(log, topDirPath, prevVersionedHome, prevHash, settings.removeMarker, true)
126131
}
127132

128133
// Cleanup removes all artifacts and files related to a specified version.

internal/pkg/agent/application/upgrade/rollback_opts.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ type RollbackOptionSetter interface {
1616
SetSkipCleanup(skipCleanup bool)
1717
SetSkipRestart(skipRestart bool)
1818
SetPreRestartHook(preRestartHook RollbackHook)
19+
SetRemoveMarker(removeMarker bool)
1920
}
2021

2122
type RollbackOption func(ros RollbackOptionSetter)

internal/pkg/agent/cmd/watch.go

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ import (
1313

1414
"github.com/spf13/cobra"
1515

16+
semver "github.com/elastic/elastic-agent/pkg/version"
17+
1618
"github.com/elastic/elastic-agent-libs/logp"
1719
"github.com/elastic/elastic-agent-libs/logp/configure"
1820
"github.com/elastic/elastic-agent/pkg/control/v2/client"
@@ -215,7 +217,17 @@ func watchCmd(log *logp.Logger, topDir string, cfg *configuration.UpgradeWatcher
215217
log.Error("Error detected, proceeding to rollback: %v", err)
216218

217219
upgradeDetails.SetStateWithReason(details.StateRollback, details.ReasonWatchFailed)
218-
err = installModifier.Rollback(ctx, log, client.New(), paths.Top(), marker.PrevVersionedHome, marker.PrevHash)
220+
var opts []upgrade.RollbackOption
221+
previousVersion, versionParseErr := semver.ParseVersion(marker.PrevVersion)
222+
if versionParseErr != nil {
223+
return fmt.Errorf("could not parse previous version %s: %w", marker.PrevVersion, versionParseErr)
224+
}
225+
if previousVersion.Less(*semver.NewParsedSemVer(9, 2, 0, "", "")) {
226+
opts = append(opts, func(ros upgrade.RollbackOptionSetter) {
227+
ros.SetRemoveMarker(true)
228+
})
229+
}
230+
err = installModifier.Rollback(ctx, log, client.New(), paths.Top(), marker.PrevVersionedHome, marker.PrevHash, opts...)
219231
if err != nil {
220232
log.Error("rollback failed", err)
221233
upgradeDetails.Fail(err)

0 commit comments

Comments
 (0)