mirror of
https://github.com/rsyslog/rsyslog.git
synced 2025-12-20 12:00:43 +01:00
omkafka has several issue if multiple worker instances are used. This commit actually make the module use a single worker thread at max. Reasoning: Librdkafka creates background threads itself. So omkafka basically needs to move memory buffers over to librdkafka, which then does the heavy hauling. As such, we think that it is best to run max one wrkr instance of omkafka -- otherwise we just get additional locking (contention) overhead without any real gain. As such, we use a global mutex for doAction which ensures only one worker can be active at any given time. That mutex is also used to guard utility functions (like tryResume) which may also be accessed by multiple workers in parallel. Note: shall this method be changed, the kafka connection/suspension handling needs to be refactored. The current code assumes that all workers share state information including librdkafka handles. closes https://github.com/rsyslog/rsyslog/issues/2313