fix stuck
This commit is contained in:
parent
0ead2f5354
commit
1c963ec764
|
@ -26,14 +26,10 @@ extern "C" {
|
||||||
#define TD_MOD_UNINITIALIZED 0
|
#define TD_MOD_UNINITIALIZED 0
|
||||||
#define TD_MOD_INITIALIZED 1
|
#define TD_MOD_INITIALIZED 1
|
||||||
|
|
||||||
#define TD_MOD_UNCLEARD 0
|
|
||||||
#define TD_MOD_CLEARD 1
|
|
||||||
|
|
||||||
typedef int8_t td_mode_flag_t;
|
typedef int8_t td_mode_flag_t;
|
||||||
|
|
||||||
#define TD_CHECK_AND_SET_MODE_INIT(FLAG) atomic_val_compare_exchange_8((FLAG), TD_MOD_UNINITIALIZED, TD_MOD_INITIALIZED)
|
#define TD_CHECK_AND_SET_MODE_INIT(FLAG) atomic_val_compare_exchange_8((FLAG), TD_MOD_UNINITIALIZED, TD_MOD_INITIALIZED)
|
||||||
|
#define TD_CHECK_AND_SET_MOD_CLEAR(FLAG) atomic_val_compare_exchange_8((FLAG), TD_MOD_INITIALIZED, TD_MOD_UNINITIALIZED)
|
||||||
#define TD_CHECK_AND_SET_MOD_CLEAR(FLAG) atomic_val_compare_exchange_8((FLAG), TD_MOD_UNCLEARD, TD_MOD_CLEARD)
|
|
||||||
|
|
||||||
#define TD_IS_NULL(PTR) ((PTR) == NULL)
|
#define TD_IS_NULL(PTR) ((PTR) == NULL)
|
||||||
|
|
||||||
|
|
|
@ -49,7 +49,6 @@ typedef struct SVnodeTask {
|
||||||
|
|
||||||
typedef struct SVnodeMgr {
|
typedef struct SVnodeMgr {
|
||||||
td_mode_flag_t vnodeInitFlag;
|
td_mode_flag_t vnodeInitFlag;
|
||||||
td_mode_flag_t vnodeClearFlag;
|
|
||||||
// For commit
|
// For commit
|
||||||
bool stop;
|
bool stop;
|
||||||
uint16_t nthreads;
|
uint16_t nthreads;
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
|
|
||||||
#include "vnodeDef.h"
|
#include "vnodeDef.h"
|
||||||
|
|
||||||
SVnodeMgr vnodeMgr = {.vnodeInitFlag = TD_MOD_UNINITIALIZED, .vnodeClearFlag = TD_MOD_UNCLEARD, .stop = false};
|
SVnodeMgr vnodeMgr = {.vnodeInitFlag = TD_MOD_UNINITIALIZED};
|
||||||
|
|
||||||
static void* loop(void* arg);
|
static void* loop(void* arg);
|
||||||
|
|
||||||
|
@ -24,6 +24,8 @@ int vnodeInit(uint16_t nthreads) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
vnodeMgr.stop = false;
|
||||||
|
|
||||||
// Start commit handers
|
// Start commit handers
|
||||||
if (nthreads > 0) {
|
if (nthreads > 0) {
|
||||||
vnodeMgr.nthreads = nthreads;
|
vnodeMgr.nthreads = nthreads;
|
||||||
|
@ -38,6 +40,7 @@ int vnodeInit(uint16_t nthreads) {
|
||||||
|
|
||||||
for (uint16_t i = 0; i < nthreads; i++) {
|
for (uint16_t i = 0; i < nthreads; i++) {
|
||||||
pthread_create(&(vnodeMgr.threads[i]), NULL, loop, NULL);
|
pthread_create(&(vnodeMgr.threads[i]), NULL, loop, NULL);
|
||||||
|
pthread_setname_np(vnodeMgr.threads[i], "VND Commit Thread");
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// TODO: if no commit thread is set, then another mechanism should be
|
// TODO: if no commit thread is set, then another mechanism should be
|
||||||
|
@ -53,7 +56,7 @@ int vnodeInit(uint16_t nthreads) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void vnodeClear() {
|
void vnodeClear() {
|
||||||
if (TD_CHECK_AND_SET_MOD_CLEAR(&(vnodeMgr.vnodeClearFlag)) == TD_MOD_CLEARD) {
|
if (TD_CHECK_AND_SET_MOD_CLEAR(&(vnodeMgr.vnodeInitFlag)) == TD_MOD_UNINITIALIZED) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue