fix kill connection with _root user cause taosd crash
This commit is contained in:
parent
6bfbe73623
commit
7029858554
|
@ -295,23 +295,18 @@ int tscBuildQueryStreamDesc(void *pMsg, STscObj *pObj) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void tscKillConnection(STscObj *pObj) {
|
void tscKillConnection(STscObj *pObj) {
|
||||||
|
// get stream header by locked
|
||||||
pthread_mutex_lock(&pObj->mutex);
|
pthread_mutex_lock(&pObj->mutex);
|
||||||
|
|
||||||
SSqlObj *pSql = pObj->sqlList;
|
|
||||||
while (pSql) {
|
|
||||||
pSql = pSql->next;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
SSqlStream *pStream = pObj->streamList;
|
SSqlStream *pStream = pObj->streamList;
|
||||||
|
pthread_mutex_unlock(&pObj->mutex);
|
||||||
|
|
||||||
while (pStream) {
|
while (pStream) {
|
||||||
SSqlStream *tmp = pStream->next;
|
SSqlStream *tmp = pStream->next;
|
||||||
|
// taos_close_stream function call pObj->mutet lock , careful death-lock
|
||||||
taos_close_stream(pStream);
|
taos_close_stream(pStream);
|
||||||
pStream = tmp;
|
pStream = tmp;
|
||||||
}
|
}
|
||||||
|
|
||||||
pthread_mutex_unlock(&pObj->mutex);
|
|
||||||
|
|
||||||
tscDebug("connection:%p is killed", pObj);
|
tscDebug("connection:%p is killed", pObj);
|
||||||
taos_close(pObj);
|
taos_close(pObj);
|
||||||
}
|
}
|
||||||
|
|
|
@ -141,6 +141,10 @@ static void tscProcessStreamTimer(void *handle, void *tmrId) {
|
||||||
|
|
||||||
pStream->numOfRes = 0; // reset the numOfRes.
|
pStream->numOfRes = 0; // reset the numOfRes.
|
||||||
SSqlObj *pSql = pStream->pSql;
|
SSqlObj *pSql = pStream->pSql;
|
||||||
|
// pSql == NULL maybe killStream already called
|
||||||
|
if(pSql == NULL) {
|
||||||
|
return ;
|
||||||
|
}
|
||||||
SQueryInfo* pQueryInfo = tscGetQueryInfoDetail(&pSql->cmd, 0);
|
SQueryInfo* pQueryInfo = tscGetQueryInfoDetail(&pSql->cmd, 0);
|
||||||
tscDebug("0x%"PRIx64" add into timer", pSql->self);
|
tscDebug("0x%"PRIx64" add into timer", pSql->self);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue