@@ -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