prometheus/storage/remote
Chris Marchbanks bfb1500a38
Fix deadlock when stopping a shard (#10279)
If a queue is stopped and one of its shards happens to hit the
batch_send_deadline at the same time a deadlock can occur where stop
holds the mutex and will not release it until the send is finished, but
the send needs the mutex to retrieve the most recent batch. This is
fixed by using a second mutex just for writing.

In addition, the test I wrote exposed a case where during shutdown a
batch could be sent twice due to concurrent calls to queue.Batch() and
queue.FlushAndShutdown(). Protect these with a mutex as well.

Signed-off-by: Chris Marchbanks <csmarchbanks@gmail.com>
2022-02-11 07:07:41 -07:00
..
chunked.go Fix some warnings: 'redundant type from array, slice, or map composite literal' (#7109) 2020-04-15 11:17:41 +01:00
chunked_test.go Testify: move to require (#8122) 2020-10-29 09:43:23 +00:00
client.go Enable HTTP2 again (#9398) 2021-09-26 23:16:12 +02:00
client_test.go tests: Move from t.Errorf and others. (Part 2) (#9309) 2021-09-13 21:19:20 +02:00
codec.go storage: fix bug #10027 in iterators' Seek method 2021-12-16 12:07:35 +01:00
codec_test.go storage: expose bug in iterators #10027 2021-12-16 12:02:15 +01:00
ewma.go Replace sync/atomic with uber-go/atomic (#7683) 2020-07-30 13:15:42 +05:30
intern.go Move away from testutil, refactor imports (#8087) 2020-10-22 11:00:08 +02:00
intern_test.go Testify: move to require (#8122) 2020-10-29 09:43:23 +00:00
max_timestamp.go Remote: Do not collect non-initialized timestamp metrics (#8060) 2020-10-15 23:53:59 +02:00
metadata_watcher.go Fix imports formatting 2021-11-02 19:52:34 +01:00
metadata_watcher_test.go Move packages out of deprecated pkg directory 2021-11-09 08:03:10 +01:00
queue_manager.go Fix deadlock when stopping a shard (#10279) 2022-02-11 07:07:41 -07:00
queue_manager_test.go Fix deadlock when stopping a shard (#10279) 2022-02-11 07:07:41 -07:00
read.go Move packages out of deprecated pkg directory 2021-11-09 08:03:10 +01:00
read_handler.go Move packages out of deprecated pkg directory 2021-11-09 08:03:10 +01:00
read_handler_test.go Move packages out of deprecated pkg directory 2021-11-09 08:03:10 +01:00
read_test.go storage/remote: use t.TempDir instead of ioutil.TempDir on tests (#9811) 2021-11-19 15:21:45 -05:00
storage.go Move packages out of deprecated pkg directory 2021-11-09 08:03:10 +01:00
storage_test.go storage/remote: use t.TempDir instead of ioutil.TempDir on tests (#9811) 2021-11-19 15:21:45 -05:00
write.go Move packages out of deprecated pkg directory 2021-11-09 08:03:10 +01:00
write_handler.go Log time series details for out-of-order samples in remote write receiver (#9894) 2021-12-08 15:07:51 +00:00
write_handler_test.go Move packages out of deprecated pkg directory 2021-11-09 08:03:10 +01:00
write_test.go storage/remote: use t.TempDir instead of ioutil.TempDir on tests (#9811) 2021-11-19 15:21:45 -05:00