diff options
author | Rainer Gerhards <rgerhards@adiscon.com> | 2010-01-26 11:33:32 +0100 |
---|---|---|
committer | Rainer Gerhards <rgerhards@adiscon.com> | 2010-01-26 11:33:32 +0100 |
commit | 2c8654806373b289089b319f25146af2bb546118 (patch) | |
tree | fbbe4ab1cd3f79c6090708820698ab6ab8a16acf /runtime/queue.c | |
parent | bd03b86c6322c82fc9f667122f4365e339f28ccc (diff) | |
parent | ca8884d85d4ca35ebc8f410f78716ddb46ad86bb (diff) | |
download | rsyslog-2c8654806373b289089b319f25146af2bb546118.tar.gz rsyslog-2c8654806373b289089b319f25146af2bb546118.tar.xz rsyslog-2c8654806373b289089b319f25146af2bb546118.zip |
Merge branch 'queuepatch' into v4-betanew
Conflicts:
runtime/queue.c
Diffstat (limited to 'runtime/queue.c')
-rw-r--r-- | runtime/queue.c | 25 |
1 files changed, 15 insertions, 10 deletions
diff --git a/runtime/queue.c b/runtime/queue.c index ddff1bcf..33fb4c0f 100644 --- a/runtime/queue.c +++ b/runtime/queue.c @@ -858,9 +858,11 @@ static rsRetVal qDestructDisk(qqueue_t *pThis) DEFiRet; ASSERT(pThis != NULL); - - strm.Destruct(&pThis->tVars.disk.pWrite); - strm.Destruct(&pThis->tVars.disk.pRead); + + if (pThis->tVars.disk.pWrite != NULL) + strmDestruct(&pThis->tVars.disk.pWrite); + if (pThis->tVars.disk.pRead != NULL) + strmDestruct(&pThis->tVars.disk.pRead); RETiRet; } @@ -1214,7 +1216,7 @@ static rsRetVal qqueueShutdownWorkers(qqueue_t *pThis) /* we need to re-aquire the mutex for the next check in this case! */ BEGIN_MTX_PROTECTED_OPERATIONS(pThis->mut, LOCK_MUTEX); /* some workers may be running in parallel! */ } - if(pThis->bIsDA && wtpGetCurNumWrkr(pThis->pWtpDA, LOCK_MUTEX) > 0) { + if(pThis->bRunsDA && wtpGetCurNumWrkr(pThis->pWtpDA, LOCK_MUTEX) > 0) { /* and now the same for the DA queue */ END_MTX_PROTECTED_OPERATIONS(pThis->mut); dbgoprint((obj_t*) pThis, "trying immediate shutdown of DA workers\n"); @@ -1666,7 +1668,7 @@ qqueueChkStopWrkrDA(qqueue_t *pThis) if(pThis->bEnqOnly) { bStopWrkr = 1; } else { - if(pThis->bRunsDA) { + if(pThis->bRunsDA == 2) { ASSERT(pThis->pqDA != NULL); if( pThis->pqDA->bEnqOnly && pThis->pqDA->sizeOnDiskMax > 0 @@ -1921,7 +1923,8 @@ static rsRetVal qqueuePersist(qqueue_t *pThis, int bIsCheckpoint) pThis->bNeedDelQIF = 0; } /* indicate spool file needs to be deleted */ - CHKiRet(strm.SetbDeleteOnClose(pThis->tVars.disk.pRead, 1)); + if (pThis->tVars.disk.pRead != NULL) + CHKiRet(strmSetbDeleteOnClose(pThis->tVars.disk.pRead, 1)); FINALIZE; /* nothing left to do, so be happy */ } @@ -1955,14 +1958,16 @@ static rsRetVal qqueuePersist(qqueue_t *pThis, int bIsCheckpoint) } /* now persist the stream info */ - CHKiRet(strm.Serialize(pThis->tVars.disk.pWrite, psQIF)); - CHKiRet(strm.Serialize(pThis->tVars.disk.pRead, psQIF)); + if (pThis->tVars.disk.pWrite != NULL) + CHKiRet(strmSerialize(pThis->tVars.disk.pWrite, psQIF)); + if (pThis->tVars.disk.pRead != NULL) + CHKiRet(strmSerialize(pThis->tVars.disk.pRead, psQIF)); /* tell the input file object that it must not delete the file on close if the queue * is non-empty - but only if we are not during a simple checkpoint */ - if(bIsCheckpoint != QUEUE_CHECKPOINT) { - CHKiRet(strm.SetbDeleteOnClose(pThis->tVars.disk.pRead, 0)); + if(bIsCheckpoint != QUEUE_CHECKPOINT && pThis->tVars.disk.pRead != NULL) { + CHKiRet(strmSetbDeleteOnClose(pThis->tVars.disk.pRead, 0)); } /* we have persisted the queue object. So whenever it comes to an empty queue, |