summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRainer Gerhards <rgerhards@adiscon.com>2012-05-10 14:58:07 +0200
committerRainer Gerhards <rgerhards@adiscon.com>2012-05-10 14:58:07 +0200
commit48b8ea8137ecc803b3a3f5ce1fd418f491675c08 (patch)
tree150c8a121939c7698fc515a29e9aa04b512a5e74
parent6625450cbeee6cd4dc0ecc7418e552833708e95c (diff)
parent68f7a7bfd21a63c6b3f753341ac48a8873a260a7 (diff)
downloadrsyslog-48b8ea8137ecc803b3a3f5ce1fd418f491675c08.tar.gz
rsyslog-48b8ea8137ecc803b3a3f5ce1fd418f491675c08.tar.xz
rsyslog-48b8ea8137ecc803b3a3f5ce1fd418f491675c08.zip
Merge branch 'v6-stable'
Conflicts: ChangeLog configure.ac doc/manual.html
-rw-r--r--ChangeLog26
-rw-r--r--runtime/queue.c16
2 files changed, 30 insertions, 12 deletions
diff --git a/ChangeLog b/ChangeLog
index 76cf1482..e699af38 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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);