Skip to content

Commit

Permalink
Cherry-pick elastic#12950 to 7.1: Reuse connections in redis info met…
Browse files Browse the repository at this point in the history
…ricset (elastic#12980)

Reuse connections in redis info metricset, and log close
errors at the debug level.

(cherry picked from commit d9e4e9b)
  • Loading branch information
jsoriano committed Jul 23, 2019
1 parent f478d24 commit 598343f
Show file tree
Hide file tree
Showing 4 changed files with 17 additions and 5 deletions.
2 changes: 1 addition & 1 deletion CHANGELOG.next.asciidoc
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ https://github.com/elastic/beats/compare/v7.1.1...7.1[Check the HEAD diff]
- Require certificate authorities, certificate file, and key when SSL is enabled for module http metricset server. {pull}12355[12355]
- In the kibana/stats metricset, only log error (don't also index it) if xpack is enabled. {pull}12353[12353]
- When TLS is configured for the http metricset and a `certificate_authorities` is configured we now default to `required` for the `client_authentication`. {pull}12584[12584]
- Fix connections leak in redis module {pull}12914[12914]
- Fix connections leak in redis module {pull}12914[12914] {pull}12950[12950]

*Packetbeat*

Expand Down
8 changes: 6 additions & 2 deletions metricbeat/module/redis/info/info.go
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,11 @@ func New(base mb.BaseMetricSet) (mb.MetricSet, error) {
// Fetch fetches metrics from Redis by issuing the INFO command.
func (m *MetricSet) Fetch(r mb.ReporterV2) {
conn := m.Connection()
defer conn.Close()
defer func() {
if err := conn.Close(); err != nil {
debugf("failed to release connection: %v", err)
}
}()

// Fetch default INFO.
info, err := redis.FetchRedisInfo("default", conn)
Expand All @@ -80,7 +84,7 @@ func (m *MetricSet) Fetch(r mb.ReporterV2) {
}
}

slowLogLength, err := redis.FetchSlowLogLength(m.Connection())
slowLogLength, err := redis.FetchSlowLogLength(conn)
if err != nil {
logp.Err("Failed to fetch slow log length: %s", err)
return
Expand Down
6 changes: 5 additions & 1 deletion metricbeat/module/redis/key/key.go
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,11 @@ func New(base mb.BaseMetricSet) (mb.MetricSet, error) {
// Fetch fetches information from Redis keys
func (m *MetricSet) Fetch(r mb.ReporterV2) {
conn := m.Connection()
defer conn.Close()
defer func() {
if err := conn.Close(); err != nil {
debugf("failed to release connection: %v", err)
}
}()

for _, p := range m.patterns {
if err := redis.Select(conn, p.Keyspace); err != nil {
Expand Down
6 changes: 5 additions & 1 deletion metricbeat/module/redis/keyspace/keyspace.go
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,11 @@ func New(base mb.BaseMetricSet) (mb.MetricSet, error) {
// Fetch fetches metrics from Redis by issuing the INFO command.
func (m *MetricSet) Fetch(r mb.ReporterV2) {
conn := m.Connection()
defer conn.Close()
defer func() {
if err := conn.Close(); err != nil {
debugf("failed to release connection: %v", err)
}
}()

// Fetch default INFO.
info, err := redis.FetchRedisInfo("keyspace", conn)
Expand Down

0 comments on commit 598343f

Please sign in to comment.