This is an automated email from the ASF dual-hosted git repository.
kxiao 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 011062a8977 [Fix](inverted index) fix memory leak of inverted index
writer for array values (#36208)
011062a8977 is described below
commit 011062a8977a9805875cee1d67f02c773831228f
Author: airborne12 <[email protected]>
AuthorDate: Thu Jun 13 20:00:07 2024 +0800
[Fix](inverted index) fix memory leak of inverted index writer for array
values (#36208)
fix inverted index writer's field leak
---
be/src/clucene | 2 +-
be/src/olap/rowset/segment_v2/inverted_index_writer.cpp | 16 ++++++++--------
2 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/be/src/clucene b/be/src/clucene
index 25324632bab..a23a45e6e18 160000
--- a/be/src/clucene
+++ b/be/src/clucene
@@ -1 +1 @@
-Subproject commit 25324632babc0e5da28048ebbe9adcbdfc73c281
+Subproject commit a23a45e6e1846a8e82194a94f1678e006d638c31
diff --git a/be/src/olap/rowset/segment_v2/inverted_index_writer.cpp
b/be/src/olap/rowset/segment_v2/inverted_index_writer.cpp
index ffbd90c7173..cc2c89bb116 100644
--- a/be/src/olap/rowset/segment_v2/inverted_index_writer.cpp
+++ b/be/src/olap/rowset/segment_v2/inverted_index_writer.cpp
@@ -385,13 +385,6 @@ public:
if (null_map[j] == 1) {
continue;
}
- // now we temp create field . later make a pool
- if (Status st = create_field(&new_field); st !=
Status::OK()) {
- LOG(ERROR)
- << "create field " <<
string(_field_name.begin(), _field_name.end())
- << " error:" << st;
- return st;
- }
auto* v = (Slice*)((const uint8_t*)value_ptr + j *
field_size);
if ((_parser_type == InvertedIndexParserType::PARSER_NONE
&&
v->get_size() > _ignore_above) ||
@@ -400,6 +393,13 @@ public:
// TODO. Maybe here has performance problem for large
size string.
continue;
} else {
+ // now we temp create field . later make a pool
+ if (Status st = create_field(&new_field); st !=
Status::OK()) {
+ LOG(ERROR) << "create field "
+ << string(_field_name.begin(),
_field_name.end())
+ << " error:" << st;
+ return st;
+ }
if (_parser_type !=
InvertedIndexParserType::PARSER_UNKNOWN &&
_parser_type !=
InvertedIndexParserType::PARSER_NONE) {
// in this case stream need to delete after
add_document, because the
@@ -409,9 +409,9 @@ public:
std::unique_ptr<lucene::util::Reader>
char_string_reader = nullptr;
RETURN_IF_ERROR(create_char_string_reader(char_string_reader));
char_string_reader->init(v->get_data(),
v->get_size(), false);
+ _analyzer->set_ownReader(own_reader);
ts = _analyzer->tokenStream(new_field->name(),
char_string_reader.release());
- _analyzer->set_ownReader(own_reader);
new_field->setValue(ts, own_token_stream);
} else {
new_field_char_value(v->get_data(), v->get_size(),
new_field);
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]