From 2fcc970d79727ba9ac3d06e4ff1fc67e771d960e Mon Sep 17 00:00:00 2001 From: Minghao Li Date: Wed, 9 Mar 2022 11:27:22 +0800 Subject: [PATCH] sync refactor --- source/libs/sync/inc/syncInt.h | 7 +++- source/libs/sync/src/syncIndexMgr.c | 5 ++- source/libs/sync/test/syncIndexMgrTest.cpp | 49 ++++++++-------------- 3 files changed, 25 insertions(+), 36 deletions(-) diff --git a/source/libs/sync/inc/syncInt.h b/source/libs/sync/inc/syncInt.h index 447b75a5e8..8b77e292c4 100644 --- a/source/libs/sync/inc/syncInt.h +++ b/source/libs/sync/inc/syncInt.h @@ -103,6 +103,9 @@ typedef struct SVotesGranted SVotesGranted; struct SVotesRespond; typedef struct SVotesRespond SVotesRespond; +struct SSyncIndexMgr; +typedef struct SSyncIndexMgr SSyncIndexMgr; + typedef struct SRaftId { SyncNodeId addr; // typedef uint64_t SyncNodeId; SyncGroupId vgId; // typedef int32_t SyncGroupId; @@ -148,8 +151,8 @@ typedef struct SSyncNode { SVotesRespond* pVotesRespond; // tla+ leader vars - SHashObj* pNextIndex; - SHashObj* pMatchIndex; + SSyncIndexMgr* pNextIndex; + SSyncIndexMgr* pMatchIndex; // tla+ log vars SSyncLogStore* pLogStore; diff --git a/source/libs/sync/src/syncIndexMgr.c b/source/libs/sync/src/syncIndexMgr.c index 86b719ba1e..fff54638e2 100644 --- a/source/libs/sync/src/syncIndexMgr.c +++ b/source/libs/sync/src/syncIndexMgr.c @@ -81,8 +81,9 @@ cJSON *syncIndexMgr2Json(SSyncIndexMgr *pSyncIndexMgr) { for (int i = 0; i < pSyncIndexMgr->replicaNum; ++i) { arr[i] = pSyncIndexMgr->index[i]; } - cJSON *pIsRespond = cJSON_CreateIntArray(arr, pSyncIndexMgr->replicaNum); + cJSON *pIndex = cJSON_CreateIntArray(arr, pSyncIndexMgr->replicaNum); free(arr); + cJSON_AddItemToObject(pRoot, "index", pIndex); snprintf(u64buf, sizeof(u64buf), "%p", pSyncIndexMgr->pSyncNode); cJSON_AddStringToObject(pRoot, "pSyncNode", u64buf); @@ -93,7 +94,7 @@ cJSON *syncIndexMgr2Json(SSyncIndexMgr *pSyncIndexMgr) { char *syncIndexMgr2Str(SSyncIndexMgr *pSyncIndexMgr) { cJSON *pJson = syncIndexMgr2Json(pSyncIndexMgr); - char *serialized = cJSON_Print(pJson); + char * serialized = cJSON_Print(pJson); cJSON_Delete(pJson); return serialized; } \ No newline at end of file diff --git a/source/libs/sync/test/syncIndexMgrTest.cpp b/source/libs/sync/test/syncIndexMgrTest.cpp index 3edde509f8..4e4cd9222b 100644 --- a/source/libs/sync/test/syncIndexMgrTest.cpp +++ b/source/libs/sync/test/syncIndexMgrTest.cpp @@ -1,4 +1,5 @@ -#include +#include "syncIndexMgr.h" +//#include #include #include "syncEnv.h" #include "syncIO.h" @@ -97,60 +98,44 @@ int main(int argc, char** argv) { initRaftId(pSyncNode); - SVotesGranted* pVotesGranted = voteGrantedCreate(pSyncNode); - assert(pVotesGranted != NULL); + SSyncIndexMgr* pSyncIndexMgr = syncIndexMgrCreate(pSyncNode); + assert(pSyncIndexMgr != NULL); printf("---------------------------------------\n"); { - char* serialized = voteGranted2Str(pVotesGranted); + char* serialized = syncIndexMgr2Str(pSyncIndexMgr); assert(serialized != NULL); printf("%s\n", serialized); free(serialized); } - SyncTerm term = 1234; + syncIndexMgrSetIndex(pSyncIndexMgr, &ids[0], 100); + syncIndexMgrSetIndex(pSyncIndexMgr, &ids[1], 200); + syncIndexMgrSetIndex(pSyncIndexMgr, &ids[2], 300); + printf("---------------------------------------\n"); - voteGrantedReset(pVotesGranted, term); { - char* serialized = voteGranted2Str(pVotesGranted); + char* serialized = syncIndexMgr2Str(pSyncIndexMgr); assert(serialized != NULL); printf("%s\n", serialized); free(serialized); } - for (int i = 0; i < replicaNum; ++i) { - SyncRequestVoteReply* reply = SyncRequestVoteReplyBuild(); - reply->destId = pSyncNode->myRaftId; - reply->srcId = ids[i]; - reply->term = term; - reply->voteGranted = true; - - voteGrantedVote(pVotesGranted, reply); - { - char* serialized = voteGranted2Str(pVotesGranted); - assert(serialized != NULL); - printf("%s\n", serialized); - free(serialized); - } - - voteGrantedVote(pVotesGranted, reply); - { - char* serialized = voteGranted2Str(pVotesGranted); - assert(serialized != NULL); - printf("%s\n", serialized); - free(serialized); - } + printf("---------------------------------------\n"); + for (int i = 0; i < pSyncIndexMgr->replicaNum; ++i) { + SyncIndex idx = syncIndexMgrGetIndex(pSyncIndexMgr, &ids[i]); + printf("index %d : %lu \n", i, idx); } + syncIndexMgrClear(pSyncIndexMgr); printf("---------------------------------------\n"); - voteGrantedReset(pVotesGranted, 123456789); { - char* serialized = voteGranted2Str(pVotesGranted); + char* serialized = syncIndexMgr2Str(pSyncIndexMgr); assert(serialized != NULL); printf("%s\n", serialized); free(serialized); } - voteGrantedDestroy(pVotesGranted); + syncIndexMgrDestroy(pSyncIndexMgr); return 0; }