Merge pull request #1478 from taosdata/hotfix/queue

Hotfix/queue
This commit is contained in:
slguan 2020-03-31 18:56:34 +08:00 committed by GitHub
commit d91b37b726
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 15 additions and 11 deletions

BIN
src/util/src/.tqueue.c.swp Normal file

Binary file not shown.

View File

@ -68,10 +68,10 @@ void taosCloseQueue(taos_queue param) {
STaosQnode *pNode = queue->head;
queue->head = NULL;
pthread_mutex_lock(&queue->mutex);
if (queue->qset) taosRemoveFromQset(queue->qset, queue);
pthread_mutex_lock(&queue->mutex);
while (pNode) {
pTemp = pNode;
pNode = pNode->next;
@ -253,20 +253,29 @@ void taosRemoveFromQset(taos_qset p1, taos_queue p2) {
STaosQueue *queue = (STaosQueue *)p2;
STaosQset *qset = (STaosQset *)p1;
STaosQueue *tqueue;
STaosQueue *tqueue = NULL;
pthread_mutex_lock(&qset->mutex);
if (qset->head) {
if (qset->head == queue) {
qset->head = qset->head->next;
qset->numOfQueues--;
tqueue = queue;
} else {
STaosQueue *prev = qset->head;
tqueue = qset->head->next;
while (tqueue) {
if (tqueue== queue) {
prev->next = tqueue->next;
break;
} else {
prev = tqueue;
tqueue = tqueue->next;
}
}
}
if (tqueue) {
if (qset->current == queue) qset->current = tqueue->next;
qset->numOfQueues--;
@ -274,11 +283,6 @@ void taosRemoveFromQset(taos_qset p1, taos_queue p2) {
atomic_sub_fetch_32(&qset->numOfItems, queue->numOfItems);
queue->qset = NULL;
pthread_mutex_unlock(&queue->mutex);
} else {
prev = tqueue;
tqueue = tqueue->next;
}
}
}
}