fix load data file reader memory leak
This commit is contained in:
parent
8c0c36c10a
commit
66938d14e8
@ -466,7 +466,7 @@ ObLoadDataDirectImpl::DataReader::DataReader()
|
||||
ObLoadDataDirectImpl::DataReader::~DataReader()
|
||||
{
|
||||
if (OB_NOT_NULL(file_reader_)) {
|
||||
file_reader_->~ObFileReader();
|
||||
ObFileReader::destroy(file_reader_);
|
||||
file_reader_ = nullptr;
|
||||
}
|
||||
}
|
||||
@ -502,7 +502,10 @@ int ObLoadDataDirectImpl::DataReader::init(const DataAccessParam &data_access_pa
|
||||
file_read_param.filename_ = data_desc.filename_;
|
||||
file_read_param.compression_format_ = data_access_param.compression_format_;
|
||||
file_read_param.access_info_ = data_access_param.access_info_;
|
||||
file_read_param.packet_handle_ = &execute_ctx.exec_ctx_.get_session_info()->get_pl_query_sender()->get_packet_sender();
|
||||
file_read_param.packet_handle_ = nullptr;
|
||||
if (OB_NOT_NULL(execute_ctx.exec_ctx_.get_session_info()) && OB_NOT_NULL(execute_ctx.exec_ctx_.get_session_info()->get_pl_query_sender())) {
|
||||
file_read_param.packet_handle_ = &execute_ctx.exec_ctx_.get_session_info()->get_pl_query_sender()->get_packet_sender();
|
||||
}
|
||||
file_read_param.session_ = execute_ctx.exec_ctx_.get_session_info();
|
||||
file_read_param.timeout_ts_ = THIS_WORKER.get_timeout_ts();
|
||||
|
||||
|
@ -132,6 +132,13 @@ int ObFileReader::open(const ObFileReadParam ¶m, ObIAllocator &allocator, Ob
|
||||
return ret;
|
||||
}
|
||||
|
||||
void ObFileReader::destroy(ObFileReader *file_reader)
|
||||
{
|
||||
if (OB_NOT_NULL(file_reader)) {
|
||||
OB_DELETE(ObFileReader, MEMORY_ATTR, file_reader);
|
||||
}
|
||||
}
|
||||
|
||||
int ObFileReader::open_decompress_reader(const ObFileReadParam ¶m,
|
||||
ObIAllocator &allocator,
|
||||
ObFileReader *source_reader,
|
||||
|
@ -92,6 +92,7 @@ public:
|
||||
* A file reader factory
|
||||
*/
|
||||
static int open(const ObFileReadParam ¶m, ObIAllocator &allocator, ObFileReader *& file_reader);
|
||||
static void destroy(ObFileReader *file_reader);
|
||||
|
||||
private:
|
||||
static int open_decompress_reader(const ObFileReadParam ¶m,
|
||||
|
@ -2468,7 +2468,7 @@ int ObLoadDataSPImpl::ToolBox::release_resources()
|
||||
|
||||
//release file reader
|
||||
if (OB_NOT_NULL(file_reader)) {
|
||||
file_reader->~ObFileReader();
|
||||
ObFileReader::destroy(file_reader);
|
||||
file_reader = NULL;
|
||||
}
|
||||
|
||||
@ -2776,7 +2776,10 @@ int ObLoadDataSPImpl::ToolBox::init(ObExecContext &ctx, ObLoadDataStmt &load_stm
|
||||
file_read_param.filename_ = load_args.file_name_;
|
||||
file_read_param.compression_format_ = load_args.compression_format_;
|
||||
file_read_param.access_info_ = load_args.access_info_;
|
||||
file_read_param.packet_handle_ = &ctx.get_my_session()->get_pl_query_sender()->get_packet_sender();
|
||||
file_read_param.packet_handle_ = nullptr;
|
||||
if (OB_NOT_NULL(ctx.get_my_session()) && OB_NOT_NULL(ctx.get_my_session()->get_pl_query_sender())) {
|
||||
file_read_param.packet_handle_ = &ctx.get_my_session()->get_pl_query_sender()->get_packet_sender();
|
||||
}
|
||||
file_read_param.session_ = ctx.get_my_session();
|
||||
file_read_param.timeout_ts_ = THIS_WORKER.get_timeout_ts();
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user