Commit Graph

43 Commits

Author SHA1 Message Date
zhengchao
742512e10f 修复由于笔误将Maat_hierarchy_clause_fetch中的局部变量的定义为静态变量的错误。 多个maat实例同时重建布尔表达式运算器时,该错误会导致线程不安全访问静态变量,但不应导致 TSG-9741 。 2022-04-23 18:17:28 +08:00
zhengchao
50934de91d Plugin表更新后,不需要进行Hierarchy的重建。 2021-08-05 13:51:17 +08:00
zhengchao
96abe1d9f4 Maat_hierarchy_build_region2clause_hash中,不在对group中的region id排序和去重, 可以提高大Group的加载性能。 2021-07-27 15:17:29 +08:00
zhengchao
dc057b2562 减少增量更新时hier重建的写锁临界区,减少扫描线程的所冲突。 修复 TSG-7211 2021-07-27 11:54:24 +08:00
zhengchao
0037646ef6 因使用MAAT_SET_SCAN_NO_COUNT后,在Group移除region id时会出现误命中,移除对MAAT_SET_SCAN_NO_COUNT的支持。 回调表使用feather中的垃圾回收队列,便于观察队列长度。 2021-07-21 14:48:08 +08:00
zhengchao
72ffbd9809 修复bug:上一版本引入,region更新不能反映到compile命中;
改善Maat_hierarchy_compile_mid_udpate的处理性能。
2021-07-20 20:55:52 +08:00
zhengchao
524edff8be 优化hit_path增加性能 2021-07-19 20:55:13 +08:00
zhengchao
53beb2f221 compile_mid使用ut_arrary替代tailq存储hit_path。 2021-07-19 20:55:13 +08:00
zhengchao
1e2e3a1798 改进Hierarchy的多线程扫描性能: Hierarchy使用rwlock来保证更新线程和扫描线程间的线程安全, 测试发现在不发生读写锁冲突的情况下, 读写锁的固有开销会导致并发扫描速度降低。
reference:
https://stackoverflow.com/questions/11866486/how-many-simultaneous-readers-can-a-pthread-rwlock-have
2021-07-19 20:55:12 +08:00
zhengchao
233bc2f0ef Maat_set_scan_status可以设置MAAT_SET_SCAN_NO_COUNT类型参数, 指示下一次扫描不进行计数,以减少hit path的存储开销。 2021-07-19 20:55:12 +08:00
zhengchao
99e8ffb510 修改scan status重的测试用例,覆盖更多分支。 2021-07-19 20:55:11 +08:00
zhengchao
1c08363dc4 bool Matcher对输入的item id(clause id)排序和去重,会改变外部ut_array内容,可能造成风险, 去除bool matcher 中的这部分代码。 2021-07-01 14:42:14 +08:00
郑超
8bf48ba1f3 Feature faster bool matcher on reptead item 2021-06-15 01:32:46 +00:00
zhengchao
fe73ef1156 Hierarchy中,使用垃圾回收方式释放compile,避免bool_matcher命中已删除的compile后,从而非法内存访问导致段错误。 修复 TSG-6548 2021-06-01 21:40:20 +08:00
zhengchao
7980d87924 bool matcher中引用了已经被释放的compile,导致段错误。 TSG-6548 2021-06-01 21:19:41 +08:00
zhengchao
6b9162272d 修复bug: Bool matcher重建时,maat hierarchy会重新生成clause id,会引发两种bug现象:
1. 新生成的clause id,与扫描状态mid中缓存的clause id冲突,导致误命中。引发 TSG-6419
2. mid中已缓存了clause id,但是由于构造的bool macher使用新的clause id,导致漏命中。
修复方案:
1. 将生成clause id的哈希表保存在hierarchy中, 保证增量更新前后clause id不变化;
2. 在mid中增加时间戳作为版本号,旧版本的mid不进行bool matcher运算,以免误命中。
2021-05-27 20:44:21 +08:00
zhengchao
cd5f2c7c26 Maat Hierarchy中的compile mid结构体保留了Hier的指针,可能指向已被释放的hier,导致扫描线程死锁。 2021-04-20 12:47:05 +08:00
zhengchao
ac4b39e6f5 Maat_hierarchy_region_compile按照用户传入的结果数量申请缓存,当bool mactcher返回的结果中包含之前命中过的compile时, 可能导致bool matcher未返回全部的命中结果。 2021-04-19 10:27:12 +08:00
zhengchao
0f6eccbb47 增加hierarachy中为每个线程分配expr_buff,以修复使用用户设置的缓冲区大小,导致不命中的bug。 2021-04-19 10:27:11 +08:00
zhengchao
e3b3288dc1 集成支持expr_id的bool matcher 2021-04-19 10:27:11 +08:00
liuxueli
0eff6faae6 使用流式扫描接口,命中多个不同策略时导致死循环 2021-04-18 21:10:27 +08:00
刘学利
912749b1cd Fix memory leak by update uncare table 2021-04-01 02:28:12 +00:00
zhengchao
e12bef3033 Maat_hierarchy_compile_mid_update_by_compile中的assert并不准确:在扫描命中region后,进行region_compile之前,该region被删除时,此region不会加入hit_path。 2021-01-29 21:06:32 +08:00
zhengchao
f908f2e3ac 修复加载8个字符串与表达式报错的bug TSG-4717;增加Hierarchy日志中输出去重后Clause的数量。 2020-12-16 10:51:34 +06:00
zhengchao
a925ed039d region_compile中compile_rule缓存数组的大小,调整为与调用参数相同。去除部分无效代码。 2020-12-05 16:54:04 +06:00
zhengchao
df48863c65 1. 提高group被大量compile同时引用的性能
2. 修复Maat_hierarchy_region_compile中对literal_ids的线程不安全访问,在配置更新时可导致段错误。
2020-12-05 13:39:48 +06:00
liuxueli
e6a7f24863 同时命中compile数量过多时,仅对MAX_GROUP_CACHE个数中间结果的进行排序,减少循环的次数 2020-11-25 11:28:01 +06:00
zhengchao
b9779088b9 对命中clause_id的数量设置上限,避免同时命中compile数量过多时,utarray排序耗时过大。 2020-11-24 21:08:40 +06:00
zhengchao
dda54b519e 修复删除FQDN Plugin配置时产生的内存泄露。 2020-10-19 16:11:25 +08:00
zhengchao
5931b445ff 增加对group_num为0的编译配置的处理。 2020-07-31 19:30:16 +08:00
zhengchao
41b3628b53 region_rule_inner中增加magic_num,以诊断region配置删除时可能发生的野指针访问;同时hierarchy增加对region_id查找的判空,以避免在一个region扫描命中后,hierarchy中该region又被删除,产生的空指针访问。 2020-07-06 16:46:41 +08:00
zhengchao
639feb17b0 为提高命中大量region时的性能,扫描中间状态使用utarray替代数组存储clause_id。 2020-07-03 19:45:16 +08:00
zhengchao
aef9f80891 Maat_hierarchy总是返回可用的compile_rule,以同步修复master分支中的bug:在对编译配置排序时,如果其已被删除,compile_sort_para_set会访问空指针,导致段错误。 2020-07-02 20:59:59 +08:00
zhengchao
61efaef045 Maat_hierarchy在删除group时,不同时删除igraph中的vertex,避免vertex id发生变化,导致段错误 2020-07-02 18:37:51 +08:00
zhengchao
2dbbd55c95 version3单元测试通过。 2020-06-22 20:26:44 +08:00
zhengchao
df19a8ce71 通过原有功能的单元测试。 2020-06-22 20:26:43 +08:00
zhengchao
469539ab5a 基础扫描功能的测试用例通过。 2020-06-22 20:26:43 +08:00
zhengchao
2c80ba4c0a 代码适配Maat command、maat json。 2020-06-22 20:26:43 +08:00
zhengchao
7e1cb56d4f 完成Maat_hierarchy规则加载重构的代码编写,未编译。 2020-06-22 20:26:42 +08:00
zhengchao
c083777f3b 准备放弃sqlite,改用multimap。sqlite必须集中提交以获得高性能,这将不利于Maat进行异常处理。同时考察了以下key value stores:
* LevelDB和RocksDB太重了
* Berkeley DB也有点重,而且免费版使用类似AGPL的高传染性License,收费版一个Processor就要1000-13000美元。它提供的bdbfirewallexample很有意思,以后可能有机会使用。
* LMDB轻量、快速,Mark下,以后有机会使用。
2020-06-22 20:26:42 +08:00
zhengchao
6b3dd3d0b6 准备用sqlite3替代MESA_htable进行Maat hierarchy构建。 2020-06-22 20:26:42 +08:00
zhengchao
2a10f85aa0 抽象垃圾回收模块,新增Maat_garbage_collection.cpp/h 2020-06-22 20:26:42 +08:00
zhengchao
8a89dcfdae 尝试分离hierarchy的中间版本 2020-06-22 20:26:41 +08:00