VictoriaMetrics/lib/protoparser
Aliaksandr Valialkin 0feaeca3c1
lib/protoparser/promremotewrite: fall back to Snappy decoding if zstd decoding fails
This case is possible after the following steps:

1. vmagent tries to perform handshake with the -remoteWrite.url in order to determine whether
   the remote storage supports zstd-compressed data.
2. The remote storage is unavailable during the handshake. In this case vmagent falls back to Snappy compression
   for the data sent to the remote storage.
3. vmagent compresses the collected data into blocks with Snappy and puts these blocks to persistent queue on disk.
4. The remote storage becomes available.
5. vmagent restarts, performs the handshake with the remote storage and detects that it supports zstd-compressed data.
6. vmagent starts sending Snappy-compressed data from persistent queue to the remote storage,
   while falsely advertizing it sends zstd-compressed data.
7. The remote storage receives Snappy-compressed data and fails unpacking it with zstd.

The solution is to just fall back to Snappy decompression if zstd decompression fails.

Updates https://github.com/VictoriaMetrics/VictoriaMetrics/issues/5301
2023-11-13 21:19:08 +01:00
..
common Makefile: update golangci-lint from v1.51.2 to v1.54.2 2023-09-01 10:16:42 +02:00
csvimport lib/protoparser/csvimport: properly parse the last empty column in CSV line 2023-05-12 15:51:41 -07:00
datadog all: consistently use %w instead of %s in when error is passed to fmt.Errorf() 2023-10-25 21:24:03 +02:00
graphite lib/protoparser/graphite: extract stream parsing code into a separate stream package 2023-02-13 10:32:36 -08:00
influx lib/promauth: follow-up for e16d3f5639 2023-10-25 23:19:37 +02:00
native/stream lib/protoparser/native: extract stream parsing code into a separate stream package 2023-02-13 10:43:05 -08:00
newrelic all: consistently use %w instead of %s in when error is passed to fmt.Errorf() 2023-10-25 21:24:03 +02:00
opentelemetry all: consistently use %w instead of %s in when error is passed to fmt.Errorf() 2023-10-25 21:24:03 +02:00
opentsdb lib/protoparser/opentsdb: extract stream parsing code into a separate stream package 2023-02-13 10:03:16 -08:00
opentsdbhttp lib/opentsdbhttp: fix a typo preventing from using writeconcurrencylimiter (#4208) 2023-04-27 09:22:42 +02:00
prometheus lib/promscrape: make concurrency control optional (#5073) 2023-10-02 21:32:11 +02:00
promremotewrite/stream lib/protoparser/promremotewrite: fall back to Snappy decoding if zstd decoding fails 2023-11-13 21:19:08 +01:00
vmimport lib/promauth: follow-up for e16d3f5639 2023-10-25 23:19:37 +02:00