mirror of
https://github.com/rsyslog/rsyslog.git
synced 2025-12-17 08:10:43 +01:00
Merge branch 'v5-beta' into beta
This commit is contained in:
commit
4a37e5daba
14
ChangeLog
14
ChangeLog
@ -454,6 +454,13 @@ expected that interfaces, even new ones, break during the initial
|
||||
[ported from v4]
|
||||
---------------------------------------------------------------------------
|
||||
Version 5.9.8 [V5-BETA], 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
|
||||
@ -611,6 +618,13 @@ Version 5.9.0 [V5-DEVEL] (rgerhards), 2011-06-08
|
||||
closes: http://bugzilla.adiscon.com/show_bug.cgi?id=236
|
||||
---------------------------------------------------------------------------
|
||||
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
|
||||
|
||||
2
action.c
2
action.c
@ -1350,7 +1350,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;
|
||||
}
|
||||
|
||||
@ -2462,21 +2462,27 @@ doEnqSingleObj(qqueue_t *pThis, flowControl_t flowCtlType, void *pUsr)
|
||||
while( (pThis->iMaxQueueSize > 0 && pThis->iQueueSize >= pThis->iMaxQueueSize)
|
||||
|| (pThis->qType == QUEUETYPE_DISK && pThis->sizeOnDiskMax != 0
|
||||
&& 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);
|
||||
STATSCOUNTER_INC(pThis->ctrFull, pThis->mutCtrFull);
|
||||
// TODO : handle enqOnly => discard!
|
||||
if(pthread_cond_timedwait(&pThis->notFull, pThis->mut, &t) != 0) {
|
||||
DBGOPRINT((obj_t*) pThis, "enqueueMsg: cond timeout, dropping message!\n");
|
||||
if(pThis->toEnq == 0 || pThis->bEnqOnly) {
|
||||
DBGOPRINT((obj_t*) pThis, "enqueueMsg: queue FULL - configured for immediate discarding.\n");
|
||||
STATSCOUNTER_INC(pThis->ctrFDscrd, pThis->mutCtrFDscrd);
|
||||
objDestruct(pUsr);
|
||||
ABORT_FINALIZE(RS_RET_QUEUE_FULL);
|
||||
}
|
||||
} else {
|
||||
DBGOPRINT((obj_t*) pThis, "enqueueMsg: queue FULL - waiting %dms to drain.\n", pThis->toEnq);
|
||||
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);
|
||||
if(pthread_cond_timedwait(&pThis->notFull, pThis->mut, &t) != 0) {
|
||||
DBGOPRINT((obj_t*) pThis, "enqueueMsg: cond timeout, dropping message!\n");
|
||||
STATSCOUNTER_INC(pThis->ctrFDscrd, pThis->mutCtrFDscrd);
|
||||
objDestruct(pUsr);
|
||||
ABORT_FINALIZE(RS_RET_QUEUE_FULL);
|
||||
}
|
||||
dbgoprint((obj_t*) pThis, "enqueueMsg: wait solved queue full condition, enqueing\n");
|
||||
}
|
||||
}
|
||||
|
||||
/* and finally enqueue the message */
|
||||
|
||||
@ -1663,7 +1663,7 @@ doGlblProcessInit(void)
|
||||
|
||||
if( !(Debug == DEBUG_FULL || NoFork) )
|
||||
{
|
||||
DBGPRINTF("Checking pidfile.\n");
|
||||
DBGPRINTF("Checking pidfile '%s'.\n", PidFile);
|
||||
if (!check_pid(PidFile))
|
||||
{
|
||||
memset(&sigAct, 0, sizeof (sigAct));
|
||||
@ -1736,7 +1736,7 @@ doGlblProcessInit(void)
|
||||
}
|
||||
|
||||
/* tuck my process id away */
|
||||
DBGPRINTF("Writing pidfile %s.\n", PidFile);
|
||||
DBGPRINTF("Writing pidfile '%s'.\n", PidFile);
|
||||
if (!check_pid(PidFile))
|
||||
{
|
||||
if (!write_pid(PidFile))
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user