减少增量更新时hier重建的写锁临界区,减少扫描线程的所冲突。 修复 TSG-7211
This commit is contained in:
@@ -1198,18 +1198,17 @@ int Maat_hierarchy_rebuild(struct Maat_hierarchy* hier)
|
|||||||
int ret=0;
|
int ret=0;
|
||||||
struct bool_matcher* new_bm=NULL, *old_bm=NULL;
|
struct bool_matcher* new_bm=NULL, *old_bm=NULL;
|
||||||
struct region2clause_value* new_region2clause_hash=NULL, *old_region2clause_hash=NULL;
|
struct region2clause_value* new_region2clause_hash=NULL, *old_region2clause_hash=NULL;
|
||||||
|
|
||||||
|
//Read hier from update thread is OK.
|
||||||
|
ret=Maat_hierarchy_build_top_groups(hier);
|
||||||
|
new_bm=Maat_hierarchy_build_bool_matcher(hier);
|
||||||
|
new_region2clause_hash=Maat_hierarchy_build_region2clause_hash(hier);
|
||||||
|
|
||||||
pthread_rwlock_wrlock(&hier->rwlock);
|
pthread_rwlock_wrlock(&hier->rwlock);
|
||||||
|
|
||||||
ret=Maat_hierarchy_build_top_groups(hier);
|
old_bm=hier->bm;
|
||||||
|
|
||||||
new_bm=Maat_hierarchy_build_bool_matcher(hier);
|
|
||||||
old_bm=hier->bm;
|
|
||||||
|
|
||||||
new_region2clause_hash=Maat_hierarchy_build_region2clause_hash(hier);
|
|
||||||
old_region2clause_hash=hier->hash_region2clause;
|
old_region2clause_hash=hier->hash_region2clause;
|
||||||
|
|
||||||
|
|
||||||
hier->bm=new_bm;
|
hier->bm=new_bm;
|
||||||
hier->hash_region2clause=new_region2clause_hash;
|
hier->hash_region2clause=new_region2clause_hash;
|
||||||
pthread_rwlock_unlock(&hier->rwlock);
|
pthread_rwlock_unlock(&hier->rwlock);
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ extern "C"
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
int MAAT_FRAME_VERSION_3_4_1_20210719=1;
|
int MAAT_FRAME_VERSION_3_4_3_20210727=1;
|
||||||
|
|
||||||
int is_valid_table_name(const char* str)
|
int is_valid_table_name(const char* str)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user