From e60b71da8ccddb58f98b95a5c063d182c161e32a Mon Sep 17 00:00:00 2001 From: lichaoyong Date: Fri, 22 Mar 2019 14:17:05 +0800 Subject: [PATCH] Release SegmentGroup reference count (#790) In streaming ingestion, segment group is set to be one in creation. Upon closing, reference count should to be released. Otherwise, file descriptor and segment group object in memory can not be freed. --- be/src/olap/delta_writer.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/be/src/olap/delta_writer.cpp b/be/src/olap/delta_writer.cpp index a30a4fe3dd..400da13436 100644 --- a/be/src/olap/delta_writer.cpp +++ b/be/src/olap/delta_writer.cpp @@ -38,6 +38,9 @@ DeltaWriter::~DeltaWriter() { if (!_delta_written_success) { _garbage_collection(); } + for (SegmentGroup* segment_group : _segment_group_vec) { + segment_group->release(); + } SAFE_DELETE(_writer); SAFE_DELETE(_mem_table); SAFE_DELETE(_schema); @@ -47,14 +50,12 @@ void DeltaWriter::_garbage_collection() { OLAPEngine::get_instance()->delete_transaction(_req.partition_id, _req.transaction_id, _req.tablet_id, _req.schema_hash); for (SegmentGroup* segment_group : _segment_group_vec) { - segment_group->release(); OLAPEngine::get_instance()->add_unused_index(segment_group); } if (_new_table != nullptr) { OLAPEngine::get_instance()->delete_transaction(_req.partition_id, _req.transaction_id, _new_table->tablet_id(), _new_table->schema_hash()); for (SegmentGroup* segment_group : _new_segment_group_vec) { - segment_group->release(); OLAPEngine::get_instance()->add_unused_index(segment_group); } }