From 504d1fc622bbc9d08d9faf0d21e626a01188b14a Mon Sep 17 00:00:00 2001 From: raywill Date: Thu, 24 Mar 2022 23:01:44 +0800 Subject: [PATCH] fix obs session coredump when exit --- src/observer/table/ob_table_rpc_processor.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/observer/table/ob_table_rpc_processor.cpp b/src/observer/table/ob_table_rpc_processor.cpp index b78a9e8ec..5d18e5f34 100644 --- a/src/observer/table/ob_table_rpc_processor.cpp +++ b/src/observer/table/ob_table_rpc_processor.cpp @@ -317,9 +317,15 @@ int ObTableApiProcessorBase::init_session() static const uint32_t sess_version = 0; static const uint32_t sess_id = 1; static const uint64_t proxy_sess_id = 1; - if (OB_FAIL(session().test_init(sess_version, sess_id, proxy_sess_id, &session_alloc()))) { + + // ensure allocator is constructed before session to + // avoid coredump at observer exit + ObArenaAllocator *allocator = &session_alloc(); + oceanbase::sql::ObSQLSessionInfo &sess = session(); + + if (OB_FAIL(sess.test_init(sess_version, sess_id, proxy_sess_id, allocator))) { LOG_WARN("init session failed", K(ret)); - } else if (OB_FAIL(session().load_default_sys_variable(false, true))) { + } else if (OB_FAIL(sess.load_default_sys_variable(false, true))) { LOG_WARN("failed to load default sys var", K(ret)); } return ret; -- GitLab