When using --disable-libcurl, libgrammar should not be linked against
libcurl unconditionally as CURL_LIBS might be set if one of the modules
using libcurl, like elasticsearch, is enabled.
commit 5cee06a60 introduced case-perservation, but did not make
it optional. This broke existing behavior and thus potentially
existing configurations. This commit introduces a new parameter
"sd_name.lowercase" which now controls this behavior.
Note that 5cee06a60 is merged to master branch together with this
commit, so no released code ever had the potential regression.
see also https://github.com/rsyslog/rsyslog/pull/2181
... namely gcc 7 and clang 5. We do the most minimal change to
get to a clean build as this module AFAIK is not used by anyone
for quite some years now (RFC3195 is a total failure).
closes https://github.com/rsyslog/rsyslog/issues/2094
When directories and files are created at the same time,
imfile may missed subdirs or file if the machine is on high load.
The handling has been enhanced to scan newly created directories ALWAYS for
matching files.
This should fix following issues:
closes https://github.com/rsyslog/rsyslog/issues/2271
However we still have a problem when a multilevel directory configurations.
Details are discussed here https://github.com/rsyslog/rsyslog/issues/2354
commit 0fbe873438e introduced an unchecked realloc, which under
extreme conditions (total out-of-memory condition) could lead to
a NULL pointer access. This commit fixes the issue be avoiding the
need for realloc() in the first place.
Note that commit 0fbe873438e was merged today, so there is no
problem in any released code.
omkafka emits many useful operational status messages only to the debug
log. After careful review, we have exposed many of these as user error
and warning message (ex: librdkafka queue full, so user knows why we
suspend the plugin temporarily). This may have made the module too
chatty. If so, one can always filter out messages via configuration. And
if we really went overboard, we can undo those parts with the next
release. So IMHO it's better to give a bit more than less, as this
definitely eases troubleshooting for users.
closes https://github.com/rsyslog/rsyslog/issues/2314
some of the counters were defined as int (32 bit) vs. intctr_t (64 bit).
On some platforms "long" seems to be 64bit, and getrusage() provides
what we store as int via long. So this caused truncation and/or overflow.
This had undefined effects. Most often, everything worked fine
for values smaller than 2^31 but sometimes we got negative values.
closes https://github.com/rsyslog/rsyslog/issues/1517
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
if kafka produce fails when resubmitting messages, the message object
is duplicated. This potentially leads to a mem leak or message duplication
(not fully checked yet).
if rdkafka handle cannot fully populated, cleanup is added. Previously, we
could leak a handle if e.g. no brokers were avaiable. Note that this was
a cosmetic leak, as proper processing is not possible in any case and the
leak is once per listener, so not growing. But we now also ensure that
proper error reporting and handling is done in any case. Previously, we
may have some misleading error messages if the defunct kafka handle was
used.
closes https://github.com/rsyslog/rsyslog/issues/2084
in particular, bind() and helpers. It's not actually undefined in this
case, because the rest of the system obviously defines the semantics
(plus, we cannot really solve it ;-)).
When notifyconnectionclose was on, a string buffer was accessed immediately
after it was freed (as part of the connection close operation). This commit
changes the order of operations to fix that.
Detected by LLVM ASAN.
helps generating better code, protects against coding glitches (as it
enables compiler to alert against unintensional interface violations)
and helps doing better in the testbench (especially via UBSan)
The failed message list is improperly cleaned. This is a regression
from recent commit 4eae19e089b5a83da679fe29398c6b2c10003793, which
was introduced in 8.31.0.
This problem is more likely to happen under heavy load or bad
connectivity, when the local librdkafka queue overruns or message
delivery times out.
closes https://github.com/rsyslog/rsyslog/issues/2184
closes https://github.com/rsyslog/rsyslog/issues/2067
This is now taken from the global localHostIP setting, which is used
consistent accross all modules.
Also, the removed (2012?) directive $klogLocalIPIF has been added
again but directly marked as removed. That way, an informative error
message is generated if someone tries to use it.
closes https://github.com/rsyslog/rsyslog/issues/2276