@@ -10,11 +10,12 @@ import (
1010 "context"
1111 "errors"
1212 "fmt"
13+ "log/slog"
14+ "time"
15+
1316 "github.com/nginx/agent/v3/internal/backoff"
1417 "github.com/nginx/agent/v3/pkg/nginxprocess"
1518 "github.com/shirou/gopsutil/v4/process"
16- "log/slog"
17- "time"
1819
1920 mpi "github.com/nginx/agent/v3/api/grpc/mpi/v1"
2021 "github.com/nginx/agent/v3/internal/config"
@@ -24,6 +25,7 @@ import (
2425type NginxInstanceOperator struct {
2526 executer exec.ExecInterface
2627 logTailer logTailerOperator
28+ agentConfig * config.Config
2729 treatWarningsAsErrors bool
2830}
2931
@@ -34,6 +36,7 @@ func NewInstanceOperator(agentConfig *config.Config) *NginxInstanceOperator {
3436 executer : & exec.Exec {},
3537 logTailer : NewLogTailerOperator (agentConfig ),
3638 treatWarningsAsErrors : agentConfig .DataPlaneConfig .Nginx .TreatWarningsAsErrors ,
39+ agentConfig : agentConfig ,
3740 }
3841}
3942
@@ -56,6 +59,7 @@ func (i *NginxInstanceOperator) Validate(ctx context.Context, instance *mpi.Inst
5659 return nil
5760}
5861
62+ // nolint: revive
5963func (i * NginxInstanceOperator ) Reload (ctx context.Context , instance * mpi.Instance ) error {
6064 var reloadTime time.Time
6165 var errorsFound error
@@ -64,7 +68,7 @@ func (i *NginxInstanceOperator) Reload(ctx context.Context, instance *mpi.Instan
6468
6569 workers := nginxWorkerProcesses (ctx )
6670
67- if workers != nil && len (workers ) > 0 {
71+ if len (workers ) > 0 {
6872 reloadTime = workers [0 ].Created
6973 }
7074
@@ -81,18 +85,18 @@ func (i *NginxInstanceOperator) Reload(ctx context.Context, instance *mpi.Instan
8185 }
8286
8387 backoffSettings := & config.BackOff {
84- InitialInterval : config . DefBackoffInitialInterval ,
85- MaxInterval : config . DefBackoffMaxInterval ,
86- MaxElapsedTime : config . DefBackoffMaxElapsedTime ,
87- RandomizationFactor : config . DefBackoffRandomizationFactor ,
88- Multiplier : config . DefBackoffMultiplier ,
88+ InitialInterval : i . agentConfig . Client . Backoff . InitialInterval ,
89+ MaxInterval : i . agentConfig . Client . Backoff . MaxInterval ,
90+ MaxElapsedTime : i . agentConfig . Client . Backoff . MaxElapsedTime ,
91+ RandomizationFactor : i . agentConfig . Client . Backoff . RandomizationFactor ,
92+ Multiplier : i . agentConfig . Client . Backoff . Multiplier ,
8993 }
9094
91- slog .Info ( "Waiting for NGINX to finish reloading" )
95+ slog .DebugContext ( ctx , "Waiting for NGINX to finish reloading" )
9296 err = backoff .WaitUntil (ctx , backoffSettings , func () error {
9397 currentWorkers := nginxWorkerProcesses (ctx )
94- if currentWorkers == nil || len (currentWorkers ) == 0 {
95- return fmt . Errorf ("waiting for NGINX worker processes" )
98+ if len (currentWorkers ) == 0 {
99+ return errors . New ("waiting for NGINX worker processes" )
96100 }
97101
98102 for _ , worker := range currentWorkers {
@@ -103,8 +107,13 @@ func (i *NginxInstanceOperator) Reload(ctx context.Context, instance *mpi.Instan
103107 }
104108
105109 slog .InfoContext (ctx , "All NGINX workers have been reloaded" , "worker_count" , len (currentWorkers ))
110+
106111 return nil
107112 })
113+ if err != nil {
114+ slog .WarnContext (ctx , "Failed to check if NGINX worker processes have successfully reloaded" ,
115+ "error" , err )
116+ }
108117
109118 slog .InfoContext (ctx , "NGINX reloaded" , "processid" , instance .GetInstanceRuntime ().GetProcessId ())
110119
@@ -129,17 +138,16 @@ func (i *NginxInstanceOperator) Reload(ctx context.Context, instance *mpi.Instan
129138}
130139
131140func nginxWorkerProcesses (ctx context.Context ) []* nginxprocess.Process {
132- slog .Debug ( "Getting NGINX worker processes for NGINX reload" )
141+ slog .DebugContext ( ctx , "Getting NGINX worker processes for NGINX reload" )
133142 var workers []* nginxprocess.Process
134143 processes , err := process .ProcessesWithContext (ctx )
135144 if err != nil {
136- slog .Warn ( "Failed to get processes" , "error" , err )
145+ slog .WarnContext ( ctx , "Failed to get processes" , "error" , err )
137146 }
138147
139148 nginxProcesses , err := nginxprocess .ListWithProcesses (ctx , processes )
140-
141149 if err != nil {
142- slog .Warn ( "Failed to get NGINX processes" , "error" , err )
150+ slog .WarnContext ( ctx , "Failed to get NGINX processes" , "error" , err )
143151 }
144152
145153 for _ , nginxProcess := range nginxProcesses {
0 commit comments