diff --git a/dbms/src/Server/Server.cpp b/dbms/src/Server/Server.cpp index cb3d3d9e55e..ca57798aafb 100644 --- a/dbms/src/Server/Server.cpp +++ b/dbms/src/Server/Server.cpp @@ -1158,9 +1158,10 @@ int Server::main(const std::vector & /*args*/) // Initialize the thread pool of storage before the storage engine is initialized. LOG_FMT_INFO(log, "dt_enable_read_thread {}", global_context->getSettingsRef().dt_enable_read_thread); + // `DMFileReaderPool` should be constructed before and destructed after `SegmentReaderPoolManager`. + DM::DMFileReaderPool::instance(); DM::SegmentReaderPoolManager::instance().init(server_info); DM::SegmentReadTaskScheduler::instance(); - DM::DMFileReaderPool::instance(); { // Note that this must do before initialize schema sync service. diff --git a/dbms/src/TestUtils/gtests_dbms_main.cpp b/dbms/src/TestUtils/gtests_dbms_main.cpp index 84c32ea40d3..eab4340def8 100644 --- a/dbms/src/TestUtils/gtests_dbms_main.cpp +++ b/dbms/src/TestUtils/gtests_dbms_main.cpp @@ -61,9 +61,10 @@ int main(int argc, char ** argv) DB::tests::TiFlashTestEnv::setupLogger(); DB::tests::TiFlashTestEnv::initializeGlobalContext(); DB::ServerInfo server_info; + // `DMFileReaderPool` should be constructed before and destructed after `SegmentReaderPoolManager`. + DB::DM::DMFileReaderPool::instance(); DB::DM::SegmentReaderPoolManager::instance().init(server_info); DB::DM::SegmentReadTaskScheduler::instance(); - DB::DM::DMFileReaderPool::instance(); #ifdef FIU_ENABLE fiu_init(0); // init failpoint