mirror of
https://github.com/VictoriaMetrics/VictoriaMetrics.git
synced 2024-11-21 14:44:00 +00:00
vendor: update github.com/VictoriaMetrics/metrics from v1.34.1 to v1.35.0
Fix potential memory leaks across VictoriaMetrics codebase after metrics.UnregisterSet(s) call
because of missing s.UnregisterAllMetrics() call.
This is a follow-up for 6a6e34ab8e
. It is OK if some vmauth metrics
aren't visible for a few microseconds when the previous metrics are unregistered and new metrics
weren't registered yet.
Updates https://github.com/VictoriaMetrics/VictoriaMetrics/issues/6247
Updates https://github.com/VictoriaMetrics/VictoriaMetrics/issues/4690
Updates https://github.com/VictoriaMetrics/VictoriaMetrics/pull/6252
Updates https://github.com/VictoriaMetrics/VictoriaMetrics/pull/5805
This commit is contained in:
parent
c995ccad93
commit
202e5704e6
9 changed files with 19 additions and 21 deletions
|
@ -80,7 +80,7 @@ func Init() {
|
||||||
|
|
||||||
// Stop stops vlstorage.
|
// Stop stops vlstorage.
|
||||||
func Stop() {
|
func Stop() {
|
||||||
metrics.UnregisterSet(storageMetrics)
|
metrics.UnregisterSet(storageMetrics, true)
|
||||||
storageMetrics = nil
|
storageMetrics = nil
|
||||||
|
|
||||||
strg.MustClose()
|
strg.MustClose()
|
||||||
|
|
|
@ -696,22 +696,15 @@ func loadAuthConfig() (bool, error) {
|
||||||
}
|
}
|
||||||
logger.Infof("loaded information about %d users from -auth.config=%q", len(m), *authConfigPath)
|
logger.Infof("loaded information about %d users from -auth.config=%q", len(m), *authConfigPath)
|
||||||
|
|
||||||
prevAc := authConfig.Load()
|
acPrev := authConfig.Load()
|
||||||
if prevAc != nil {
|
if acPrev != nil {
|
||||||
metrics.UnregisterSet(prevAc.ms)
|
metrics.UnregisterSet(acPrev.ms, true)
|
||||||
}
|
}
|
||||||
metrics.RegisterSet(ac.ms)
|
metrics.RegisterSet(ac.ms)
|
||||||
|
|
||||||
authConfig.Store(ac)
|
authConfig.Store(ac)
|
||||||
authConfigData.Store(&data)
|
authConfigData.Store(&data)
|
||||||
authUsers.Store(&m)
|
authUsers.Store(&m)
|
||||||
if prevAc != nil {
|
|
||||||
// explicilty unregister metrics, since all summary type metrics
|
|
||||||
// are registered at global state of metrics package
|
|
||||||
// and must be removed from it to release memory.
|
|
||||||
// Metrics must be unregistered only after atomic.Value.Store calls above
|
|
||||||
// Otherwise it may lead to metric gaps, since UnregisterAllMetrics is slow operation
|
|
||||||
prevAc.ms.UnregisterAllMetrics()
|
|
||||||
}
|
|
||||||
|
|
||||||
return true, nil
|
return true, nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -240,7 +240,7 @@ func GetSeriesCount(deadline uint64) (uint64, error) {
|
||||||
// Stop stops the vmstorage
|
// Stop stops the vmstorage
|
||||||
func Stop() {
|
func Stop() {
|
||||||
// deregister storage metrics
|
// deregister storage metrics
|
||||||
metrics.UnregisterSet(storageMetrics)
|
metrics.UnregisterSet(storageMetrics, true)
|
||||||
storageMetrics = nil
|
storageMetrics = nil
|
||||||
|
|
||||||
logger.Infof("gracefully closing the storage at %s", *DataPath)
|
logger.Infof("gracefully closing the storage at %s", *DataPath)
|
||||||
|
|
2
go.mod
2
go.mod
|
@ -9,7 +9,7 @@ require (
|
||||||
github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.3.2
|
github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.3.2
|
||||||
github.com/VictoriaMetrics/easyproto v0.1.4
|
github.com/VictoriaMetrics/easyproto v0.1.4
|
||||||
github.com/VictoriaMetrics/fastcache v1.12.2
|
github.com/VictoriaMetrics/fastcache v1.12.2
|
||||||
github.com/VictoriaMetrics/metrics v1.34.1
|
github.com/VictoriaMetrics/metrics v1.35.0
|
||||||
github.com/VictoriaMetrics/metricsql v0.76.0
|
github.com/VictoriaMetrics/metricsql v0.76.0
|
||||||
github.com/aws/aws-sdk-go-v2 v1.30.1
|
github.com/aws/aws-sdk-go-v2 v1.30.1
|
||||||
github.com/aws/aws-sdk-go-v2/config v1.27.24
|
github.com/aws/aws-sdk-go-v2/config v1.27.24
|
||||||
|
|
4
go.sum
4
go.sum
|
@ -72,8 +72,8 @@ github.com/VictoriaMetrics/easyproto v0.1.4/go.mod h1:QlGlzaJnDfFd8Lk6Ci/fuLxfTo
|
||||||
github.com/VictoriaMetrics/fastcache v1.12.2 h1:N0y9ASrJ0F6h0QaC3o6uJb3NIZ9VKLjCM7NQbSmF7WI=
|
github.com/VictoriaMetrics/fastcache v1.12.2 h1:N0y9ASrJ0F6h0QaC3o6uJb3NIZ9VKLjCM7NQbSmF7WI=
|
||||||
github.com/VictoriaMetrics/fastcache v1.12.2/go.mod h1:AmC+Nzz1+3G2eCPapF6UcsnkThDcMsQicp4xDukwJYI=
|
github.com/VictoriaMetrics/fastcache v1.12.2/go.mod h1:AmC+Nzz1+3G2eCPapF6UcsnkThDcMsQicp4xDukwJYI=
|
||||||
github.com/VictoriaMetrics/metrics v1.34.0/go.mod h1:r7hveu6xMdUACXvB8TYdAj8WEsKzWB0EkpJN+RDtOf8=
|
github.com/VictoriaMetrics/metrics v1.34.0/go.mod h1:r7hveu6xMdUACXvB8TYdAj8WEsKzWB0EkpJN+RDtOf8=
|
||||||
github.com/VictoriaMetrics/metrics v1.34.1 h1:7EUEObv45ekfyY6PWat0K/ytluZ4q6aujzXN3g41g/A=
|
github.com/VictoriaMetrics/metrics v1.35.0 h1:xWImz8UTwyhGZAzueTHFgYe4bnKbXCaLWBq2JBj7EzI=
|
||||||
github.com/VictoriaMetrics/metrics v1.34.1/go.mod h1:r7hveu6xMdUACXvB8TYdAj8WEsKzWB0EkpJN+RDtOf8=
|
github.com/VictoriaMetrics/metrics v1.35.0/go.mod h1:r7hveu6xMdUACXvB8TYdAj8WEsKzWB0EkpJN+RDtOf8=
|
||||||
github.com/VictoriaMetrics/metricsql v0.76.0 h1:hl7vqJqyH2d8zKImzalkFrkFiD5q4ACF8gl3s86DqKA=
|
github.com/VictoriaMetrics/metricsql v0.76.0 h1:hl7vqJqyH2d8zKImzalkFrkFiD5q4ACF8gl3s86DqKA=
|
||||||
github.com/VictoriaMetrics/metricsql v0.76.0/go.mod h1:1g4hdCwlbJZ851PU9VN65xy9Rdlzupo6fx3SNZ8Z64U=
|
github.com/VictoriaMetrics/metricsql v0.76.0/go.mod h1:1g4hdCwlbJZ851PU9VN65xy9Rdlzupo6fx3SNZ8Z64U=
|
||||||
github.com/VividCortex/ewma v1.2.0 h1:f58SaIzcDXrSy3kWaHNvuJgJ3Nmz59Zji6XoJR/q1ow=
|
github.com/VividCortex/ewma v1.2.0 h1:f58SaIzcDXrSy3kWaHNvuJgJ3Nmz59Zji6XoJR/q1ow=
|
||||||
|
|
|
@ -71,7 +71,7 @@ func NewDeduplicator(pushFunc PushFunc, dedupInterval time.Duration, dropLabels
|
||||||
|
|
||||||
// MustStop stops d.
|
// MustStop stops d.
|
||||||
func (d *Deduplicator) MustStop() {
|
func (d *Deduplicator) MustStop() {
|
||||||
metrics.UnregisterSet(d.ms)
|
metrics.UnregisterSet(d.ms, true)
|
||||||
d.ms = nil
|
d.ms = nil
|
||||||
|
|
||||||
close(d.stopCh)
|
close(d.stopCh)
|
||||||
|
|
|
@ -323,7 +323,7 @@ func (a *Aggregators) MustStop() {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
metrics.UnregisterSet(a.ms)
|
metrics.UnregisterSet(a.ms, true)
|
||||||
a.ms = nil
|
a.ms = nil
|
||||||
|
|
||||||
for _, aggr := range a.as {
|
for _, aggr := range a.as {
|
||||||
|
|
9
vendor/github.com/VictoriaMetrics/metrics/metrics.go
generated
vendored
9
vendor/github.com/VictoriaMetrics/metrics/metrics.go
generated
vendored
|
@ -55,11 +55,16 @@ func RegisterSet(s *Set) {
|
||||||
|
|
||||||
// UnregisterSet stops exporting metrics for the given s via global WritePrometheus() call.
|
// UnregisterSet stops exporting metrics for the given s via global WritePrometheus() call.
|
||||||
//
|
//
|
||||||
// Call s.UnregisterAllMetrics() after unregistering s if it is no longer used.
|
// If destroySet is set to true, then s.UnregisterAllMetrics() is called on s after unregistering it,
|
||||||
func UnregisterSet(s *Set) {
|
// so s becomes destroyed. Otherwise the s can be registered again in the set by passing it to RegisterSet().
|
||||||
|
func UnregisterSet(s *Set, destroySet bool) {
|
||||||
registeredSetsLock.Lock()
|
registeredSetsLock.Lock()
|
||||||
delete(registeredSets, s)
|
delete(registeredSets, s)
|
||||||
registeredSetsLock.Unlock()
|
registeredSetsLock.Unlock()
|
||||||
|
|
||||||
|
if destroySet {
|
||||||
|
s.UnregisterAllMetrics()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// RegisterMetricsWriter registers writeMetrics callback for including metrics in the output generated by WritePrometheus.
|
// RegisterMetricsWriter registers writeMetrics callback for including metrics in the output generated by WritePrometheus.
|
||||||
|
|
2
vendor/modules.txt
vendored
2
vendor/modules.txt
vendored
|
@ -115,7 +115,7 @@ github.com/VictoriaMetrics/easyproto
|
||||||
# github.com/VictoriaMetrics/fastcache v1.12.2
|
# github.com/VictoriaMetrics/fastcache v1.12.2
|
||||||
## explicit; go 1.13
|
## explicit; go 1.13
|
||||||
github.com/VictoriaMetrics/fastcache
|
github.com/VictoriaMetrics/fastcache
|
||||||
# github.com/VictoriaMetrics/metrics v1.34.1
|
# github.com/VictoriaMetrics/metrics v1.35.0
|
||||||
## explicit; go 1.17
|
## explicit; go 1.17
|
||||||
github.com/VictoriaMetrics/metrics
|
github.com/VictoriaMetrics/metrics
|
||||||
# github.com/VictoriaMetrics/metricsql v0.76.0
|
# github.com/VictoriaMetrics/metricsql v0.76.0
|
||||||
|
|
Loading…
Reference in a new issue