@@ -64,15 +64,16 @@ func (m *NodeRecordManager) Restart() {
64
64
// For backward compatibility
65
65
var (
66
66
defaultManager * NodeRecordManager
67
- setupOnce sync.Once
68
67
restartMu sync.Mutex
69
68
)
70
69
71
70
// InitDefaultManager initializes the default NodeRecordManager
72
71
func 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 ()
76
77
}
77
78
78
79
// RestartRetrieveNodesStatus restarts the node status retrieval process
@@ -83,6 +84,7 @@ func RestartRetrieveNodesStatus() {
83
84
84
85
if defaultManager == nil {
85
86
InitDefaultManager ()
87
+ return
86
88
}
87
89
88
90
defaultManager .Restart ()
@@ -95,6 +97,22 @@ func StartRetrieveNodesStatus(ctx context.Context) *NodeRecordManager {
95
97
return manager
96
98
}
97
99
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
+
98
116
func RetrieveNodesStatus (ctx context.Context ) {
99
117
logger .Info ("RetrieveNodesStatus start" )
100
118
defer logger .Info ("RetrieveNodesStatus exited" )
@@ -130,8 +148,8 @@ func RetrieveNodesStatus(ctx context.Context) {
130
148
if err := nodeAnalyticRecord (e , ctx ); err != nil {
131
149
logger .Error (err )
132
150
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
135
153
}
136
154
mutex .Unlock ()
137
155
select {
0 commit comments