diff --git a/cmd/root.go b/cmd/root.go index a4ef06d..6c459e5 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -199,8 +199,10 @@ func rootCmdRun(*cobra.Command, []string) { // is that it was running, but we see that the container process is not currently running. if r || (!r && s.IsRunning()) { s.Log().Info("detected server is running, re-attaching to process...") - if err := s.HandlePowerAction(server.PowerActionStart); err != nil { - s.Log().WithField("error", errors.WithStack(err)).Warn("failed to properly start server detected as already running") + + s.SetState(environment.ProcessRunningState) + if err := s.Environment.Attach(); err != nil { + s.Log().WithField("error", errors.WithStack(err)).Warn("failed to attach to running server environment") } return diff --git a/server/loader.go b/server/loader.go index ee1d978..92283ee 100644 --- a/server/loader.go +++ b/server/loader.go @@ -1,6 +1,7 @@ package server import ( + "fmt" "github.com/apex/log" "github.com/creasty/defaults" "github.com/gammazero/workerpool" @@ -27,6 +28,7 @@ func LoadDirectory() error { return errors.New("cannot call LoadDirectory with a non-nil collection") } + log.Info("fetching list of servers from API") configs, rerr, err := api.NewRequester().GetAllServerConfigurations() if err != nil || rerr != nil { if err != nil { @@ -39,10 +41,11 @@ func LoadDirectory() error { log.Debug("retrieving cached server states from disk") states, err := getServerStates() if err != nil { - return errors.WithStack(err) + log.WithField("error", errors.WithStack(err)).Error("failed to retrieve locally cached server states from disk, assuming all servers in offline state") } - log.WithField("total_configs", len(configs)).Debug("looping over received configurations from API") + start := time.Now() + log.WithField("total_configs", len(configs)).Info("processing servers returned by the API") pool := workerpool.New(runtime.NumCPU()) for uuid, data := range configs { @@ -50,7 +53,7 @@ func LoadDirectory() error { data := data pool.Submit(func() { - log.WithField("uuid", uuid).Debug("creating server object from configuration") + log.WithField("server", uuid).Info("creating new server object from API response") s, err := FromConfiguration(data) if err != nil { log.WithField("server", uuid).WithField("error", err).Error("failed to load server, skipping...") @@ -58,8 +61,8 @@ func LoadDirectory() error { } if state, exists := states[s.Id()]; exists { + s.Log().WithField("state", state).Debug("found existing server state in cache file; re-instantiating server state") s.SetState(state) - s.Log().WithField("state", s.GetState()).Debug("loaded server state from cache file") } servers.Add(s) @@ -70,6 +73,9 @@ func LoadDirectory() error { // before continuing. pool.StopWait() + diff := time.Now().Sub(start) + log.WithField("duration", fmt.Sprintf("%s", diff)).Info("finished processing server configurations") + return nil }