flowprobe: fix flush callbacks when multiple workers 44/40144/5
authorAlexander Chernavin <achernavin@netgate.com>
Wed, 27 Dec 2023 12:37:16 +0000 (12:37 +0000)
committerMatthew Smith <mgsmith@netgate.com>
Thu, 7 Mar 2024 21:18:03 +0000 (21:18 +0000)
commit4c7305f124cfa9c649ec6c9231eaf608fe336f1b
tree77441f44e4324a1f62b5d0568d33f32bfa92a597
parent93d38823f990a9a5708f9aabe4b14318cf831934
flowprobe: fix flush callbacks when multiple workers

IPFIX buffers are stored on a per worker thread basis. Currently, the
flush callbacks will flush only buffers stored for the main thread. And
buffers for worker threads will not be sent until their size reach the
path MTU configured for the exporter. So if traffic is constant, the
problem will unlikely to be visible. Buffers will be sent once they
reach the maximum size. However, if traffic stops at some point and
flush is triggered in order to make the plugin send all currently
buffered data, this will not happen. And collectors will not receive
that data. The plugin will keep the remaining data until traffic starts
again, the buffers reach the maximum size, and be sent.

With this fix, flush buffers for worker threads and for the main thread
when the flush callbacks are triggered.

This will allow to remove @tag_fixme_vpp_workers from the unit tests
that don't set timers. The tests that set timers will still be failing
for other multi-worker related problems.

Type: fix
Change-Id: I9a7d9cef8ddbec7ee68c79309e48e7bc0953d488
Signed-off-by: Alexander Chernavin <achernavin@netgate.com>
src/plugins/flowprobe/node.c
test/test_flowprobe.py