diff options
author | Rainer Gerhards <rgerhards@adiscon.com> | 2012-05-10 14:58:07 +0200 |
---|---|---|
committer | Rainer Gerhards <rgerhards@adiscon.com> | 2012-05-10 14:58:07 +0200 |
commit | 48b8ea8137ecc803b3a3f5ce1fd418f491675c08 (patch) | |
tree | 150c8a121939c7698fc515a29e9aa04b512a5e74 | |
parent | 6625450cbeee6cd4dc0ecc7418e552833708e95c (diff) | |
parent | 68f7a7bfd21a63c6b3f753341ac48a8873a260a7 (diff) | |
download | rsyslog-48b8ea8137ecc803b3a3f5ce1fd418f491675c08.tar.gz rsyslog-48b8ea8137ecc803b3a3f5ce1fd418f491675c08.tar.xz rsyslog-48b8ea8137ecc803b3a3f5ce1fd418f491675c08.zip |
Merge branch 'v6-stable'
Conflicts:
ChangeLog
configure.ac
doc/manual.html
-rw-r--r-- | ChangeLog | 26 | ||||
-rw-r--r-- | runtime/queue.c | 16 |
2 files changed, 30 insertions, 12 deletions
@@ -26,6 +26,12 @@ Version 6.3.9 [DEVEL] 2012-04-?? Thanks to Marcin M for bringing up this problem and Andre Lorbach for helping to reproduce and fix it. - added capability to specify substrings for field extraction mode +- bugfix: disk queue was not persisted on shutdown, regression of fix to + http://bugzilla.adiscon.com/show_bug.cgi?id=299 + The new code also handles the case of shutdown of blocking light and + full delayable sources somewhat smarter and permits, assuming sufficient + timouts, to persist message up to the max queue capacity. Also some nits + in debug instrumentation have been fixed. --------------------------------------------------------------------------- Version 6.3.8 [DEVEL] 2012-04-16 - added $PStatJSON directive to permit stats records in JSON format @@ -154,7 +160,15 @@ Version 6.3.0 [DEVEL] (rgerhards), 2011-06-01 - introduced new config system http://blog.gerhards.net/2011/06/new-rsyslog-config-system-materializes.html --------------------------------------------------------------------------- -Version 6.2.1 [v6-stable], 2012-01-?? +Version 6.2.2 [v6-stable], 2012-05-?? +- bugfix: disk queue was not persisted on shutdown, regression of fix to + http://bugzilla.adiscon.com/show_bug.cgi?id=299 + The new code also handles the case of shutdown of blocking light and + full delayable sources somewhat smarter and permits, assuming sufficient + timouts, to persist message up to the max queue capacity. Also some nits + in debug instrumentation have been fixed. +--------------------------------------------------------------------------- +Version 6.2.1 [v6-stable], 2012-05-10 - change plugin config interface to be compatible with pre-v6.2 system The functionality was already removed (because it is superseeded by the v6.3+ config language), but code was still present. I have now removed @@ -180,6 +194,7 @@ Version 6.2.1 [v6-stable], 2012-01-?? http://bugzilla.adiscon.com/show_bug.cgi?id=299 Thanks to Marcin M for bringing up this problem and Andre Lorbach for helping to reproduce and fix it. +- bugfix/tcpflood: sending small test files did not work correctly --------------------------------------------------------------------------- Version 6.2.0 [v6-stable], 2012-01-09 - bugfix (kind of): removed numerical part from pri-text @@ -561,6 +576,15 @@ Version 5.9.0 [V5-DEVEL] (rgerhards), 2011-06-08 affected directive was: $ActionExecOnlyWhenPreviousIsSuspended on closes: http://bugzilla.adiscon.com/show_bug.cgi?id=236 --------------------------------------------------------------------------- +Version 5.8.12 [V5-stable] 2012-05-?? +- bugfix: disk queue was not persisted on shutdown, regression of fix to + http://bugzilla.adiscon.com/show_bug.cgi?id=299 + The new code also handles the case of shutdown of blocking light and + full delayable sources somewhat smarter and permits, assuming sufficient + timouts, to persist message up to the max queue capacity. Also some nits + in debug instrumentation have been fixed. +- bugfix/tcpflood: sending small test files did not work correctly +--------------------------------------------------------------------------- Version 5.8.11 [V5-stable] 2012-05-03 - bugfix: ommysql did not properly init/exit the mysql runtime library this could lead to segfaults. Triggering condition: multiple action diff --git a/runtime/queue.c b/runtime/queue.c index e08f3936..2b017747 100644 --- a/runtime/queue.c +++ b/runtime/queue.c @@ -2386,10 +2386,6 @@ doEnqSingleObj(qqueue_t *pThis, flowControl_t flowCtlType, void *pUsr) int err; struct timespec t; - if(glbl.GetGlobalInputTermState()) { - ABORT_FINALIZE(RS_RET_FORCE_TERM); - } - STATSCOUNTER_INC(pThis->ctrEnqueued, pThis->mutCtrEnqueued); /* first check if we need to discard this message (which will cause CHKiRet() to exit) */ @@ -2416,9 +2412,7 @@ doEnqSingleObj(qqueue_t *pThis, flowControl_t flowCtlType, void *pUsr) * It's a side effect, but a good one ;) -- rgerhards, 2008-03-14 */ if(flowCtlType == eFLOWCTL_FULL_DELAY) { - DBGOPRINT((obj_t*) pThis, "enqueueMsg: FullDelay mark reached for full delayable message " - "- blocking.\n"); - while(pThis->iQueueSize >= pThis->iFullDlyMrk) { + while(pThis->iQueueSize >= pThis->iFullDlyMrk&& ! glbl.GetGlobalInputTermState()) { /* We have a problem during shutdown if we block eternally. In that * case, the the input thread cannot be terminated. So we wake up * from time to time to check for termination. @@ -2430,6 +2424,8 @@ doEnqSingleObj(qqueue_t *pThis, flowControl_t flowCtlType, void *pUsr) * In any case, this was the old code (if we do the TODO): * pthread_cond_wait(&pThis->belowFullDlyWtrMrk, pThis->mut); */ + DBGOPRINT((obj_t*) pThis, "enqueueMsg: FullDelay mark reached for full delayable message " + "- blocking, queue size is %d.\n", pThis->iQueueSize); timeoutComp(&t, 1000); err = pthread_cond_timedwait(&pThis->belowLightDlyWtrMrk, pThis->mut, &t); if(err != 0 && err != ETIMEDOUT) { @@ -2442,11 +2438,8 @@ doEnqSingleObj(qqueue_t *pThis, flowControl_t flowCtlType, void *pUsr) } DBGPRINTF("wti worker in full delay timed out, checking termination...\n"); - if(glbl.GetGlobalInputTermState()) { - ABORT_FINALIZE(RS_RET_FORCE_TERM); - } } - } else if(flowCtlType == eFLOWCTL_LIGHT_DELAY) { + } else if(flowCtlType == eFLOWCTL_LIGHT_DELAY && !glbl.GetGlobalInputTermState()) { if(pThis->iQueueSize >= pThis->iLightDlyMrk) { DBGOPRINT((obj_t*) pThis, "enqueueMsg: LightDelay mark reached for light " "delayable message - blocking a bit.\n"); @@ -2471,6 +2464,7 @@ doEnqSingleObj(qqueue_t *pThis, flowControl_t flowCtlType, void *pUsr) && pThis->tVars.disk.sizeOnDisk > pThis->sizeOnDiskMax)) { DBGOPRINT((obj_t*) pThis, "enqueueMsg: queue FULL - waiting to drain.\n"); if(glbl.GetGlobalInputTermState()) { + DBGOPRINT((obj_t*) pThis, "enqueueMsg: queue FULL, discard due to FORCE_TERM.\n"); ABORT_FINALIZE(RS_RET_FORCE_TERM); } timeoutComp(&t, pThis->toEnq); |