diff options
author | Rainer Gerhards <rgerhards@adiscon.com> | 2011-08-31 11:26:20 +0200 |
---|---|---|
committer | Rainer Gerhards <rgerhards@adiscon.com> | 2011-08-31 11:26:20 +0200 |
commit | 3aa51f2a13374f4e235a13533c552ec3504cb235 (patch) | |
tree | 9e9aaa4ccd94cd608103f5c8e173be99e59a1500 /action.c | |
parent | a8b231875ba6990422f85bd60237c5a2f3c4e7d0 (diff) | |
parent | e3c90bf008d447bc087c4215a630ed023ca6a1b6 (diff) | |
download | rsyslog-3aa51f2a13374f4e235a13533c552ec3504cb235.tar.gz rsyslog-3aa51f2a13374f4e235a13533c552ec3504cb235.tar.xz rsyslog-3aa51f2a13374f4e235a13533c552ec3504cb235.zip |
Merge branch 'beta'
Conflicts:
action.c
Diffstat (limited to 'action.c')
-rw-r--r-- | action.c | 46 |
1 files changed, 22 insertions, 24 deletions
@@ -1560,7 +1560,6 @@ doSubmitToActionQNotAllMarkBatch(action_t *pAction, batch_t *pBatch) time_t now = 0; time_t lastAct; int i; - int bProcessMarkMsgs = 0; int bModifiedFilter; sbool FilterSave[1024]; sbool *pFilterSave; @@ -1574,33 +1573,32 @@ doSubmitToActionQNotAllMarkBatch(action_t *pAction, batch_t *pBatch) bModifiedFilter = 0; for(i = 0 ; i < batchNumMsgs(pBatch) ; ++i) { + if(!pBatch->pElem[i].bFilterOK) + continue; pFilterSave[i] = pBatch->pElem[i].bFilterOK; - if(((msg_t*)(pBatch->pElem[i].pUsrp))->msgFlags & MARK) { - /* check if we need to write or not */ - if(now == 0) { - now = datetime.GetTime(NULL); /* good time call - the only one done */ - /* CAS loop, we write back a bit early, but that's OK... */ - /* we use reception time, not dequeue time - this is considered more appropriate and - * also faster ;) -- rgerhards, 2008-09-17 */ - do { - lastAct = pAction->f_time; - if((now - lastAct) < MarkInterval / 2) { - DBGPRINTF("action was recently called, ignoring mark message\n"); - bProcessMarkMsgs = 0; - } else { - bProcessMarkMsgs = 1; - } - } while(ATOMIC_CAS_time_t(&pAction->f_time, lastAct, - ((msg_t*)(pBatch->pElem[i].pUsrp))->ttGenTime, &pAction->mutCAS) == 0); - } - if(bProcessMarkMsgs) { - pBatch->pElem[i].bFilterOK = 0; - bModifiedFilter = 1; + if(now == 0) { + now = datetime.GetTime(NULL); /* good time call - the only one done */ + } + /* CAS loop, we write back a bit early, but that's OK... */ + /* we use reception time, not dequeue time - this is considered more appropriate and + * also faster ;) -- rgerhards, 2008-09-17 */ + do { + lastAct = pAction->f_time; + if(((msg_t*)(pBatch->pElem[i].pUsrp))->msgFlags & MARK) { + if((now - lastAct) < MarkInterval / 2) { + pBatch->pElem[i].bFilterOK = 0; + bModifiedFilter = 1; + DBGPRINTF("action was recently called, ignoring mark message\n"); + break; /* do not update timestamp for non-written mark messages */ + } } + } while(ATOMIC_CAS_time_t(&pAction->f_time, lastAct, + ((msg_t*)(pBatch->pElem[i].pUsrp))->ttGenTime, &pAction->mutCAS) == 0); + if(pBatch->pElem[i].bFilterOK) { + DBGPRINTF("Called action(NotAllMark), processing batch[%d] via '%s'\n", + i, module.GetStateName(pAction->pMod)); } } - - DBGPRINTF("Called action(NotAllMark), logging to %s\n", module.GetStateName(pAction->pMod)); iRet = doSubmitToActionQBatch(pAction, pBatch); |