diff --git a/x-pack/elastic-agent/CHANGELOG.asciidoc b/x-pack/elastic-agent/CHANGELOG.asciidoc index 619850f4bc8..6a216900089 100644 --- a/x-pack/elastic-agent/CHANGELOG.asciidoc +++ b/x-pack/elastic-agent/CHANGELOG.asciidoc @@ -30,6 +30,7 @@ - Fix incorrect hash when upgrading agent {pull}22322[22322] - Fix refresh of monitoring configuration {pull}23619[23619] - Fixed nil pointer during unenroll {pull}23609[23609] +- Fixed reenroll scenario {pull}23686[23686] ==== New features diff --git a/x-pack/elastic-agent/pkg/agent/application/enroll_cmd.go b/x-pack/elastic-agent/pkg/agent/application/enroll_cmd.go index 7d905b80f8c..fe4cafa7594 100644 --- a/x-pack/elastic-agent/pkg/agent/application/enroll_cmd.go +++ b/x-pack/elastic-agent/pkg/agent/application/enroll_cmd.go @@ -209,6 +209,12 @@ func (c *EnrollCmd) Execute() error { return err } + // clear action store + // fail only if file exists and there was a failure + if err := os.Remove(info.AgentStateStoreFile()); !os.IsNotExist(err) { + return err + } + return nil } diff --git a/x-pack/elastic-agent/pkg/agent/application/upgrade/upgrade.go b/x-pack/elastic-agent/pkg/agent/application/upgrade/upgrade.go index 3734e0ea3e0..9b7a271a9d7 100644 --- a/x-pack/elastic-agent/pkg/agent/application/upgrade/upgrade.go +++ b/x-pack/elastic-agent/pkg/agent/application/upgrade/upgrade.go @@ -247,19 +247,25 @@ func rollbackInstall(ctx context.Context, hash string) { } func copyActionStore(newHash string) error { - currentActionStorePath := info.AgentActionStoreFile() + storePaths := []string{info.AgentActionStoreFile(), info.AgentStateStoreFile()} - newHome := filepath.Join(filepath.Dir(paths.Home()), fmt.Sprintf("%s-%s", agentName, newHash)) - newActionStorePath := filepath.Join(newHome, filepath.Base(currentActionStorePath)) + for _, currentActionStorePath := range storePaths { + newHome := filepath.Join(filepath.Dir(paths.Home()), fmt.Sprintf("%s-%s", agentName, newHash)) + newActionStorePath := filepath.Join(newHome, filepath.Base(currentActionStorePath)) - currentActionStore, err := ioutil.ReadFile(currentActionStorePath) - if os.IsNotExist(err) { - // nothing to copy - return nil - } - if err != nil { - return err + currentActionStore, err := ioutil.ReadFile(currentActionStorePath) + if os.IsNotExist(err) { + // nothing to copy + continue + } + if err != nil { + return err + } + + if err := ioutil.WriteFile(newActionStorePath, currentActionStore, 0600); err != nil { + return err + } } - return ioutil.WriteFile(newActionStorePath, currentActionStore, 0600) + return nil }