fix invalid error in dnode write
This commit is contained in:
parent
267e2566b6
commit
0f29af4a03
|
@ -96,6 +96,7 @@ void dnodeWrite(SRpcMsg *pMsg) {
|
||||||
SMsgDesc *pDesc = (SMsgDesc *)pCont;
|
SMsgDesc *pDesc = (SMsgDesc *)pCont;
|
||||||
pDesc->numOfVnodes = htonl(pDesc->numOfVnodes);
|
pDesc->numOfVnodes = htonl(pDesc->numOfVnodes);
|
||||||
pCont += sizeof(SMsgDesc);
|
pCont += sizeof(SMsgDesc);
|
||||||
|
leftLen -= sizeof(SMsgDesc);
|
||||||
if (pDesc->numOfVnodes > 1) {
|
if (pDesc->numOfVnodes > 1) {
|
||||||
pRpcContext = calloc(sizeof(SRpcContext), 1);
|
pRpcContext = calloc(sizeof(SRpcContext), 1);
|
||||||
pRpcContext->numOfVnodes = pDesc->numOfVnodes;
|
pRpcContext->numOfVnodes = pDesc->numOfVnodes;
|
||||||
|
|
|
@ -435,8 +435,10 @@ void sdbIncRef(void *handle, void *pRow) {
|
||||||
SSdbTable *pTable = handle;
|
SSdbTable *pTable = handle;
|
||||||
int32_t *pRefCount = (int32_t *)(pRow + pTable->refCountPos);
|
int32_t *pRefCount = (int32_t *)(pRow + pTable->refCountPos);
|
||||||
atomic_add_fetch_32(pRefCount, 1);
|
atomic_add_fetch_32(pRefCount, 1);
|
||||||
|
if (0) {
|
||||||
sdbTrace("table:%s, add ref to record:%s:%s:%d", pTable->tableName, pTable->tableName, sdbGetkeyStr(pTable, pRow), *pRefCount);
|
sdbTrace("table:%s, add ref to record:%s:%s:%d", pTable->tableName, pTable->tableName, sdbGetkeyStr(pTable, pRow), *pRefCount);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void sdbDecRef(void *handle, void *pRow) {
|
void sdbDecRef(void *handle, void *pRow) {
|
||||||
|
@ -444,8 +446,9 @@ void sdbDecRef(void *handle, void *pRow) {
|
||||||
SSdbTable *pTable = handle;
|
SSdbTable *pTable = handle;
|
||||||
int32_t *pRefCount = (int32_t *)(pRow + pTable->refCountPos);
|
int32_t *pRefCount = (int32_t *)(pRow + pTable->refCountPos);
|
||||||
int32_t refCount = atomic_sub_fetch_32(pRefCount, 1);
|
int32_t refCount = atomic_sub_fetch_32(pRefCount, 1);
|
||||||
|
if (0) {
|
||||||
sdbTrace("table:%s, def ref of record:%s:%s:%d", pTable->tableName, pTable->tableName, sdbGetkeyStr(pTable, pRow), *pRefCount);
|
sdbTrace("table:%s, def ref of record:%s:%s:%d", pTable->tableName, pTable->tableName, sdbGetkeyStr(pTable, pRow), *pRefCount);
|
||||||
|
}
|
||||||
int8_t* updateEnd = pRow + pTable->refCountPos - 1;
|
int8_t* updateEnd = pRow + pTable->refCountPos - 1;
|
||||||
if (refCount <= 0 && *updateEnd) {
|
if (refCount <= 0 && *updateEnd) {
|
||||||
sdbTrace("table:%s, record:%s:%s:%d is destroyed", pTable->tableName, pTable->tableName, sdbGetkeyStr(pTable, pRow), *pRefCount);
|
sdbTrace("table:%s, record:%s:%s:%d is destroyed", pTable->tableName, pTable->tableName, sdbGetkeyStr(pTable, pRow), *pRefCount);
|
||||||
|
|
Loading…
Reference in New Issue