@@ -138,6 +138,12 @@ func NewMetrics(port uint16, logLevel log.Level, version string) (*Metrics, erro
138
138
}
139
139
140
140
func (m * Metrics ) setNewClient () error {
141
+ if m .client != nil {
142
+ err := m .client .Close ()
143
+ if err != nil {
144
+ log .Error ("Error closing old client" , "error" , err )
145
+ }
146
+ }
141
147
client , err := rpc .NewClient (rpc .ConnectionModeWebsocket , rpc .WithAutoConfig (), rpc .WithBaseURL (& url.URL {
142
148
Scheme : "wss" ,
143
149
Host : viper .GetString ("hostname" ),
@@ -353,7 +359,6 @@ func (m *Metrics) OpenWebsocket() error {
353
359
for {
354
360
// If we don't get any events for 5 minutes, we'll reset the connection
355
361
time .Sleep (10 * time .Second )
356
-
357
362
if m .lastReceive .Before (time .Now ().Add (- 5 * time .Minute )) {
358
363
cancel ()
359
364
log .Info ("Websocket connection seems down. Recreating..." )
@@ -372,7 +377,7 @@ func (m *Metrics) OpenWebsocket() error {
372
377
373
378
// Got the new connection open, so stop the loop on the old connection
374
379
// since we called this function again and a new loop was created
375
- break
380
+ return
376
381
}
377
382
}
378
383
}()
@@ -382,9 +387,7 @@ func (m *Metrics) OpenWebsocket() error {
382
387
383
388
// CloseWebsocket closes the websocket connection
384
389
func (m * Metrics ) CloseWebsocket () error {
385
- // @TODO reenable once fixed in the upstream dep
386
- //return m.client.DaemonService.CloseConnection()
387
- return nil
390
+ return m .client .Close ()
388
391
}
389
392
390
393
// StartServer starts the metrics server
0 commit comments