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>
Sat, 24 Aug 2019 23:47:42 +0000 (16:47 -0700)
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>

No differences found
This page took 0.026168 seconds and 4 git commands to generate.