This is an automated email from the ASF dual-hosted git repository. yiguolei 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 d906e97f1b [bugfix](compression) fix lock bug in concurrent acquire context (#12638) d906e97f1b is described below commit d906e97f1b2881a9a9813a2369dfb0b930682261 Author: yixiutt <102007456+yixi...@users.noreply.github.com> AuthorDate: Fri Sep 16 09:05:29 2022 +0800 [bugfix](compression) fix lock bug in concurrent acquire context (#12638) Co-authored-by: yixiutt <yi...@selectdb.com> --- be/src/util/block_compression.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/be/src/util/block_compression.cpp b/be/src/util/block_compression.cpp index ac34cfc17d..a9f490b181 100644 --- a/be/src/util/block_compression.cpp +++ b/be/src/util/block_compression.cpp @@ -127,6 +127,7 @@ public: private: // reuse LZ4 compress stream Status _acquire_compression_ctx(Context** out) { + std::lock_guard<std::mutex> l(_ctx_mutex); if (_ctx_pool.empty()) { Context* context = new (std::nothrow) Context(); if (context == nullptr) { @@ -140,7 +141,6 @@ private: *out = context; return Status::OK(); } - std::lock_guard<std::mutex> l(_ctx_mutex); *out = _ctx_pool.back(); _ctx_pool.pop_back(); return Status::OK(); @@ -307,6 +307,7 @@ private: // acquire a compression ctx from pool, release while finish compress, // delete if compression failed Status _acquire_compression_ctx(CContext** out) { + std::lock_guard<std::mutex> l(_ctx_c_mutex); if (_ctx_c_pool.empty()) { CContext* context = new (std::nothrow) CContext(); if (context == nullptr) { @@ -320,7 +321,6 @@ private: *out = context; return Status::OK(); } - std::lock_guard<std::mutex> l(_ctx_c_mutex); *out = _ctx_c_pool.back(); _ctx_c_pool.pop_back(); return Status::OK(); @@ -730,6 +730,7 @@ public: private: Status _acquire_compression_ctx(CContext** out) { + std::lock_guard<std::mutex> l(_ctx_c_mutex); if (_ctx_c_pool.empty()) { CContext* context = new (std::nothrow) CContext(); if (context == nullptr) { @@ -743,7 +744,6 @@ private: *out = context; return Status::OK(); } - std::lock_guard<std::mutex> l(_ctx_c_mutex); *out = _ctx_c_pool.back(); _ctx_c_pool.pop_back(); return Status::OK(); --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org