Skip to content

Commit

Permalink
Reuse connections in redis info metricset (elastic#12950) (elastic#12979
Browse files Browse the repository at this point in the history
)

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 19, 2019
1 parent ece8a77 commit 2bd83c3
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 @@ -40,7 +40,7 @@ https://github.com/elastic/beats/compare/v7.2.0...7.2[Check the HEAD diff]

*Metricbeat*

- 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 @@ -51,7 +51,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) error {
conn := m.Connection()
defer conn.Close()
defer func() {
if err := conn.Close(); err != nil {
m.Logger().Debug(errors.Wrapf(err, "failed to release connection"))
}
}()

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

slowLogLength, err := redis.FetchSlowLogLength(m.Connection())
slowLogLength, err := redis.FetchSlowLogLength(conn)
if err != nil {
return errors.Wrap(err, "failed to fetch slow log length")

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 @@ -70,7 +70,11 @@ func New(base mb.BaseMetricSet) (mb.MetricSet, error) {
// Fetch fetches information from Redis keys
func (m *MetricSet) Fetch(r mb.ReporterV2) error {
conn := m.Connection()
defer conn.Close()
defer func() {
if err := conn.Close(); err != nil {
m.Logger().Debug(errors.Wrapf(err, "failed to release connection"))
}
}()

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 @@ -49,7 +49,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) error {
conn := m.Connection()
defer conn.Close()
defer func() {
if err := conn.Close(); err != nil {
m.Logger().Debug(errors.Wrapf(err, "failed to release connection"))
}
}()

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

0 comments on commit 2bd83c3

Please sign in to comment.