refactor: pullup after sorting by transId
This commit is contained in:
parent
cb2527f71f
commit
8bbae8dd12
|
@ -1343,19 +1343,35 @@ _OVER:
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
void mndTransPullup(SMnode *pMnode) {
|
static int32_t mndCompareTransId(int32_t *pTransId1, int32_t *pTransId2) { return *pTransId1 >= *pTransId2 ? 1 : 0; }
|
||||||
STrans *pTrans = NULL;
|
|
||||||
void *pIter = NULL;
|
|
||||||
|
|
||||||
|
void mndTransPullup(SMnode *pMnode) {
|
||||||
|
SSdb *pSdb = pMnode->pSdb;
|
||||||
|
SArray *pArray = taosArrayInit(sdbGetSize(pSdb, SDB_TRANS), sizeof(int32_t));
|
||||||
|
if (pArray == NULL) return;
|
||||||
|
|
||||||
|
void *pIter = NULL;
|
||||||
while (1) {
|
while (1) {
|
||||||
|
STrans *pTrans = NULL;
|
||||||
pIter = sdbFetch(pMnode->pSdb, SDB_TRANS, pIter, (void **)&pTrans);
|
pIter = sdbFetch(pMnode->pSdb, SDB_TRANS, pIter, (void **)&pTrans);
|
||||||
if (pIter == NULL) break;
|
if (pIter == NULL) break;
|
||||||
|
taosArrayPush(pArray, &pTrans->id);
|
||||||
|
sdbRelease(pSdb, pTrans);
|
||||||
|
}
|
||||||
|
|
||||||
mndTransExecute(pMnode, pTrans);
|
taosArraySort(pArray, (__compar_fn_t)mndCompareTransId);
|
||||||
sdbRelease(pMnode->pSdb, pTrans);
|
|
||||||
|
for (int32_t i = 0; i < taosArrayGetSize(pArray); ++i) {
|
||||||
|
int32_t *pTransId = taosArrayGet(pArray, i);
|
||||||
|
STrans *pTrans = mndAcquireTrans(pMnode, *pTransId);
|
||||||
|
if (pTrans != NULL) {
|
||||||
|
mndTransExecute(pMnode, pTrans);
|
||||||
|
}
|
||||||
|
mndReleaseTrans(pMnode, pTrans);
|
||||||
}
|
}
|
||||||
|
|
||||||
sdbWriteFile(pMnode->pSdb);
|
sdbWriteFile(pMnode->pSdb);
|
||||||
|
taosArrayDestroy(pArray);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int32_t mndRetrieveTrans(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pBlock, int32_t rows) {
|
static int32_t mndRetrieveTrans(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pBlock, int32_t rows) {
|
||||||
|
|
Loading…
Reference in New Issue