Fix: mark consumer channels as logically deleted during deletion
authorJérémie Galarneau <jeremie.galarneau@efficios.com>
Sat, 24 Aug 2019 23:08:33 +0000 (16:08 -0700)
committerJérémie Galarneau <jeremie.galarneau@efficios.com>
Thu, 5 Sep 2019 20:39:15 +0000 (16:39 -0400)
commit3206380a75771616cac679465a7a66184cb945f4
tree101df2d21141f64b4a940d876430abf63f85aab8
parentd238c88d41dc79062091c0f84b1023e068c196e0
Fix: mark consumer channels as logically deleted during deletion

A consumer channel that is "logically" deleted (but not yet reclaimed
with regards to RCU) can be iterated-on when creating a trace chunk.

Such a deleted channel will have released its reference to its
previous trace chunk, but the trace chunk creation operation will
set its current trace chunk to the new trace chunk, thus acquiring
a new reference to the trace chunk.

The clean-up performed by the RCU thread already assumes that a
logical deletion already took place and will not re-release the
reference to the channel's current trace chunk.

In effect, the reference to the trace chunk is leaked and will
prevent any rotation out of the trace chunk from completing.

Reported-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
src/common/consumer/consumer.c
src/common/consumer/consumer.h
This page took 0.025529 seconds and 4 git commands to generate.