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

Reply via email to