This is an automated email from the ASF dual-hosted git repository.

zhangchen pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/master by this push:
     new 49995aa0553 [Fix](bvar) Fix bloom filter bvar fault
49995aa0553 is described below

commit 49995aa05531d291ecafe8e0169c5f0f529cf993
Author: abmdocrt <[email protected]>
AuthorDate: Tue Mar 26 22:51:42 2024 +0800

    [Fix](bvar) Fix bloom filter bvar fault
    
    The previous addition of bvar caused overflow issues due to incorrect type, 
and this PR fixes that problem.
---
 be/src/olap/primary_key_index.h                    |  8 ++--
 be/src/olap/rowset/segment_v2/bloom_filter.h       | 44 +++++++++++++---------
 .../segment_v2/bloom_filter_index_writer.cpp       |  4 +-
 .../rowset/segment_v2/bloom_filter_index_writer.h  |  6 +--
 4 files changed, 35 insertions(+), 27 deletions(-)

diff --git a/be/src/olap/primary_key_index.h b/be/src/olap/primary_key_index.h
index 618d11b60d9..b5eb13131b7 100644
--- a/be/src/olap/primary_key_index.h
+++ b/be/src/olap/primary_key_index.h
@@ -100,10 +100,10 @@ public:
     PrimaryKeyIndexReader() : _index_parsed(false), _bf_parsed(false) {}
 
     ~PrimaryKeyIndexReader() {
-        segment_v2::g_pk_total_bloom_filter_num << -_bf_num;
-        segment_v2::g_pk_total_bloom_filter_total_bytes << -_bf_bytes;
-        segment_v2::g_pk_read_bloom_filter_num << -_bf_num;
-        segment_v2::g_pk_read_bloom_filter_total_bytes << -_bf_bytes;
+        segment_v2::g_pk_total_bloom_filter_num << 
-static_cast<int64_t>(_bf_num);
+        segment_v2::g_pk_total_bloom_filter_total_bytes << 
-static_cast<int64_t>(_bf_bytes);
+        segment_v2::g_pk_read_bloom_filter_num << 
-static_cast<int64_t>(_bf_num);
+        segment_v2::g_pk_read_bloom_filter_total_bytes << 
-static_cast<int64_t>(_bf_bytes);
     }
 
     Status parse_index(io::FileReaderSPtr file_reader,
diff --git a/be/src/olap/rowset/segment_v2/bloom_filter.h 
b/be/src/olap/rowset/segment_v2/bloom_filter.h
index 13b1558431e..20a903e65c1 100644
--- a/be/src/olap/rowset/segment_v2/bloom_filter.h
+++ b/be/src/olap/rowset/segment_v2/bloom_filter.h
@@ -27,26 +27,34 @@
 #include <memory>
 
 #include "common/status.h"
+#include "gutil/integral_types.h"
 #include "util/murmur_hash3.h"
 
 namespace doris {
 namespace segment_v2 {
 
-inline bvar::Adder<size_t> 
g_total_bloom_filter_num("doris_total_bloom_filter_num");
-inline bvar::Adder<size_t> 
g_read_bloom_filter_num("doris_read_bloom_filter_num");
-inline bvar::Adder<size_t> 
g_write_bloom_filter_num("doris_write_bloom_filter_num");
-
-inline bvar::Adder<size_t> 
g_total_bloom_filter_total_bytes("doris_total_bloom_filter_bytes");
-inline bvar::Adder<size_t> 
g_read_bloom_filter_total_bytes("doris_read_bloom_filter_bytes");
-inline bvar::Adder<size_t> 
g_write_bloom_filter_total_bytes("doris_write_bloom_filter_bytes");
-
-inline bvar::Adder<size_t> 
g_pk_total_bloom_filter_num("doris_pk_total_bloom_filter_num");
-inline bvar::Adder<size_t> 
g_pk_read_bloom_filter_num("doris_pk_read_bloom_filter_num");
-inline bvar::Adder<size_t> 
g_pk_write_bloom_filter_num("doris_pk_write_bloom_filter_num");
-
-inline bvar::Adder<size_t> 
g_pk_total_bloom_filter_total_bytes("doris_pk_total_bloom_filter_bytes");
-inline bvar::Adder<size_t> 
g_pk_read_bloom_filter_total_bytes("doris_pk_read_bloom_filter_bytes");
-inline bvar::Adder<size_t> 
g_pk_write_bloom_filter_total_bytes("doris_pk_write_bloom_filter_bytes");
+inline bvar::Adder<int64_t> 
g_total_bloom_filter_num("doris_total_bloom_filter_num");
+inline bvar::Adder<int64_t> 
g_read_bloom_filter_num("doris_read_bloom_filter_num");
+inline bvar::Adder<int64_t> 
g_write_bloom_filter_num("doris_write_bloom_filter_num");
+
+inline bvar::Adder<int64_t> 
g_total_bloom_filter_total_bytes("doris_total_bloom_filter_bytes");
+inline bvar::Adder<int64_t> 
g_read_bloom_filter_total_bytes("doris_read_bloom_filter_bytes");
+inline bvar::Adder<int64_t> 
g_write_bloom_filter_total_bytes("doris_write_bloom_filter_bytes");
+
+inline bvar::Adder<int64_t> 
g_pk_total_bloom_filter_num("doris_pk_total_bloom_filter_num");
+inline bvar::Adder<int64_t> 
g_pk_read_bloom_filter_num("doris_pk_read_bloom_filter_num");
+inline bvar::Adder<int64_t> g_pk_write_bloom_filter_increase_num(
+        "doris_pk_write_bloom_filter_increase_num");
+inline bvar::Adder<int64_t> g_pk_write_bloom_filter_decrease_num(
+        "doris_pk_write_bloom_filter_decrease_num");
+
+inline bvar::Adder<int64_t> g_pk_total_bloom_filter_total_bytes(
+        "doris_pk_total_bloom_filter_bytes");
+inline bvar::Adder<int64_t> 
g_pk_read_bloom_filter_total_bytes("doris_pk_read_bloom_filter_bytes");
+inline bvar::Adder<int64_t> g_pk_write_bloom_filter_increase_bytes(
+        "doris_pk_write_bloom_filter_increase_bytes");
+inline bvar::Adder<int64_t> g_pk_write_bloom_filter_decrease_bytes(
+        "doris_pk_write_bloom_filter_decrease_bytes");
 
 struct BloomFilterOptions {
     // false positive probability
@@ -79,13 +87,13 @@ public:
     virtual ~BloomFilter() {
         if (_data) {
             if (_is_write) {
-                g_write_bloom_filter_total_bytes << -_size;
+                g_write_bloom_filter_total_bytes << 
-static_cast<int64_t>(_size);
                 g_write_bloom_filter_num << -1;
             } else {
-                g_read_bloom_filter_total_bytes << -_size;
+                g_read_bloom_filter_total_bytes << 
-static_cast<int64_t>(_size);
                 g_read_bloom_filter_num << -1;
             }
-            g_total_bloom_filter_total_bytes << -_size;
+            g_total_bloom_filter_total_bytes << -static_cast<int64_t>(_size);
             delete[] _data;
         }
         g_total_bloom_filter_num << -1;
diff --git a/be/src/olap/rowset/segment_v2/bloom_filter_index_writer.cpp 
b/be/src/olap/rowset/segment_v2/bloom_filter_index_writer.cpp
index 27914280784..4bdf1bd5b77 100644
--- a/be/src/olap/rowset/segment_v2/bloom_filter_index_writer.cpp
+++ b/be/src/olap/rowset/segment_v2/bloom_filter_index_writer.cpp
@@ -197,8 +197,8 @@ Status PrimaryKeyBloomFilterIndexWriterImpl::flush() {
     _bf_buffer_size += bf->size();
     g_pk_total_bloom_filter_num << 1;
     g_pk_total_bloom_filter_total_bytes << bf->size();
-    g_pk_write_bloom_filter_num << 1;
-    g_pk_write_bloom_filter_total_bytes << bf->size();
+    g_pk_write_bloom_filter_increase_num << 1;
+    g_pk_write_bloom_filter_increase_bytes << bf->size();
     _bfs.push_back(std::move(bf));
     _values.clear();
     _has_null = false;
diff --git a/be/src/olap/rowset/segment_v2/bloom_filter_index_writer.h 
b/be/src/olap/rowset/segment_v2/bloom_filter_index_writer.h
index df92f980c58..cb528032e8d 100644
--- a/be/src/olap/rowset/segment_v2/bloom_filter_index_writer.h
+++ b/be/src/olap/rowset/segment_v2/bloom_filter_index_writer.h
@@ -79,9 +79,9 @@ public:
     ~PrimaryKeyBloomFilterIndexWriterImpl() override {
         for (auto& bf : _bfs) {
             g_pk_total_bloom_filter_num << -1;
-            g_pk_total_bloom_filter_total_bytes << -bf->size();
-            g_pk_write_bloom_filter_num << -1;
-            g_pk_write_bloom_filter_total_bytes << -bf->size();
+            g_pk_total_bloom_filter_total_bytes << 
-static_cast<int64_t>(bf->size());
+            g_pk_write_bloom_filter_decrease_num << 1;
+            g_pk_write_bloom_filter_decrease_bytes << bf->size();
         }
     };
 


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to