diff --git a/rest-api/site-agent/pkg/components/managers/workflow/init.go b/rest-api/site-agent/pkg/components/managers/workflow/init.go index 5161477710..4e993ac808 100644 --- a/rest-api/site-agent/pkg/components/managers/workflow/init.go +++ b/rest-api/site-agent/pkg/components/managers/workflow/init.go @@ -66,8 +66,10 @@ func (wflow *API) GetState() []string { strs = append(strs, fmt.Sprintln("Temporal Connection Attempted: ", wt.State.ConnectionAttempted.Load())) strs = append(strs, fmt.Sprintln("Temporal Connection Succeeded: ", wt.State.ConnectionSucc.Load())) strs = append(strs, fmt.Sprintln("Temporal Status: ", computils.CompStatus(wt.State.HealthStatus.Load()).String())) - strs = append(strs, fmt.Sprintln("Temporal Last Error: ", *wt.State.Err)) - strs = append(strs, fmt.Sprintln("Temporal Connection Time: ", wt.State.ConnectionTime)) + errMsg, _ := wt.State.Err.Load().(string) + connectionTime, _ := wt.State.ConnectionTime.Load().(string) + strs = append(strs, fmt.Sprintln("Temporal Last Error: ", errMsg)) + strs = append(strs, fmt.Sprintln("Temporal Connection Time: ", connectionTime)) return strs } diff --git a/rest-api/site-agent/pkg/components/managers/workflow/orchestrator.go b/rest-api/site-agent/pkg/components/managers/workflow/orchestrator.go index 318fa3c087..80fa0ec405 100644 --- a/rest-api/site-agent/pkg/components/managers/workflow/orchestrator.go +++ b/rest-api/site-agent/pkg/components/managers/workflow/orchestrator.go @@ -11,9 +11,6 @@ import ( "os" "time" - "sync/atomic" - "unsafe" - "github.com/rs/zerolog" zlogadapter "logur.dev/adapter/zerolog" "logur.dev/logur" @@ -48,14 +45,14 @@ func Orchestrator() { // keep track how many events we've seen. state.ConnectionAttempted.Inc() - state.ConnectionTime = time.Now().String() + state.ConnectionTime.Store(time.Now().String()) err := workflowOrchestrator() if err != nil { state.HealthStatus.Store(uint64(computils.CompUnhealthy)) tStr := err.Error() - atomic.StorePointer((*unsafe.Pointer)(unsafe.Pointer(&state.Err)), unsafe.Pointer(&tStr)) - log.Error().Msg(*state.Err) + state.Err.Store(tStr) + log.Error().Msg(tStr) } else { // keep track how many succeeded. state.ConnectionSucc.Inc() diff --git a/rest-api/site-agent/pkg/datatypes/managertypes/workflow/workflowtypes.go b/rest-api/site-agent/pkg/datatypes/managertypes/workflow/workflowtypes.go index 364f4f3207..678329f1ad 100644 --- a/rest-api/site-agent/pkg/datatypes/managertypes/workflow/workflowtypes.go +++ b/rest-api/site-agent/pkg/datatypes/managertypes/workflow/workflowtypes.go @@ -4,6 +4,8 @@ package workflowtypes import ( + stdatomic "sync/atomic" + "go.temporal.io/sdk/client" "go.temporal.io/sdk/worker" "go.uber.org/atomic" @@ -18,9 +20,9 @@ type State struct { // HealthStatus current health state HealthStatus atomic.Uint64 // Err is error message - Err *string + Err stdatomic.Value // ConnectionTime time when attempted to connect - ConnectionTime string + ConnectionTime stdatomic.Value } // MgrState - Mgr state