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 <[email protected]>
AuthorDate: Fri Sep 16 09:05:29 2022 +0800
[bugfix](compression) fix lock bug in concurrent acquire context (#12638)
Co-authored-by: yixiutt <[email protected]>
---
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: [email protected]
For additional commands, e-mail: [email protected]