This is an automated email from the ASF dual-hosted git repository.
dataroaring 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 00f625918d3 [fix](stat) handle overflow of memory stat if load failed
(#39621)
00f625918d3 is described below
commit 00f625918d3b9b04ccf3112dda9e0f8fedbac228
Author: Yongqiang YANG <[email protected]>
AuthorDate: Sat Aug 24 22:54:33 2024 +0800
[fix](stat) handle overflow of memory stat if load failed (#39621)
---
be/src/olap/rowset/segment_v2/ordinal_page_index.cpp | 16 ++++++++++------
be/src/olap/rowset/segment_v2/zone_map_index.cpp | 12 +++++++-----
2 files changed, 17 insertions(+), 11 deletions(-)
diff --git a/be/src/olap/rowset/segment_v2/ordinal_page_index.cpp
b/be/src/olap/rowset/segment_v2/ordinal_page_index.cpp
index b93d461d8c7..24b2e337996 100644
--- a/be/src/olap/rowset/segment_v2/ordinal_page_index.cpp
+++ b/be/src/olap/rowset/segment_v2/ordinal_page_index.cpp
@@ -115,6 +115,11 @@ Status OrdinalIndexReader::_load(bool use_page_cache, bool
kept_in_memory,
_num_pages = reader.count();
_ordinals.resize(_num_pages + 1);
_pages.resize(_num_pages);
+
+ g_ordinal_index_memory_bytes << sizeof(*this) + _ordinals.size() *
sizeof(ordinal_t) +
+ _pages.size() *
sizeof(PagePointer) +
+ sizeof(OrdinalIndexReader);
+
for (int i = 0; i < _num_pages; i++) {
Slice key = reader.get_key(i);
ordinal_t ordinal = 0;
@@ -127,9 +132,6 @@ Status OrdinalIndexReader::_load(bool use_page_cache, bool
kept_in_memory,
}
_ordinals[_num_pages] = _num_values;
- g_ordinal_index_memory_bytes << sizeof(*this) + _ordinals.size() *
sizeof(ordinal_t) +
- _pages.size() *
sizeof(PagePointer) +
- sizeof(OrdinalIndexReader);
return Status::OK();
}
@@ -155,9 +157,11 @@ OrdinalPageIndexIterator
OrdinalIndexReader::seek_at_or_before(ordinal_t ordinal
}
OrdinalIndexReader::~OrdinalIndexReader() {
- g_ordinal_index_memory_bytes << -sizeof(*this) - _ordinals.size() *
sizeof(ordinal_t) -
- _pages.size() *
sizeof(PagePointer) -
- sizeof(OrdinalIndexReader);
+ if (_ordinals.size() > 0) {
+ g_ordinal_index_memory_bytes << -sizeof(*this) - _ordinals.size() *
sizeof(ordinal_t) -
+ _pages.size() *
sizeof(PagePointer) -
+ sizeof(OrdinalIndexReader);
+ }
}
} // namespace segment_v2
diff --git a/be/src/olap/rowset/segment_v2/zone_map_index.cpp
b/be/src/olap/rowset/segment_v2/zone_map_index.cpp
index 6a1dee39cd7..991df2f9475 100644
--- a/be/src/olap/rowset/segment_v2/zone_map_index.cpp
+++ b/be/src/olap/rowset/segment_v2/zone_map_index.cpp
@@ -157,6 +157,9 @@ Status ZoneMapIndexReader::_load(bool use_page_cache, bool
kept_in_memory,
_page_zone_maps.resize(reader.num_values());
+ g_zone_map_memory_bytes << sizeof(*this) + sizeof(ZoneMapPB) *
_page_zone_maps.size() +
+ sizeof(IndexedColumnMetaPB);
+
// read and cache all page zone maps
for (int i = 0; i < reader.num_values(); ++i) {
size_t num_to_read = 1;
@@ -176,16 +179,15 @@ Status ZoneMapIndexReader::_load(bool use_page_cache,
bool kept_in_memory,
}
}
- g_zone_map_memory_bytes << sizeof(*this) + sizeof(ZoneMapPB) *
_page_zone_maps.size() +
- sizeof(IndexedColumnMetaPB);
-
return Status::OK();
}
ZoneMapIndexReader::~ZoneMapIndexReader() {
// Maybe wrong due to load failures.
- g_zone_map_memory_bytes << -sizeof(*this) - sizeof(ZoneMapPB) *
_page_zone_maps.size() -
- sizeof(IndexedColumnMetaPB);
+ if (_page_zone_maps.size() > 0) {
+ g_zone_map_memory_bytes << -sizeof(*this) - sizeof(ZoneMapPB) *
_page_zone_maps.size() -
+ sizeof(IndexedColumnMetaPB);
+ }
}
#define APPLY_FOR_PRIMITITYPE(M) \
M(TYPE_TINYINT) \
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]