mirror of
https://github.com/VictoriaMetrics/VictoriaMetrics.git
synced 2025-03-11 15:34:56 +00:00
app/all: follow-up after 84d710beab
https://github.com/VictoriaMetrics/VictoriaMetrics/issues/5548 Signed-off-by: hagen1778 <roman@victoriametrics.com>
This commit is contained in:
parent
84d710beab
commit
2a7207f38a
12 changed files with 56 additions and 8 deletions
|
@ -59,6 +59,8 @@ func main() {
|
|||
}
|
||||
logger.Infof("successfully shut down the webservice in %.3f seconds", time.Since(startTime).Seconds())
|
||||
|
||||
pushmetrics.Stop()
|
||||
|
||||
vlinsert.Stop()
|
||||
vlselect.Stop()
|
||||
vlstorage.Stop()
|
||||
|
|
|
@ -159,6 +159,7 @@ func main() {
|
|||
logger.Infof("successfully shut down the webservice in %.3f seconds", time.Since(startTime).Seconds())
|
||||
}
|
||||
|
||||
pushmetrics.Stop()
|
||||
promscrape.Stop()
|
||||
|
||||
if len(*influxListenAddr) > 0 {
|
||||
|
|
|
@ -187,6 +187,7 @@ func main() {
|
|||
if err := httpserver.Stop(*httpListenAddr); err != nil {
|
||||
logger.Fatalf("cannot stop the webservice: %s", err)
|
||||
}
|
||||
pushmetrics.Stop()
|
||||
cancel()
|
||||
manager.close()
|
||||
}
|
||||
|
|
|
@ -80,6 +80,7 @@ func main() {
|
|||
if err := httpserver.Stop(*httpListenAddr); err != nil {
|
||||
logger.Fatalf("cannot stop the webservice: %s", err)
|
||||
}
|
||||
pushmetrics.Stop()
|
||||
logger.Infof("successfully shut down the webservice in %.3f seconds", time.Since(startTime).Seconds())
|
||||
stopAuthConfig()
|
||||
logger.Infof("successfully stopped vmauth in %.3f seconds", time.Since(startTime).Seconds())
|
||||
|
|
|
@ -107,6 +107,7 @@ func main() {
|
|||
if err := httpserver.Stop(*httpListenAddr); err != nil {
|
||||
logger.Fatalf("cannot stop http server for metrics: %s", err)
|
||||
}
|
||||
pushmetrics.Stop()
|
||||
logger.Infof("successfully shut down http server for metrics in %.3f seconds", time.Since(startTime).Seconds())
|
||||
}
|
||||
|
||||
|
|
|
@ -161,6 +161,8 @@ func main() {
|
|||
}
|
||||
logger.Infof("successfully shut down http service in %.3f seconds", time.Since(startTime).Seconds())
|
||||
|
||||
pushmetrics.Stop()
|
||||
|
||||
if len(*clusternativeListenAddr) > 0 {
|
||||
clusternativeServer.MustStop()
|
||||
}
|
||||
|
|
|
@ -65,6 +65,7 @@ func main() {
|
|||
if err := httpserver.Stop(*httpListenAddr); err != nil {
|
||||
logger.Fatalf("cannot stop http server for metrics: %s", err)
|
||||
}
|
||||
pushmetrics.Stop()
|
||||
logger.Infof("successfully shut down http server for metrics in %.3f seconds", time.Since(startTime).Seconds())
|
||||
}
|
||||
|
||||
|
|
|
@ -145,6 +145,8 @@ func main() {
|
|||
}
|
||||
logger.Infof("successfully shut down http service in %.3f seconds", time.Since(startTime).Seconds())
|
||||
|
||||
pushmetrics.Stop()
|
||||
|
||||
if vmselectapiServer != nil {
|
||||
logger.Infof("stopping vmselectapi server...")
|
||||
vmselectapiServer.MustStop()
|
||||
|
|
|
@ -144,9 +144,7 @@ func main() {
|
|||
}
|
||||
logger.Infof("successfully shut down http service in %.3f seconds", time.Since(startTime).Seconds())
|
||||
|
||||
// close the metric reporting goroutine
|
||||
pushmetrics.StopPushMetrics()
|
||||
logger.Infof("successfully stop push metric in %.3f seconds", time.Since(startTime).Seconds())
|
||||
pushmetrics.Stop()
|
||||
|
||||
logger.Infof("gracefully shutting down the service")
|
||||
startTime = time.Now()
|
||||
|
|
|
@ -51,6 +51,7 @@ The sandbox cluster installation is running under the constant load generated by
|
|||
* BUGFIX: [vmctl](https://docs.victoriametrics.com/vmctl.html): retry on import errors in `vm-native` mode. Before, retries happened only on writes into a network connection between source and destination. But errors returned by server after all the data was transmitted were logged, but not retried.
|
||||
* BUGFIX: [vmagent](https://docs.victoriametrics.com/vmagent.html): properly assume role with [AWS IRSA authorization](https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts.html). Previously role chaining was not supported. See [this issue](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/3822) for details.
|
||||
* BUGFIX: [vmui](https://docs.victoriametrics.com/#vmui): fix a link for the statistic inaccuracy explanation in the cardinality explorer tool. See [this issue](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/5460).
|
||||
* BUGFIX: all: fix potential panic during components shutdown when `-pushmetrics.url` is configured. See [this issue](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/5548). Thanks to @zhdd99 for the [pull request](https://github.com/VictoriaMetrics/VictoriaMetrics/pull/5549).
|
||||
|
||||
## [v1.96.0](https://github.com/VictoriaMetrics/VictoriaMetrics/releases/tag/v1.96.0)
|
||||
|
||||
|
|
|
@ -29,8 +29,7 @@ func init() {
|
|||
}
|
||||
|
||||
var (
|
||||
// create a custom context for the pushmetrics module to close the metric reporting goroutine when the vmstorage process is shutdown.
|
||||
pushMetricsCtx, cancelPushMetric = context.WithCancel(context.Background())
|
||||
pushCtx, cancelPushCtx = context.WithCancel(context.Background())
|
||||
)
|
||||
|
||||
// Init must be called after logger.Init
|
||||
|
@ -42,12 +41,17 @@ func Init() {
|
|||
Headers: *pushHeader,
|
||||
DisableCompression: *disableCompression,
|
||||
}
|
||||
if err := metrics.InitPushExtWithOptions(pushMetricsCtx, pu, *pushInterval, appmetrics.WritePrometheusMetrics, opts); err != nil {
|
||||
if err := metrics.InitPushExtWithOptions(pushCtx, pu, *pushInterval, appmetrics.WritePrometheusMetrics, opts); err != nil {
|
||||
logger.Fatalf("cannot initialize pushmetrics: %s", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func StopPushMetrics() {
|
||||
cancelPushMetric()
|
||||
// Stop stops the periodic push of metrics.
|
||||
// It is important to stop the push of metrics before disposing resources
|
||||
// these metrics attached to. See related https://github.com/VictoriaMetrics/VictoriaMetrics/issues/5548
|
||||
//
|
||||
// Stop must be called after Init.
|
||||
func Stop() {
|
||||
cancelPushCtx()
|
||||
}
|
||||
|
|
|
@ -690,6 +690,40 @@ func testSetSparseItems(t *testing.T, itemsCount int) {
|
|||
}
|
||||
}
|
||||
|
||||
func FuzzAddMulti(f *testing.F) {
|
||||
rand.Seed(time.Now().UnixNano())
|
||||
|
||||
f.Add(uint64(10))
|
||||
f.Fuzz(func(t *testing.T, v uint64) {
|
||||
var s1, s2 Set
|
||||
|
||||
v %= 1e3
|
||||
vs := make([]uint64, v)
|
||||
for i := range vs {
|
||||
vs[i] = rand.Uint64()
|
||||
}
|
||||
|
||||
s1.AddMulti(vs)
|
||||
for _, v := range vs {
|
||||
s2.Add(v)
|
||||
}
|
||||
if s1.Len() != s2.Len() {
|
||||
t.Fatalf("unexpected number of items in the set; got %d; want %d\nset:\n%d", s1.Len(), s2.Len(), s1.AppendTo(nil))
|
||||
}
|
||||
for _, x := range vs {
|
||||
if !s1.Has(x) {
|
||||
t.Fatalf("missing item %d in the set", x)
|
||||
}
|
||||
}
|
||||
|
||||
a1 := s1.AppendTo(nil)
|
||||
a2 := s2.AppendTo(nil)
|
||||
if !reflect.DeepEqual(a1, a2) {
|
||||
t.Fatalf("unexpected items in the set;\ngot\n%d\nwant\n%d", a1, a2)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
func TestAddMulti(t *testing.T) {
|
||||
f := func(a []uint64) {
|
||||
t.Helper()
|
||||
|
|
Loading…
Reference in a new issue