Skip to content

Commit 7043fb1

Browse files
committed
Deduplicate cluster connection: create once and reuse for key checks and key groups
1 parent 4b2055a commit 7043fb1

File tree

1 file changed

+11
-22
lines changed

1 file changed

+11
-22
lines changed

exporter/exporter.go

Lines changed: 11 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -846,21 +846,19 @@ func (e *Exporter) scrapeRedisHost(ch chan<- prometheus.Metric) error {
846846
e.extractLatencyMetrics(ch, infoAll, c)
847847
}
848848

849+
// For key-based operations, use cluster connection if in cluster mode
850+
keyConn, keyConnErr := e.getKeyOperationConnection(c)
851+
if keyConnErr != nil {
852+
log.Errorf("failed to get key operation connection: %s", keyConnErr)
853+
} else if keyConn != c {
854+
defer keyConn.Close()
855+
}
856+
849857
// skip these metrics for master if SkipCheckKeysForRoleMaster is set
850858
// (can help with reducing workload on the master node)
851859
log.Debugf("checkKeys metric collection for role: %s SkipCheckKeysForRoleMaster flag: %#v", role, e.options.SkipCheckKeysForRoleMaster)
852860
if role == InstanceRoleSlave || !e.options.SkipCheckKeysForRoleMaster {
853-
// For key-based operations, use cluster connection if in cluster mode
854-
keyConn, err := e.getKeyOperationConnection(c)
855-
if err != nil {
856-
log.Errorf("failed to get key operation connection: %s", err)
857-
} else {
858-
defer func() {
859-
if keyConn != c {
860-
keyConn.Close()
861-
}
862-
}()
863-
861+
if keyConnErr == nil {
864862
if err := e.extractCheckKeyMetrics(ch, keyConn); err != nil {
865863
log.Errorf("extractCheckKeyMetrics() err: %s", err)
866864
}
@@ -875,17 +873,8 @@ func (e *Exporter) scrapeRedisHost(ch chan<- prometheus.Metric) error {
875873

876874
e.extractSlowLogMetrics(ch, c)
877875

878-
// Key groups also need cluster connection for key operations
879-
keyGroupConn, err := e.getKeyOperationConnection(c)
880-
if err != nil {
881-
log.Errorf("failed to get key operation connection for key groups: %s", err)
882-
} else {
883-
defer func() {
884-
if keyGroupConn != c {
885-
keyGroupConn.Close()
886-
}
887-
}()
888-
e.extractKeyGroupMetrics(ch, keyGroupConn, dbCount)
876+
if keyConnErr == nil {
877+
e.extractKeyGroupMetrics(ch, keyConn, dbCount)
889878
}
890879

891880
if strings.Contains(infoAll, "# Sentinel") {

0 commit comments

Comments
 (0)