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)
commitb6921a1724c571a787e3600c5dae4d9efeef0290
treecb5ba9964b3ae852ae572ee8e3dcda4c9dcc882c
parent4f00620d66e81d89a546b29a774dad49d38983b3
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.028261 seconds and 4 git commands to generate.