97 Commits

Author SHA1 Message Date
Peter Portante
2470f0f72b Remove use of sizeof(char) and sizeof(uchar)
Remove the use sizeof(char) or sizeof(uchar) in calculations for memory
allocation or string length.  There are no known platforms for which
sizeof(char) or sizeof(uchar) is not 1, and c99 has defined sizeof(char)
to be 1 (section 6.5.3.4 of c99).
2015-12-16 02:18:45 +00:00
Rainer Gerhards
cb93b5e7d8 nitfix: error status was not correctly passed
but it was extermely unlikely that this could ever happen in practice

detected by clang static analyzer
2015-12-05 18:23:30 +01:00
Rainer Gerhards
8039ebb03d nitfix: theoretical NULL pointer access
detected by clang static analyzer
2015-12-05 18:22:13 +01:00
Rainer Gerhards
09522af762 action: refactor worker instance table handling 2015-03-31 17:28:53 +02:00
Rainer Gerhards
24d5d6a758 core engine: plumbing to support wrkr-level HUP processing
This implements some plumbing to keep track of the wrkr data
pointers so that they are easily enough accessible during HUP
processing.

see also https://github.com/rsyslog/rsyslog/issues/281
2015-03-30 15:10:13 +02:00
Rainer Gerhards
4695ab7c3e refactor output system string handling 2013-12-04 16:49:22 +01:00
Rainer Gerhards
41a3489b70 refactor milestone: prep iparam structure for omod interface usage 2013-12-04 10:29:13 +01:00
Rainer Gerhards
3b523a196a reduced number of malloc/frees during string template processing
We now re-use once allocated string template memory for as long
as the worker thread exists. This saves us from doing new memory
allocs (and their free counterpart) when the next message is
processed. The drawback is that the cache always is the size of
the so-far largest message processed. This is not considered a
problem, as in any case a single messages' memory footprint should
be far lower than that of a whole set of messages (especially on
busy servers).
2013-12-03 17:03:22 +01:00
Rainer Gerhards
ede2e4ccf2 regression fix: prevent queue stall if ratelimiter is used
Thanks to Pavel Levshin for alerting us. This regression was introduced
roughly 2 hours ago and was never released.
2013-11-20 17:01:39 +01:00
Rainer Gerhards
060187d21c queue workers: eliminate unnecessary queue mutex operations 2013-11-20 15:03:50 +01:00
Rainer Gerhards
82e77cd452 bugfix: memory leak on worker thread termination 2013-11-18 15:09:10 +01:00
Rainer Gerhards
8b6b121993 regression fix: misadressing if worker thread was restarted 2013-11-14 12:42:55 +01:00
Rainer Gerhards
23278699e3 Merge branch 'master-ruleeng' into master-ruleeng-simd 2013-11-07 12:57:49 +01:00
Rainer Gerhards
fb81cf202c Merge branch 'master' into master-ruleeng
Conflicts:
	runtime/wti.c
	runtime/wti.h
2013-11-07 12:57:36 +01:00
Pavel Levshin
772cba6f2e improve worker thread pool handling
among others, make possible that workers really timeout and the pool
thus shrinks
2013-11-06 18:37:47 +01:00
Rainer Gerhards
e51de9f416 re-enable main queue direct mode 2013-11-05 17:47:35 +01:00
Rainer Gerhards
ce57131e1e experimentally split ruleset execution in exec and commit phase 2013-11-04 14:32:49 +01:00
Rainer Gerhards
4ac27e73af call freeWrkrInstance() on worker thread termination 2013-10-29 18:16:57 +01:00
Rainer Gerhards
8f27fab834 add debug output for worker actions 2013-10-29 16:52:56 +01:00
Rainer Gerhards
efa8dfb47d maintain action ids (actionNbr) 2013-10-26 13:54:45 +02:00
Rainer Gerhards
de71589ca3 Merge branch 'v6-stable'
Conflicts:
	ChangeLog
	configure.ac
	runtime/ruleset.c
	tools/syslogd.c
