chore(userspace/falco): configurable outputs timeout

Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
This commit is contained in:
Leonardo Grasso 2020-11-06 17:25:46 +01:00 committed by poiana
parent 4b34b83739
commit 321da3e5bf
3 changed files with 13 additions and 6 deletions

View File

@ -972,6 +972,7 @@ int falco_init(int argc, char **argv)
outputs->init(config.m_json_output,
config.m_json_include_output_property,
config.m_output_timeout,
config.m_notifications_rate, config.m_notifications_max_burst,
config.m_buffered_outputs,
config.m_time_format_iso_8601,

View File

@ -63,8 +63,9 @@ falco_outputs::~falco_outputs()
void falco_outputs::init(bool json_output,
bool json_include_output_property,
uint32_t timeout,
uint32_t rate, uint32_t max_burst, bool buffered,
bool time_format_iso_8601, string hostname)
bool time_format_iso_8601, std::string hostname)
{
// Cannot be initialized more than one time.
if(m_initialized)
@ -80,6 +81,8 @@ void falco_outputs::init(bool json_output,
falco_formats::s_json_output = json_output;
falco_formats::s_json_include_output_property = json_include_output_property;
m_timeout = std::chrono::milliseconds(timeout);
m_notifications_tb.init(rate, max_burst);
m_buffered = buffered;
@ -275,11 +278,12 @@ inline void falco_outputs::push(ctrl_msg_type cmt)
void falco_outputs::worker()
{
Watchdog<std::string> wd;
wd.start([&](std::string payload) -> void {
falco_logger::log(LOG_CRIT, "\"" + payload + "\" output deadline exceeded, all output channels are blocked.\n");
falco_logger::log(LOG_CRIT, "\"" + payload + "\" output timeout, all output channels are blocked.\n");
});
auto timeout = m_timeout;
falco_outputs::ctrl_msg cmsg;
while(true)
{
@ -291,7 +295,7 @@ void falco_outputs::worker()
for(auto it = m_outputs.cbegin(); it != m_outputs.cend(); ++it)
{
wd.set_timeout(std::chrono::milliseconds(2000), (*it)->get_name());
wd.set_timeout(timeout, (*it)->get_name());
try
{
switch(cmsg.type)

View File

@ -40,6 +40,7 @@ public:
void init(bool json_output,
bool json_include_output_property,
uint32_t timeout,
uint32_t rate, uint32_t max_burst, bool buffered,
bool time_format_iso_8601, std::string hostname);
@ -71,6 +72,7 @@ private:
bool m_buffered;
bool m_json_output;
bool m_time_format_iso_8601;
std::chrono::milliseconds m_timeout;
std::string m_hostname;
enum ctrl_msg_type