more work

This commit is contained in:
Hongze Cheng 2022-01-06 06:34:20 +00:00
parent 218fe42c0f
commit 5c66e5f2c2
3 changed files with 18 additions and 6 deletions

View File

@ -23,8 +23,8 @@ extern "C" {
#endif #endif
#define vnodeShouldCommit vnodeBufPoolIsFull #define vnodeShouldCommit vnodeBufPoolIsFull
int vnodeSyncCommit(SVnode *pVnode);
int vnodeAsyncCommit(SVnode *pVnode); int vnodeAsyncCommit(SVnode *pVnode);
int vnodeCommit(void *arg);
#ifdef __cplusplus #ifdef __cplusplus
} }

View File

@ -15,10 +15,14 @@
#include "vnodeDef.h" #include "vnodeDef.h"
static int vnodeStartCommit(SVnode *pVnode); static int vnodeStartCommit(SVnode *pVnode);
static int vnodeEndCommit(SVnode *pVnode); static int vnodeEndCommit(SVnode *pVnode);
static int vnodeCommit(void *arg);
static void vnodeWaitCommit(SVnode *pVnode);
int vnodeAsyncCommit(SVnode *pVnode) { int vnodeAsyncCommit(SVnode *pVnode) {
vnodeWaitCommit(pVnode);
vnodeBufPoolSwitch(pVnode); vnodeBufPoolSwitch(pVnode);
SVnodeTask *pTask = (SVnodeTask *)malloc(sizeof(*pTask)); SVnodeTask *pTask = (SVnodeTask *)malloc(sizeof(*pTask));
@ -33,7 +37,13 @@ int vnodeAsyncCommit(SVnode *pVnode) {
return 0; return 0;
} }
int vnodeCommit(void *arg) { int vnodeSyncCommit(SVnode *pVnode) {
vnodeAsyncCommit(pVnode);
vnodeWaitCommit(pVnode);
return 0;
}
static int vnodeCommit(void *arg) {
SVnode *pVnode = (SVnode *)arg; SVnode *pVnode = (SVnode *)arg;
metaCommit(pVnode->pMeta); metaCommit(pVnode->pMeta);
@ -42,7 +52,6 @@ int vnodeCommit(void *arg) {
vnodeBufPoolRecycle(pVnode); vnodeBufPoolRecycle(pVnode);
tsem_post(&(pVnode->canCommit)); tsem_post(&(pVnode->canCommit));
// TODO
return 0; return 0;
} }
@ -55,3 +64,5 @@ static int vnodeEndCommit(SVnode *pVnode) {
// TODO // TODO
return 0; return 0;
} }
static FORCE_INLINE void vnodeWaitCommit(SVnode *pVnode) { tsem_wait(&pVnode->canCommit); }

View File

@ -137,6 +137,7 @@ static int vnodeOpenImpl(SVnode *pVnode) {
} }
static void vnodeCloseImpl(SVnode *pVnode) { static void vnodeCloseImpl(SVnode *pVnode) {
vnodeSyncCommit(pVnode);
if (pVnode) { if (pVnode) {
vnodeCloseBufPool(pVnode); vnodeCloseBufPool(pVnode);
metaClose(pVnode->pMeta); metaClose(pVnode->pMeta);