On Tuesday 03 of December 2013 12:31:25 Karol Jurak wrote:
> Hi,
>
> It looks like, contrary to what [1] says, it's actually impossible (at
> least in 7.4.6) to limit the amount of disk space used by a disk assisted
> queue. The queue.maxdiskspace parameter is equivalent to
> queue.maxfilesize, i.e., it sets the maximum size of a single queue file,
> not the entire queue (set of files).
There are two problems:
1. queue.maxdiskspace actually initializes queue.maxfilesize (Because of
this limiting the total amount of disk space used doesn't work also for
Disk queues.)
2. Total size of queue files is not checked against queue.maxdiskspace for
disk assisted queues.
The attached patch fixes these issues. Please consider applying it.
--
Karol Jurak
diff --git a/runtime/queue.c b/runtime/queue.c
index 935a810..171b7fc 100644
--- a/runtime/queue.c
+++ b/runtime/queue.c
@@ -256,7 +256,7 @@ qqueueDbgPrint(qqueue_t *pThis)
(pThis->pszFilePrefix == NULL) ? "[NONE]" : (char*)pThis->pszFilePrefix);
dbgoprint((obj_t*) pThis, "queue.size: %d\n", pThis->iMaxQueueSize);
dbgoprint((obj_t*) pThis, "queue.dequeuebatchsize: %d\n", pThis->iDeqBatchSize);
- dbgoprint((obj_t*) pThis, "queue.maxdiskspace: %lld\n", pThis->iMaxFileSize);
+ dbgoprint((obj_t*) pThis, "queue.maxdiskspace: %lld\n", pThis->sizeOnDiskMax);
dbgoprint((obj_t*) pThis, "queue.highwatermark: %d\n", pThis->iHighWtrMrk);
dbgoprint((obj_t*) pThis, "queue.lowwatermark: %d\n", pThis->iLowWtrMrk);
dbgoprint((obj_t*) pThis, "queue.fulldelaymark: %d\n", pThis->iFullDlyMrk);
@@ -2564,7 +2564,7 @@ doEnqSingleObj(qqueue_t *pThis, flowControl_t flowCtlType, msg_t *pMsg)
* the queue to become ready or drop the new message. -- rgerhards, 2008-03-14
*/
while( (pThis->iMaxQueueSize > 0 && pThis->iQueueSize >= pThis->iMaxQueueSize)
- || (pThis->qType == QUEUETYPE_DISK && pThis->sizeOnDiskMax != 0
+ || ((pThis->qType == QUEUETYPE_DISK || pThis->bIsDA) && pThis->sizeOnDiskMax != 0
&& pThis->tVars.disk.sizeOnDisk > pThis->sizeOnDiskMax)) {
STATSCOUNTER_INC(pThis->ctrFull, pThis->mutCtrFull);
if(pThis->toEnq == 0 || pThis->bEnqOnly) {
@@ -2753,7 +2753,7 @@ qqueueApplyCnfParam(qqueue_t *pThis, struct cnfparamvals *pvals)
} else if(!strcmp(pblk.descr[i].name, "queue.dequeuebatchsize")) {
pThis->iDeqBatchSize = pvals[i].val.d.n;
} else if(!strcmp(pblk.descr[i].name, "queue.maxdiskspace")) {
- pThis->iMaxFileSize = pvals[i].val.d.n;
+ pThis->sizeOnDiskMax = pvals[i].val.d.n;
} else if(!strcmp(pblk.descr[i].name, "queue.highwatermark")) {
pThis->iHighWtrMrk = pvals[i].val.d.n;
} else if(!strcmp(pblk.descr[i].name, "queue.lowwatermark")) {
_______________________________________________
rsyslog mailing list
http://lists.adiscon.net/mailman/listinfo/rsyslog
http://www.rsyslog.com/professional-services/
What's up with rsyslog? Follow https://twitter.com/rgerhards
NOTE WELL: This is a PUBLIC mailing list, posts are ARCHIVED by a myriad of
sites beyond our control. PLEASE UNSUBSCRIBE and DO NOT POST if you DON'T LIKE
THAT.