From b60594a54886e08f5fd89f5b7037bd383e2107f6 Mon Sep 17 00:00:00 2001 From: Aliaksandr Valialkin Date: Tue, 7 Mar 2023 23:50:06 -0800 Subject: [PATCH] app/vmagent/remotewrite: follow-up for e3a756d82869f8c357b072f6e635ebfc7d65dd2c - Document the fix - Move the detection of VictoriaMetrics remoteWrite protocol from client.init() to newHTTPClient() This simplifies the fix to the following diff: diff --git a/app/vmagent/remotewrite/client.go b/app/vmagent/remotewrite/client.go index 099899c19..70b904af4 100644 --- a/app/vmagent/remotewrite/client.go +++ b/app/vmagent/remotewrite/client.go @@ -151,10 +151,6 @@ func newHTTPClient(argIdx int, remoteWriteURL, sanitizedURL string, fq *persiste } c.sendBlock = c.sendBlockHTTP - return c -} - -func (c *client) init(argIdx, concurrency int, sanitizedURL string) { useVMProto := forceVMProto.GetOptionalArg(argIdx) usePromProto := forcePromProto.GetOptionalArg(argIdx) if useVMProto && usePromProto { @@ -173,6 +169,10 @@ func (c *client) init(argIdx, concurrency int, sanitizedURL string) { } c.useVMProto = useVMProto + return c +} + +func (c *client) init(argIdx, concurrency int, sanitizedURL string) { --- app/vmagent/remotewrite/client.go | 17 ++++++----------- docs/CHANGELOG.md | 1 + 2 files changed, 7 insertions(+), 11 deletions(-) diff --git a/app/vmagent/remotewrite/client.go b/app/vmagent/remotewrite/client.go index e23a27aeba..bb5a1e67e4 100644 --- a/app/vmagent/remotewrite/client.go +++ b/app/vmagent/remotewrite/client.go @@ -147,19 +147,12 @@ func newHTTPClient(argIdx int, remoteWriteURL, sanitizedURL string, fq *persiste } c.sendBlock = c.sendBlockHTTP - return c -} - -func (c *client) init(argIdx, concurrency int, sanitizedURL string) { - // custom proto encoding is supported only over http connections - isHTTPClient := c.hc != nil - useVMProto := forceVMProto.GetOptionalArg(argIdx) usePromProto := forcePromProto.GetOptionalArg(argIdx) if useVMProto && usePromProto { logger.Fatalf("-remoteWrite.useVMProto and -remoteWrite.usePromProto cannot be set simultaneously for -remoteWrite.url=%s", sanitizedURL) } - if isHTTPClient && !useVMProto && !usePromProto { + if !useVMProto && !usePromProto { // Auto-detect whether the remote storage supports VictoriaMetrics remote write protocol. doRequest := func(url string) (*http.Response, error) { return c.doRequest(url, nil) @@ -170,10 +163,12 @@ func (c *client) init(argIdx, concurrency int, sanitizedURL string) { "See https://docs.victoriametrics.com/vmagent.html#victoriametrics-remote-write-protocol", sanitizedURL) } } - if isHTTPClient { - c.useVMProto = useVMProto - } + c.useVMProto = useVMProto + return c +} + +func (c *client) init(argIdx, concurrency int, sanitizedURL string) { if bytesPerSec := rateLimit.GetOptionalArgOrDefault(argIdx, 0); bytesPerSec > 0 { logger.Infof("applying %d bytes per second rate limit for -remoteWrite.url=%q", bytesPerSec, sanitizedURL) c.rl.perSecondLimit = int64(bytesPerSec) diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index 64bdb07cb9..7595c8cc41 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -19,6 +19,7 @@ The following tip changes can be tested by building VictoriaMetrics components f * FEATURE: [vmctl](https://docs.victoriametrics.com/vmctl.html): `vmctl` `vm-native` mode now splits the migration process on per-metric basis. This allows to migrate metrics one-by-one according to the specified filter. This change allows to retry export/import requests for a specific metric and provides a better understanding of the migration progress. See [this feature request](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/3600). * FEATURE: [vmctl](https://docs.victoriametrics.com/vmctl.html): `vmctl` `vm-native` mode now supports `--vm-native-src-headers` and `--vm-native-dst-headers` which defines headers to send with each request to the corresponding source address. Thanks, @baconmania, for the pull request. See [this pull request](https://github.com/VictoriaMetrics/VictoriaMetrics/pull/3906). +* BUGFIX: [vmagent](https://docs.victoriametrics.com/vmagent.html): fix panic when [writing data to Kafka](https://docs.victoriametrics.com/vmagent.html#writing-metrics-to-kafka). The panic has been introduced in [v1.88.0](https://docs.victoriametrics.com/CHANGELOG.html#v1880). * BUGFIX: prevent from possible panic during [background merge process](https://docs.victoriametrics.com/#storage). It may occur in rare case and was introduced at [v1.85.0](https://docs.victoriametrics.com/CHANGELOG.html#v1850) when implementing [this feature](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/3337). * BUGFIX: [vmui](https://docs.victoriametrics.com/#vmui): stop showing `Please enter a valid Query and execute it` error message on the first load of vmui. * BUGFIX: [vmui](https://docs.victoriametrics.com/#vmui): support old format of URL params. This should make compatible copying URL between vmui of versions or using `Run in VMUI` button in datasource plugin.