Merge branch '3.0' into fix/check_end_pos
This commit is contained in:
commit
2345f6cf7f
|
@ -387,6 +387,7 @@ int32_t taosGetErrSize();
|
||||||
#define TSDB_CODE_MND_LAST_TRANS_NOT_FINISHED TAOS_DEF_ERROR_CODE(0, 0x03D6) //internal
|
#define TSDB_CODE_MND_LAST_TRANS_NOT_FINISHED TAOS_DEF_ERROR_CODE(0, 0x03D6) //internal
|
||||||
#define TSDB_CODE_MND_TRANS_SYNC_TIMEOUT TAOS_DEF_ERROR_CODE(0, 0x03D7)
|
#define TSDB_CODE_MND_TRANS_SYNC_TIMEOUT TAOS_DEF_ERROR_CODE(0, 0x03D7)
|
||||||
#define TSDB_CODE_MND_TRANS_CTX_SWITCH TAOS_DEF_ERROR_CODE(0, 0x03D8)
|
#define TSDB_CODE_MND_TRANS_CTX_SWITCH TAOS_DEF_ERROR_CODE(0, 0x03D8)
|
||||||
|
#define TSDB_CODE_MND_TRANS_CONFLICT_COMPACT TAOS_DEF_ERROR_CODE(0, 0x03D9)
|
||||||
#define TSDB_CODE_MND_TRANS_UNKNOW_ERROR TAOS_DEF_ERROR_CODE(0, 0x03DF)
|
#define TSDB_CODE_MND_TRANS_UNKNOW_ERROR TAOS_DEF_ERROR_CODE(0, 0x03DF)
|
||||||
|
|
||||||
// mnode-mq
|
// mnode-mq
|
||||||
|
|
|
@ -84,6 +84,7 @@ void mndTransSetParallel(STrans *pTrans);
|
||||||
void mndTransSetChangeless(STrans *pTrans);
|
void mndTransSetChangeless(STrans *pTrans);
|
||||||
void mndTransSetOper(STrans *pTrans, EOperType oper);
|
void mndTransSetOper(STrans *pTrans, EOperType oper);
|
||||||
int32_t mndTransCheckConflict(SMnode *pMnode, STrans *pTrans);
|
int32_t mndTransCheckConflict(SMnode *pMnode, STrans *pTrans);
|
||||||
|
int32_t mndTransCheckConflictWithCompact(SMnode *pMnode, STrans *pTrans);
|
||||||
#ifndef BUILD_NO_CALL
|
#ifndef BUILD_NO_CALL
|
||||||
static int32_t mndTrancCheckConflict(SMnode *pMnode, STrans *pTrans) {
|
static int32_t mndTrancCheckConflict(SMnode *pMnode, STrans *pTrans) {
|
||||||
return mndTransCheckConflict(pMnode, pTrans);
|
return mndTransCheckConflict(pMnode, pTrans);
|
||||||
|
|
|
@ -900,6 +900,41 @@ int32_t mndTransCheckConflict(SMnode *pMnode, STrans *pTrans) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int32_t mndTransCheckConflictWithCompact(SMnode *pMnode, STrans *pTrans) {
|
||||||
|
void *pIter = NULL;
|
||||||
|
bool conflict = false;
|
||||||
|
SCompactObj *pCompact = NULL;
|
||||||
|
|
||||||
|
while (1) {
|
||||||
|
bool thisConflict = false;
|
||||||
|
pIter = sdbFetch(pMnode->pSdb, SDB_COMPACT, pIter, (void **)&pCompact);
|
||||||
|
if (pIter == NULL) break;
|
||||||
|
|
||||||
|
if (pTrans->conflict == TRN_CONFLICT_GLOBAL || pTrans->conflict == TRN_CONFLICT_DB ||
|
||||||
|
pTrans->conflict == TRN_CONFLICT_DB_INSIDE) {
|
||||||
|
if (strcasecmp(pTrans->dbname, pCompact->dbname) == 0) thisConflict = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (thisConflict) {
|
||||||
|
mError("trans:%d, db:%s stb:%s type:%d, can't execute since conflict with compact:%d db:%s", pTrans->id,
|
||||||
|
pTrans->dbname, pTrans->stbname, pTrans->conflict, pCompact->compactId, pCompact->dbname);
|
||||||
|
conflict = true;
|
||||||
|
} else {
|
||||||
|
mInfo("trans:%d, db:%s stb:%s type:%d, not conflict with compact:%d db:%s", pTrans->id, pTrans->dbname,
|
||||||
|
pTrans->stbname, pTrans->conflict, pCompact->compactId, pCompact->dbname);
|
||||||
|
}
|
||||||
|
sdbRelease(pMnode->pSdb, pCompact);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (conflict) {
|
||||||
|
terrno = TSDB_CODE_MND_TRANS_CONFLICT_COMPACT;
|
||||||
|
mError("trans:%d, failed to prepare since %s", pTrans->id, terrstr());
|
||||||
|
return terrno;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static bool mndTransActionsOfSameType(SArray *pActions) {
|
static bool mndTransActionsOfSameType(SArray *pActions) {
|
||||||
int32_t size = taosArrayGetSize(pActions);
|
int32_t size = taosArrayGetSize(pActions);
|
||||||
ETrnAct lastActType = TRANS_ACTION_NULL;
|
ETrnAct lastActType = TRANS_ACTION_NULL;
|
||||||
|
|
|
@ -1952,6 +1952,10 @@ static int32_t mndRedistributeVgroup(SMnode *pMnode, SRpcMsg *pReq, SDbObj *pDb,
|
||||||
|
|
||||||
pTrans = mndTransCreate(pMnode, TRN_POLICY_RETRY, TRN_CONFLICT_GLOBAL, pReq, "red-vgroup");
|
pTrans = mndTransCreate(pMnode, TRN_POLICY_RETRY, TRN_CONFLICT_GLOBAL, pReq, "red-vgroup");
|
||||||
if (pTrans == NULL) goto _OVER;
|
if (pTrans == NULL) goto _OVER;
|
||||||
|
|
||||||
|
mndTransSetDbName(pTrans, pVgroup->dbName, NULL);
|
||||||
|
if (mndTransCheckConflictWithCompact(pMnode, pTrans) != 0) goto _OVER;
|
||||||
|
|
||||||
mndTransSetSerial(pTrans);
|
mndTransSetSerial(pTrans);
|
||||||
mInfo("trans:%d, used to redistribute vgroup, vgId:%d", pTrans->id, pVgroup->vgId);
|
mInfo("trans:%d, used to redistribute vgroup, vgId:%d", pTrans->id, pVgroup->vgId);
|
||||||
|
|
||||||
|
|
|
@ -12822,6 +12822,8 @@ static int32_t parseOneStbRow(SMsgBuf* pMsgBuf, SParseFileContext* pParFileCtx)
|
||||||
code = parseTbnameToken(pMsgBuf, pParFileCtx->ctbName.tname, &token, &bFoundTbName);
|
code = parseTbnameToken(pMsgBuf, pParFileCtx->ctbName.tname, &token, &bFoundTbName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (TSDB_CODE_SUCCESS != code) break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (TSDB_CODE_SUCCESS == code) { // may fail to handle json
|
if (TSDB_CODE_SUCCESS == code) { // may fail to handle json
|
||||||
|
@ -12897,6 +12899,7 @@ static int32_t parseCsvFile(SMsgBuf* pMsgBuf, SParseContext* pParseCxt, SParseFi
|
||||||
taosMemoryFreeClear(pParseFileCtx->pTag);
|
taosMemoryFreeClear(pParseFileCtx->pTag);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pParseFileCtx->pTag = NULL;
|
||||||
taosArrayClearEx(pParseFileCtx->aTagVals, clearTagValArrayFp);
|
taosArrayClearEx(pParseFileCtx->aTagVals, clearTagValArrayFp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -303,6 +303,7 @@ TAOS_DEFINE_ERROR(TSDB_CODE_MND_TRANS_NETWORK_UNAVAILL, "Unable to establish c
|
||||||
TAOS_DEFINE_ERROR(TSDB_CODE_MND_LAST_TRANS_NOT_FINISHED, "Last Transaction not finished")
|
TAOS_DEFINE_ERROR(TSDB_CODE_MND_LAST_TRANS_NOT_FINISHED, "Last Transaction not finished")
|
||||||
TAOS_DEFINE_ERROR(TSDB_CODE_MND_TRANS_SYNC_TIMEOUT, "Sync timeout While execute transaction and will continue in the background")
|
TAOS_DEFINE_ERROR(TSDB_CODE_MND_TRANS_SYNC_TIMEOUT, "Sync timeout While execute transaction and will continue in the background")
|
||||||
TAOS_DEFINE_ERROR(TSDB_CODE_MND_TRANS_CTX_SWITCH, "Transaction context switch")
|
TAOS_DEFINE_ERROR(TSDB_CODE_MND_TRANS_CTX_SWITCH, "Transaction context switch")
|
||||||
|
TAOS_DEFINE_ERROR(TSDB_CODE_MND_TRANS_CONFLICT_COMPACT, "Transaction not completed due to conflict with compact")
|
||||||
TAOS_DEFINE_ERROR(TSDB_CODE_MND_TRANS_UNKNOW_ERROR, "Unknown transaction error")
|
TAOS_DEFINE_ERROR(TSDB_CODE_MND_TRANS_UNKNOW_ERROR, "Unknown transaction error")
|
||||||
|
|
||||||
// mnode-mq
|
// mnode-mq
|
||||||
|
|
Loading…
Reference in New Issue