fix(xray): retry a failed pending-restart instead of dropping the config change

The 30s cron consumed the need-restart flag with IsNeedRestartAndSetFalse before
calling RestartXray and only logged a failure. If RestartXray failed early (a
transient GetXrayConfig DB error) the old process kept running the old config,
the crash detector saw a running process and never retried, and the flag stayed
cleared — so an admin's saved change silently never reached the core. Move the
consume/restart/retry into ApplyPendingRestart, which re-arms the flag on
failure so the next tick retries.
This commit is contained in:
MHSanaei
2026-07-15 03:27:40 +02:00
parent 116ef900d5
commit 40da7fdb76
3 changed files with 38 additions and 6 deletions
+1 -6
View File
@@ -314,12 +314,7 @@ func (s *Server) startTask(restartXray bool) {
// Check if xray needs to be restarted every 30 seconds
_, _ = s.cron.AddFunc(cadenceXrayRestart, func() {
if s.xrayService.IsNeedRestartAndSetFalse() {
err := s.xrayService.RestartXray(false)
if err != nil {
logger.Error("restart xray failed:", err)
}
}
s.xrayService.ApplyPendingRestart()
})
go func() {