2012-08-25 12:19:56 +02:00
Rainer Gerhards
9faf2240c4 changed TRUE/FALSE to RSTRUE/RSFALSE
This is done to prevent name claches with libraries.
2012-08-22 15:29:02 +02:00
Rainer Gerhards
04399f5ebe added --enable-debugless configure option for very high demanding environments
This actually at compile time disables a lot of debug code, resulting
in some speedup (but serious loss of debugging capabilities)
2012-05-29 12:01:07 +02:00
Rainer Gerhards
32df7bf254 Merge branch 'v6-stable'
Conflicts:
	runtime/queue.c
2012-03-12 17:11:59 +01:00
Rainer Gerhards
f90675f33f Merge branch 'v5-stable-newstats' into v5-devel
Conflicts:
	ChangeLog
	action.c
	configure.ac
	doc/imuxsock.html
	doc/manual.html
	runtime/queue.c
2012-03-12 17:00:21 +01:00
Rainer Gerhards
16cc84fc69 bugfix: stopped DA queue was never processed after a restart
...due to a regression from statistics module.
2012-03-12 15:04:08 +01:00
Rainer Gerhards
ac9afc4149 Merge branch 'v5-stable' into master
Conflicts:
	ChangeLog
	action.h
	configure.ac
	doc/manual.html
	plugins/immark/immark.c
	plugins/impstats/impstats.c
	plugins/imptcp/imptcp.c
	plugins/imtcp/imtcp.c
	runtime/cfsysline.c
	runtime/cfsysline.h
	runtime/conf.c
	runtime/ctok.c
	runtime/ctok.h
	runtime/ctok_token.c
	runtime/ctok_token.h
	runtime/dnscache.h
	runtime/expr.c
	runtime/expr.h
	runtime/rule.c
	runtime/rule.h
	runtime/ruleset.h
	runtime/sysvar.c
	runtime/vm.h
	runtime/vmop.c
	runtime/vmop.h
	runtime/vmprg.c
	runtime/vmprg.h
	runtime/vmstk.c
	runtime/vmstk.h
	tools/omusrmsg.c
2012-01-18 14:08:24 +01:00
Rainer Gerhards
abb381b8a5 Merge branch 'v5-stable-newstats' into v5-devel
Conflicts:
	plugins/imtcp/imtcp.c
2012-01-16 17:04:10 +01:00
Rainer Gerhards
18e60f46a1 Merge branch 'v4-stable' into v5-stable
Conflicts:
	runtime/debug.h
	runtime/obj.c
	runtime/parser.h
	runtime/wti.h
2012-01-16 16:14:30 +01:00
Rainer Gerhards
bd22bf8cb4 license changes 2012-01-16 15:23:01 +01:00
Rainer Gerhards
1bfaf4ac06 better handling of queue i/o errors in disk queues.
This is kind of a bugfix, but a very intrusive one, thus it goes
into the devel version first. Right now, "file not found" is
handled and leads to the new emergency mode, in which disk action
is stopped and the queue run in direct mode. An error message is
emited if this happens.
2011-05-03 12:27:49 +02:00
Rainer Gerhards
802f6d8a8f milestone(BUGGY): batch now pushed down to action
at least in important cases (not for non-direct action queues and some
other minor things). This version is definitely buggy, but may be tried
with success on a non-production system. I will continue to work on the
correctness, but needed to commit now to get a baseline.
2010-06-15 14:02:34 +02:00
Rainer Gerhards
7574e70df4 fixed race conditions during queue shutdown (DA case, disks active) 2010-05-18 17:53:12 +02:00
Rainer Gerhards
af8582e509 added new cancel-reduced action thread termination method
We now manage to cancel threads that block inside a retry loop to
terminate without the need to cancel the thread. Avoiding cancellation
helps keep the system complexity minimal and thus provides for better
stability. This also solves some issues with improper shutdown when
inside an action retry loop.
2010-05-17 14:24:27 +02:00
Rainer Gerhards
2da019bfca small cleanup 2010-05-10 15:12:46 +02:00
Rainer Gerhards
dd76d96d67 adapted new atomic instruction emulation to v5 engine
code did not compile after merge from v4
2010-04-27 18:26:09 +02:00
Rainer Gerhards
4a5a3196fb Merge branch 'v4-devel' into master
Conflicts:
	runtime/Makefile.am
	runtime/atomic.h
	runtime/queue.c
	runtime/queue.h
	runtime/wti.c
	runtime/wti.h
	runtime/wtp.c
	runtime/wtp.h
