diff --git a/src/entry/Maat_api.cpp b/src/entry/Maat_api.cpp index ca8a94c..1c582c7 100644 --- a/src/entry/Maat_api.cpp +++ b/src/entry/Maat_api.cpp @@ -813,8 +813,8 @@ int Maat_initiate_feather(Maat_feather_t feather) maat_stat_init(_feather); - pthread_t cfg_mon_t; - pthread_create(&cfg_mon_t, NULL, thread_rule_monitor, (void*)_feather); + + pthread_create(&(_feather->cfg_mon_t), NULL, thread_rule_monitor, (void*)_feather); return 0; } @@ -889,6 +889,8 @@ void Maat_burn_feather(Maat_feather_t feather) { struct _Maat_feather_t* _feather=(_Maat_feather_t*)feather; _feather->still_working=0;//destroy will proceed in thread_rule_monitor + void* ret=NULL; + pthread_join(_feather->cfg_mon_t, &ret); return; } int Maat_table_register(Maat_feather_t feather,const char* table_name) diff --git a/src/entry/Maat_rule.cpp b/src/entry/Maat_rule.cpp index 146fe14..f2ad2b7 100644 --- a/src/entry/Maat_rule.cpp +++ b/src/entry/Maat_rule.cpp @@ -3576,6 +3576,10 @@ void *thread_rule_monitor(void *arg) feather->redis_write_ctx=NULL; pthread_mutex_unlock(&(feather->redis_write_lock)); } + if(feather->stat_on&& feather->stat_handle) + { + FS_stop(&(feather->stat_handle)); + } free(feather); return NULL; } diff --git a/src/inc_internal/Maat_rule_internal.h b/src/inc_internal/Maat_rule_internal.h index b94273d..e57bfe0 100644 --- a/src/inc_internal/Maat_rule_internal.h +++ b/src/inc_internal/Maat_rule_internal.h @@ -415,6 +415,7 @@ struct _Maat_feather_t char group_tn[MAX_TABLE_NAME_LEN]; pthread_mutex_t backgroud_update_mutex; unsigned char decrypt_key[MAX_TABLE_NAME_LEN]; + pthread_t cfg_mon_t; char redis_ip[MAX_TABLE_NAME_LEN]; int redis_port;