refactor: adjust status in sdb
This commit is contained in:
parent
5fdaceb861
commit
0052d5bc21
|
@ -107,10 +107,9 @@ typedef enum {
|
||||||
typedef enum {
|
typedef enum {
|
||||||
SDB_STATUS_INIT = 0,
|
SDB_STATUS_INIT = 0,
|
||||||
SDB_STATUS_CREATING = 1,
|
SDB_STATUS_CREATING = 1,
|
||||||
SDB_STATUS_UPDATING = 2,
|
SDB_STATUS_DROPPING = 2,
|
||||||
SDB_STATUS_DROPPING = 3,
|
SDB_STATUS_DROPPED = 3,
|
||||||
SDB_STATUS_READY = 4,
|
SDB_STATUS_READY = 4,
|
||||||
SDB_STATUS_DROPPED = 5
|
|
||||||
} ESdbStatus;
|
} ESdbStatus;
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
|
|
|
@ -1102,7 +1102,7 @@ static int32_t mndSetAlterStbRedoLogs(SMnode *pMnode, STrans *pTrans, SDbObj *pD
|
||||||
SSdbRaw *pRedoRaw = mndStbActionEncode(pStb);
|
SSdbRaw *pRedoRaw = mndStbActionEncode(pStb);
|
||||||
if (pRedoRaw == NULL) return -1;
|
if (pRedoRaw == NULL) return -1;
|
||||||
if (mndTransAppendRedolog(pTrans, pRedoRaw) != 0) return -1;
|
if (mndTransAppendRedolog(pTrans, pRedoRaw) != 0) return -1;
|
||||||
if (sdbSetRawStatus(pRedoRaw, SDB_STATUS_UPDATING) != 0) return -1;
|
if (sdbSetRawStatus(pRedoRaw, SDB_STATUS_READY) != 0) return -1;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -601,8 +601,8 @@ TEST_F(MndTestSdb, 01_Write_Str) {
|
||||||
pRaw = i32Encode(&i32Obj);
|
pRaw = i32Encode(&i32Obj);
|
||||||
sdbSetRawStatus(pRaw, SDB_STATUS_DROPPED);
|
sdbSetRawStatus(pRaw, SDB_STATUS_DROPPED);
|
||||||
ASSERT_EQ(sdbWrite(pSdb, pRaw), 0);
|
ASSERT_EQ(sdbWrite(pSdb, pRaw), 0);
|
||||||
pObj = (SStrObj *)sdbAcquire(pSdb, SDB_VGROUP, &key);
|
pI32Obj = (SI32Obj *)sdbAcquire(pSdb, SDB_VGROUP, &key);
|
||||||
ASSERT_EQ(pObj, nullptr);
|
ASSERT_EQ(pI32Obj, nullptr);
|
||||||
ASSERT_EQ(sdbGetSize(pSdb, SDB_VGROUP), 0);
|
ASSERT_EQ(sdbGetSize(pSdb, SDB_VGROUP), 0);
|
||||||
ASSERT_EQ(sdbGetTableVer(pSdb, SDB_VGROUP), 3);
|
ASSERT_EQ(sdbGetTableVer(pSdb, SDB_VGROUP), 3);
|
||||||
ASSERT_EQ(sdbGetMaxId(pSdb, SDB_VGROUP), 5);
|
ASSERT_EQ(sdbGetMaxId(pSdb, SDB_VGROUP), 5);
|
||||||
|
@ -868,7 +868,37 @@ TEST_F(MndTestSdb, 01_Read_Str) {
|
||||||
ASSERT_EQ(sdbGetSize(pSdb, SDB_CONSUMER), 1);
|
ASSERT_EQ(sdbGetSize(pSdb, SDB_CONSUMER), 1);
|
||||||
ASSERT_EQ(sdbGetTableVer(pSdb, SDB_CONSUMER), 4);
|
ASSERT_EQ(sdbGetTableVer(pSdb, SDB_CONSUMER), 4);
|
||||||
|
|
||||||
sdbCleanup(pSdb);
|
|
||||||
ASSERT_EQ(mnode.insertTimes, 4);
|
ASSERT_EQ(mnode.insertTimes, 4);
|
||||||
ASSERT_EQ(mnode.deleteTimes, 4);
|
ASSERT_EQ(mnode.deleteTimes, 0);
|
||||||
|
|
||||||
|
{
|
||||||
|
SI32Obj i32Obj = {0};
|
||||||
|
int32_t key = 6;
|
||||||
|
i32SetDefault(&i32Obj, key);
|
||||||
|
pRaw = i32Encode(&i32Obj);
|
||||||
|
sdbSetRawStatus(pRaw, SDB_STATUS_DROPPING);
|
||||||
|
ASSERT_EQ(sdbWrite(pSdb, pRaw), 0);
|
||||||
|
pI32Obj = (SI32Obj *)sdbAcquire(pSdb, SDB_VGROUP, &key);
|
||||||
|
ASSERT_EQ(pI32Obj, nullptr);
|
||||||
|
int32_t code = terrno;
|
||||||
|
ASSERT_EQ(code, TSDB_CODE_SDB_OBJ_DROPPING);
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
SI32Obj i32Obj = {0};
|
||||||
|
int32_t key = 8;
|
||||||
|
i32SetDefault(&i32Obj, key);
|
||||||
|
pRaw = i32Encode(&i32Obj);
|
||||||
|
EXPECT_NE(sdbSetRawStatus(pRaw, SDB_STATUS_INIT), 0);
|
||||||
|
sdbSetRawStatus(pRaw, SDB_STATUS_CREATING);
|
||||||
|
ASSERT_EQ(sdbWrite(pSdb, pRaw), 0);
|
||||||
|
pI32Obj = (SI32Obj *)sdbAcquire(pSdb, SDB_VGROUP, &key);
|
||||||
|
ASSERT_EQ(pI32Obj, nullptr);
|
||||||
|
int32_t code = terrno;
|
||||||
|
ASSERT_EQ(code, TSDB_CODE_SDB_OBJ_CREATING);
|
||||||
|
}
|
||||||
|
|
||||||
|
sdbCleanup(pSdb);
|
||||||
|
ASSERT_EQ(mnode.insertTimes, 5);
|
||||||
|
ASSERT_EQ(mnode.deleteTimes, 5);
|
||||||
}
|
}
|
|
@ -69,8 +69,6 @@ static const char *sdbStatusName(ESdbStatus status) {
|
||||||
switch (status) {
|
switch (status) {
|
||||||
case SDB_STATUS_CREATING:
|
case SDB_STATUS_CREATING:
|
||||||
return "creating";
|
return "creating";
|
||||||
case SDB_STATUS_UPDATING:
|
|
||||||
return "updating";
|
|
||||||
case SDB_STATUS_DROPPING:
|
case SDB_STATUS_DROPPING:
|
||||||
return "dropping";
|
return "dropping";
|
||||||
case SDB_STATUS_READY:
|
case SDB_STATUS_READY:
|
||||||
|
@ -253,7 +251,6 @@ int32_t sdbWriteWithoutFree(SSdb *pSdb, SSdbRaw *pRaw) {
|
||||||
case SDB_STATUS_CREATING:
|
case SDB_STATUS_CREATING:
|
||||||
code = sdbInsertRow(pSdb, hash, pRaw, pRow, keySize);
|
code = sdbInsertRow(pSdb, hash, pRaw, pRow, keySize);
|
||||||
break;
|
break;
|
||||||
case SDB_STATUS_UPDATING:
|
|
||||||
case SDB_STATUS_READY:
|
case SDB_STATUS_READY:
|
||||||
case SDB_STATUS_DROPPING:
|
case SDB_STATUS_DROPPING:
|
||||||
code = sdbUpdateRow(pSdb, hash, pRaw, pRow, keySize);
|
code = sdbUpdateRow(pSdb, hash, pRaw, pRow, keySize);
|
||||||
|
@ -294,7 +291,6 @@ void *sdbAcquire(SSdb *pSdb, ESdbType type, const void *pKey) {
|
||||||
SSdbRow *pRow = *ppRow;
|
SSdbRow *pRow = *ppRow;
|
||||||
switch (pRow->status) {
|
switch (pRow->status) {
|
||||||
case SDB_STATUS_READY:
|
case SDB_STATUS_READY:
|
||||||
case SDB_STATUS_UPDATING:
|
|
||||||
atomic_add_fetch_32(&pRow->refCount, 1);
|
atomic_add_fetch_32(&pRow->refCount, 1);
|
||||||
pRet = pRow->pObj;
|
pRet = pRow->pObj;
|
||||||
sdbPrintOper(pSdb, pRow, "acquire");
|
sdbPrintOper(pSdb, pRow, "acquire");
|
||||||
|
|
|
@ -134,6 +134,11 @@ int32_t sdbSetRawStatus(SSdbRaw *pRaw, ESdbStatus status) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (status == SDB_STATUS_INIT) {
|
||||||
|
terrno = TSDB_CODE_INVALID_PARA;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
pRaw->status = status;
|
pRaw->status = status;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue