diff options
author | Rainer Gerhards <rgerhards@adiscon.com> | 2010-04-26 15:19:13 +0200 |
---|---|---|
committer | Rainer Gerhards <rgerhards@adiscon.com> | 2010-04-26 15:19:13 +0200 |
commit | eec894fbc5eb263e6def1f2e35f9882967c95a88 (patch) | |
tree | b6be4e3076f499e4c8023f88e4ddbfac55f60ea0 /action.h | |
parent | 270e455d6d9c6e7e580d6784435bf57ddc71bd85 (diff) | |
download | rsyslog-eec894fbc5eb263e6def1f2e35f9882967c95a88.tar.gz rsyslog-eec894fbc5eb263e6def1f2e35f9882967c95a88.tar.xz rsyslog-eec894fbc5eb263e6def1f2e35f9882967c95a88.zip |
bugfix(kind of): output plugin retry behaviour could cause engine to loop
The rsyslog engine did not guard itself against output modules that do
not properly convey back the tryResume() behaviour. This then leads to
what looks like an endless loop. I consider this to be a bug of the
engine not only because it should be hardened against plugin misbehaviour,
but also because plugins may not be totally able to avoid this situation
(depending on the type of and processing done by the plugin).
Diffstat (limited to 'action.h')
-rw-r--r-- | action.h | 3 |
1 files changed, 2 insertions, 1 deletions
@@ -56,8 +56,9 @@ struct action_s { bool bWriteAllMarkMsgs;/* should all mark msgs be written (not matter how recent the action was executed)? */ int iSecsExecOnceInterval; /* if non-zero, minimum seconds to wait until action is executed again */ action_state_t eState; /* current state of action */ - int bHadAutoCommit; /* did an auto-commit happen during doAction()? */ + bool bHadAutoCommit; /* did an auto-commit happen during doAction()? */ time_t ttResumeRtry; /* when is it time to retry the resume? */ + int iResumeOKinRow; /* number of times in a row that resume said OK with an immediate failure following */ int iResumeInterval;/* resume interval for this action */ int iResumeRetryCount;/* how often shall we retry a suspended action? (-1 --> eternal) */ int iNbrResRtry; /* number of retries since last suspend */ |