Skip to content

Commit d4fa214

Browse files
author
dingxin05
committed
FIX: native ipmi client not close
Signed-off-by: dingxin05 <dingxin05@baidu.com>
1 parent 2c21be3 commit d4fa214

8 files changed

+40
-0
lines changed

collector_bmc_native.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,11 @@ func (c BMCNativeCollector) Collect(_ freeipmi.Result, ch chan<- prometheus.Metr
5252
if err != nil {
5353
return 0, err
5454
}
55+
defer func() {
56+
if closeErr := client.Close(context.TODO()); closeErr != nil {
57+
logger.Debug("Failed to close IPMI client", "target", targetName(target.host), "error", closeErr)
58+
}
59+
}()
5560
res, err := client.GetDeviceID(context.TODO())
5661
if err != nil {
5762
return 0, err

collector_bmc_watchdog_native.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,11 @@ func (c BMCWatchdogNativeCollector) Collect(_ freeipmi.Result, ch chan<- prometh
9999
if err != nil {
100100
return 0, err
101101
}
102+
defer func() {
103+
if closeErr := client.Close(context.TODO()); closeErr != nil {
104+
logger.Debug("Failed to close IPMI client", "target", targetName(target.host), "error", closeErr)
105+
}
106+
}()
102107
res, err := client.GetWatchdogTimer(context.TODO())
103108
if err != nil {
104109
return 0, err

collector_chassis_native.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,11 @@ func (c ChassisNativeCollector) Collect(_ freeipmi.Result, ch chan<- prometheus.
6262
if err != nil {
6363
return 0, err
6464
}
65+
defer func() {
66+
if closeErr := client.Close(context.TODO()); closeErr != nil {
67+
logger.Debug("Failed to close IPMI client", "target", targetName(target.host), "error", closeErr)
68+
}
69+
}()
6570
res, err := client.GetChassisStatus(context.TODO())
6671
if err != nil {
6772
return 0, err

collector_dcmi_native.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,11 @@ func (c DCMINativeCollector) Collect(_ freeipmi.Result, ch chan<- prometheus.Met
5050
if err != nil {
5151
return 0, err
5252
}
53+
defer func() {
54+
if closeErr := client.Close(context.TODO()); closeErr != nil {
55+
logger.Debug("Failed to close IPMI client", "target", targetName(target.host), "error", closeErr)
56+
}
57+
}()
5358
res, err := client.GetDCMIPowerReading(context.TODO())
5459
if err != nil {
5560
logger.Error("Failed to collect DCMI data", "target", targetName(target.host), "error", err)

collector_ipmi_native.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,11 @@ func (c IPMINativeCollector) Collect(_ freeipmi.Result, ch chan<- prometheus.Met
150150
if err != nil {
151151
return 0, err
152152
}
153+
defer func() {
154+
if closeErr := client.Close(context.TODO()); closeErr != nil {
155+
logger.Debug("Failed to close IPMI client", "target", targetName(target.host), "error", closeErr)
156+
}
157+
}()
153158
res, err := client.GetSensors(context.TODO(), filter)
154159
if err != nil {
155160
return 0, err

collector_sel_events_native.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,11 @@ func (c SELEventsNativeCollector) Collect(_ freeipmi.Result, ch chan<- prometheu
6464
if err != nil {
6565
return 0, err
6666
}
67+
defer func() {
68+
if closeErr := client.Close(context.TODO()); closeErr != nil {
69+
logger.Debug("Failed to close IPMI client", "target", targetName(target.host), "error", closeErr)
70+
}
71+
}()
6772
res, err := client.GetSELEntries(context.TODO(), 0)
6873
if err != nil {
6974
return 0, err

collector_sel_native.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,11 @@ func (c SELNativeCollector) Collect(_ freeipmi.Result, ch chan<- prometheus.Metr
5757
if err != nil {
5858
return 0, err
5959
}
60+
defer func() {
61+
if closeErr := client.Close(context.TODO()); closeErr != nil {
62+
logger.Debug("Failed to close IPMI client", "target", targetName(target.host), "error", closeErr)
63+
}
64+
}()
6065
res, err := client.GetSELInfo(context.TODO())
6166
if err != nil {
6267
return 0, err

collector_sm_lan_mode_native.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,11 @@ func (c SMLANModeNativeCollector) Collect(_ freeipmi.Result, ch chan<- prometheu
5252
if err != nil {
5353
return 0, err
5454
}
55+
defer func() {
56+
if closeErr := client.Close(context.TODO()); closeErr != nil {
57+
logger.Debug("Failed to close IPMI client", "target", targetName(target.host), "error", closeErr)
58+
}
59+
}()
5560
if _, err := client.SetSessionPrivilegeLevel(context.TODO(), ipmi.PrivilegeLevelAdministrator); err != nil {
5661
logger.Error("Failed to set privilege level to admin", "target", targetName(target.host))
5762
return 0, fmt.Errorf("failed to set privilege level to admin")

0 commit comments

Comments
 (0)