diff --git a/src/sql/session/ob_sql_session_info.cpp b/src/sql/session/ob_sql_session_info.cpp index e6cca2f7a2..037840d93a 100644 --- a/src/sql/session/ob_sql_session_info.cpp +++ b/src/sql/session/ob_sql_session_info.cpp @@ -591,6 +591,7 @@ void ObSQLSessionInfo::destroy(bool skip_sys_var) ->close_all(*this))) { LOG_WARN("failed to close all piece", K(ret)); } + static_cast(piece_cache_)->~ObPieceCache(); get_session_allocator().free(piece_cache_); piece_cache_ = NULL; } @@ -2809,6 +2810,7 @@ void* ObSQLSessionInfo::get_piece_cache(bool need_init) { piece_cache_ = new (buf) observer::ObPieceCache(); if (OB_SUCCESS != (static_cast(piece_cache_))->init( get_effective_tenant_id())) { + static_cast(piece_cache_)->~ObPieceCache(); get_session_allocator().free(piece_cache_); piece_cache_ = NULL; LOG_WARN_RET(OB_ERR_UNEXPECTED, "init piece cache fail");