2010-04-27 17:49:06 +02:00
Rainer Gerhards
cbe2e3d444 bugfix: problems with atomic operations emulation
replaced atomic operation emulation with new code. The previous code
seemed to have some issue and also limited concurrency severely. The
whole atomic operation emulation has been rewritten.
2010-04-27 17:31:28 +02:00
Rainer Gerhards
38cb392672 replaced data type "bool" by "sbool" because this created some portability issues 2010-02-02 15:51:01 +01:00
Rainer Gerhards
553d1880d4 some cleanup 2009-10-27 10:36:53 +01:00
Rainer Gerhards
24cd5aee47 fixed race condition during queue shutdown
Problems could happen if the queue worker needed to be cancelled
and this cancellation happened inside queue-code (including
wtp, wti). We have now solved this by disabling cancellation while
in this code and only enabling it when working inside the user consumer.
This exactly matches the use case for which cancellation may be needed.
2009-10-27 10:00:23 +01:00
Rainer Gerhards
b585a4e909 addressed some race issues during queue shutdown
these occured in very unusual scenarios where we had a DA-queue running
in parallel and very lengthy actions. Then, in some situations, the
shutdown could hang. The code needs some addition lab time, but
is believed to be much better than any previous version.
2009-10-26 18:53:01 +01:00
Rainer Gerhards
e04e1b5002 enhanced test environment (including testbench)
support for enhancing probability of memory addressing failure by
using non-NULL default value for malloced memory (optional, only if
requested by configure option). This helps to track down some
otherwise undetected issues within the testbench and is expected
to be very useful in the future.
2009-10-22 11:33:38 +02:00
Rainer Gerhards
c5408da3d8 new queue engine - initial commit (probably not 100% working!)
simplified and thus speeded up the queue engine, also fixed some
potential race conditions (in very unusual shutdown conditions)
along the way. The threading model has seriously changes, so there may
be some regressions.

NOTE: the code passed basic tests, but there is still more work
and testing to be done. This commit should be treated with care.
2009-10-14 11:01:21 +02:00
Rainer Gerhards
4d70c9b3e5 added some debug settings plus improved shutdown sequence
... non-working version!
2009-10-13 14:38:45 +02:00
Rainer Gerhards
5625dbd1b6 bugfix and testbench improvements
- bugfix: solved potential (temporary) stall of messages when the queue was
  almost empty and few new data added (caused testbench to sometimes hang!)
- fixed some race condition in testbench
- added more elaborate diagnostics to parts of the testbench
- solved a potential race inside the queue engine
2009-10-07 18:40:30 +02:00
Rainer Gerhards
caeb203f51 bugfix: potential race condition when queue worker threads were terminated 2009-10-06 16:22:32 +02:00
Rainer Gerhards
ff6963d6f6 simplified startup of queue DA mode 2009-07-20 15:06:32 +02:00
Rainer Gerhards
1c58074339 solved potential race condition and some cleanup
code review brought up some few places where we may have run into a race.
They have most probably been introduced during the recent set of changes. But
I do not look at older versions because of the changed architecture, one can
not simply backport this patch.
2009-07-20 12:53:00 +02:00
Rainer Gerhards
bf8125f4e9 bugfix: minor static memory leak while reading configuration
This did NOT leak based on message volume. Also, did some cleanup during
the commit.
2009-07-20 12:18:20 +02:00