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 3bc26f773d [hotfix](memtracker) Fix expired `DCHECK(_limit != -1);`
and segment_meta_mem_tracker inelegant end (#14223)
3bc26f773d is described below
commit 3bc26f773de5c8e1a024f76c28e73b080aa6aef1
Author: Xinyi Zou <[email protected]>
AuthorDate: Sun Nov 13 17:15:29 2022 +0800
[hotfix](memtracker) Fix expired `DCHECK(_limit != -1);` and
segment_meta_mem_tracker inelegant end (#14223)
---
be/src/olap/rowset/segment_v2/segment.cpp | 9 ++++++---
be/src/olap/storage_engine.cpp | 3 ++-
be/src/olap/storage_engine.h | 4 ++--
be/src/runtime/memory/mem_tracker_limiter.cpp | 1 -
4 files changed, 10 insertions(+), 7 deletions(-)
diff --git a/be/src/olap/rowset/segment_v2/segment.cpp
b/be/src/olap/rowset/segment_v2/segment.cpp
index baec276993..1cf38339c8 100644
--- a/be/src/olap/rowset/segment_v2/segment.cpp
+++ b/be/src/olap/rowset/segment_v2/segment.cpp
@@ -79,7 +79,8 @@ Segment::Segment(uint32_t segment_id, RowsetId rowset_id,
TabletSchemaSPtr table
Segment::~Segment() {
#ifndef BE_TEST
-
StorageEngine::instance()->segment_meta_mem_tracker()->release(_meta_mem_usage);
+ if (StorageEngine::instance())
+
StorageEngine::instance()->segment_meta_mem_tracker()->release(_meta_mem_usage);
#endif
}
@@ -149,7 +150,8 @@ Status Segment::_parse_footer() {
_file_reader->path().native(), file_size, 12
+ footer_length);
}
_meta_mem_usage += footer_length;
-
StorageEngine::instance()->segment_meta_mem_tracker()->consume(footer_length);
+ if (StorageEngine::instance())
+
StorageEngine::instance()->segment_meta_mem_tracker()->consume(footer_length);
std::string footer_buf;
footer_buf.resize(footer_length);
@@ -214,7 +216,8 @@ Status Segment::load_index() {
DCHECK(footer.has_short_key_page_footer());
_meta_mem_usage += body.get_size();
-
StorageEngine::instance()->segment_meta_mem_tracker()->consume(body.get_size());
+ if (StorageEngine::instance())
+
StorageEngine::instance()->segment_meta_mem_tracker()->consume(body.get_size());
_sk_index_decoder.reset(new ShortKeyIndexDecoder);
return _sk_index_decoder->parse(body,
footer.short_key_page_footer());
}
diff --git a/be/src/olap/storage_engine.cpp b/be/src/olap/storage_engine.cpp
index bd1095a1db..01a44f2ad4 100644
--- a/be/src/olap/storage_engine.cpp
+++ b/be/src/olap/storage_engine.cpp
@@ -108,7 +108,7 @@ StorageEngine::StorageEngine(const EngineOptions& options)
_is_all_cluster_id_exist(true),
_mem_tracker(std::make_shared<MemTracker>("StorageEngine")),
_segcompaction_mem_tracker(std::make_shared<MemTracker>("SegCompaction")),
-
_segment_meta_mem_tracker(std::make_unique<MemTracker>("SegmentMeta")),
+
_segment_meta_mem_tracker(std::make_shared<MemTracker>("SegmentMeta")),
_stop_background_threads_latch(1),
_tablet_manager(new TabletManager(config::tablet_map_shard_size)),
_txn_manager(new TxnManager(config::txn_map_shard_size,
config::txn_shard_size)),
@@ -146,6 +146,7 @@ StorageEngine::~StorageEngine() {
if (_tablet_meta_checkpoint_thread_pool) {
_tablet_meta_checkpoint_thread_pool->shutdown();
}
+ _s_instance = nullptr;
}
void StorageEngine::load_data_dirs(const std::vector<DataDir*>& data_dirs) {
diff --git a/be/src/olap/storage_engine.h b/be/src/olap/storage_engine.h
index 20069b6b40..6de80ead25 100644
--- a/be/src/olap/storage_engine.h
+++ b/be/src/olap/storage_engine.h
@@ -179,7 +179,7 @@ public:
Status get_compaction_status_json(std::string* result);
- MemTracker* segment_meta_mem_tracker() { return
_segment_meta_mem_tracker.get(); }
+ std::shared_ptr<MemTracker> segment_meta_mem_tracker() { return
_segment_meta_mem_tracker; }
std::shared_ptr<MemTracker> segcompaction_mem_tracker() { return
_segcompaction_mem_tracker; }
// check cumulative compaction config
@@ -329,7 +329,7 @@ private:
std::shared_ptr<MemTracker> _segcompaction_mem_tracker;
// This mem tracker is only for tracking memory use by segment meta data
such as footer or index page.
// The memory consumed by querying is tracked in segment iterator.
- std::unique_ptr<MemTracker> _segment_meta_mem_tracker;
+ std::shared_ptr<MemTracker> _segment_meta_mem_tracker;
CountDownLatch _stop_background_threads_latch;
scoped_refptr<Thread> _unused_rowset_monitor_thread;
diff --git a/be/src/runtime/memory/mem_tracker_limiter.cpp
b/be/src/runtime/memory/mem_tracker_limiter.cpp
index e2ec8bf028..40afce874e 100644
--- a/be/src/runtime/memory/mem_tracker_limiter.cpp
+++ b/be/src/runtime/memory/mem_tracker_limiter.cpp
@@ -207,7 +207,6 @@ void MemTrackerLimiter::print_log_process_usage(const
std::string& msg) {
std::string MemTrackerLimiter::mem_limit_exceeded(const std::string& msg,
const std::string&
limit_exceeded_errmsg) {
- DCHECK(_limit != -1);
STOP_CHECK_THREAD_MEM_TRACKER_LIMIT();
std::string detail = fmt::format(
"Memory limit exceeded:<consuming tracker:<{}>, {}>, executing
msg:<{}>. backend {} "
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]