summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRainer Gerhards <rgerhards@adiscon.com>2012-06-01 15:19:54 +0200
committerRainer Gerhards <rgerhards@adiscon.com>2012-06-01 15:19:54 +0200
commitfd46d10a4f49da35758ab9201f6f863d69d5d4f5 (patch)
tree200e881f0a643433ec605c4a0e2d08ab383e89b9
parent21fc2ac97775bf223f9b4882cb4b35898bce8984 (diff)
downloadrsyslog-fd46d10a4f49da35758ab9201f6f863d69d5d4f5.tar.gz
rsyslog-fd46d10a4f49da35758ab9201f6f863d69d5d4f5.tar.xz
rsyslog-fd46d10a4f49da35758ab9201f6f863d69d5d4f5.zip
bugfix: delayble source could block action queue, ...
even if there was a disk queue associated with it. The root cause of this problem was that it makes no sense to delay messages once they arrive in the action queue - the "input" that is being held in that case is the main queue worker, what makes no sense. Thanks to Marcin for alerting us on this problem and providing instructions to reproduce it.
-rw-r--r--ChangeLog7
-rw-r--r--action.c2
2 files changed, 8 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 0a3cda9d..25a67cfa 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,12 @@
---------------------------------------------------------------------------
Version 5.8.12 [V5-stable] 2012-05-??
+- bugfix: delayble source could block action queue, even if there was
+ a disk queue associated with it. The root cause of this problem was
+ that it makes no sense to delay messages once they arrive in the
+ action queue - the "input" that is being held in that case is the main
+ queue worker, what makes no sense.
+ Thanks to Marcin for alerting us on this problem and providing
+ instructions to reproduce it.
- 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
diff --git a/action.c b/action.c
index e859cce4..459ab0d6 100644
--- a/action.c
+++ b/action.c
@@ -1265,7 +1265,7 @@ doSubmitToActionQ(action_t *pAction, msg_t *pMsg)
if(pAction->pQueue->qType == QUEUETYPE_DIRECT)
iRet = qqueueEnqObjDirect(pAction->pQueue, (void*) MsgAddRef(pMsg));
else
- iRet = qqueueEnqObj(pAction->pQueue, pMsg->flowCtlType, (void*) MsgAddRef(pMsg));
+ iRet = qqueueEnqObj(pAction->pQueue, eFLOWCTL_NO_DELAY, (void*) MsgAddRef(pMsg));
RETiRet;
}