@@ -64,15 +64,16 @@ func (m *NodeRecordManager) Restart() {
6464// For backward compatibility
6565var (
6666 defaultManager * NodeRecordManager
67- setupOnce sync.Once
6867 restartMu sync.Mutex
6968)
7069
7170// InitDefaultManager initializes the default NodeRecordManager
7271func InitDefaultManager () {
73- setupOnce .Do (func () {
74- defaultManager = NewNodeRecordManager (context .Background ())
75- })
72+ if defaultManager != nil {
73+ defaultManager .Stop ()
74+ }
75+ defaultManager = NewNodeRecordManager (context .Background ())
76+ defaultManager .Start ()
7677}
7778
7879// RestartRetrieveNodesStatus restarts the node status retrieval process
@@ -83,6 +84,7 @@ func RestartRetrieveNodesStatus() {
8384
8485 if defaultManager == nil {
8586 InitDefaultManager ()
87+ return
8688 }
8789
8890 defaultManager .Restart ()
@@ -95,6 +97,22 @@ func StartRetrieveNodesStatus(ctx context.Context) *NodeRecordManager {
9597 return manager
9698}
9799
100+ // StartDefaultManager starts the default node status retrieval manager
101+ // This should be called at system startup
102+ func StartDefaultManager () {
103+ restartMu .Lock ()
104+ defer restartMu .Unlock ()
105+
106+ if defaultManager != nil {
107+ logger .Info ("DefaultManager already running, restarting..." )
108+ defaultManager .Restart ()
109+ return
110+ }
111+
112+ logger .Info ("Starting default NodeRecordManager..." )
113+ InitDefaultManager ()
114+ }
115+
98116func RetrieveNodesStatus (ctx context.Context ) {
99117 logger .Info ("RetrieveNodesStatus start" )
100118 defer logger .Info ("RetrieveNodesStatus exited" )
@@ -130,8 +148,8 @@ func RetrieveNodesStatus(ctx context.Context) {
130148 if err := nodeAnalyticRecord (e , ctx ); err != nil {
131149 logger .Error (err )
132150 mutex .Lock ()
133- if NodeMap [env .ID ] != nil {
134- NodeMap [env .ID ].Status = false
151+ if NodeMap [e .ID ] != nil {
152+ NodeMap [e .ID ].Status = false
135153 }
136154 mutex .Unlock ()
137155 select {
0 commit comments