From 3f776ae082a736eaad1d6c41a00439059a0fc6ce Mon Sep 17 00:00:00 2001 From: fengdeyiji <546976189@qq.com> Date: Fri, 8 Dec 2023 05:12:46 +0000 Subject: [PATCH] [MDS] flush directly advance rec_scn consider about flushing_scn --- src/storage/multi_data_source/mds_table_impl.ipp | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/storage/multi_data_source/mds_table_impl.ipp b/src/storage/multi_data_source/mds_table_impl.ipp index 6f6451ced..ec242c8da 100644 --- a/src/storage/multi_data_source/mds_table_impl.ipp +++ b/src/storage/multi_data_source/mds_table_impl.ipp @@ -956,11 +956,15 @@ int MdsTableImpl::flush(share::SCN need_advanced_rec_scn_lower_lim } else if (MDS_FAIL(calculate_flush_scn_and_need_dumped_nodes_cnt_(do_flush_scn, undump_node_cnt))) { MDS_LOG_FLUSH(WARN, "fail to call calculate_flush_scn_and_need_dumped_nodes_cnt_"); } else if (undump_node_cnt == 0) {// no need do flush actually - // mds_ckpt_scn on tablet won't be advanced, - // replay will cost more time after restart process, but saved cpu and io for dump dag - MDS_LOG_FLUSH(INFO, "no undump nodes below do flush scn, directly advance rec_scn"); - flushing_scn_ = do_flush_scn;// will be resetted in on_flush_() - on_flush_(do_flush_scn, OB_SUCCESS); + if (flushing_scn_.is_valid()) { + MDS_LOG_FLUSH(INFO, "there is a merge dag running, can not advance rec_scn here"); + } else { + // mds_ckpt_scn on tablet won't be advanced, + // replay will cost more time after restart process, but saved cpu and io for dump dag + MDS_LOG_FLUSH(INFO, "no undump nodes below do flush scn, directly advance rec_scn"); + flushing_scn_ = do_flush_scn;// will be resetted in on_flush_() + on_flush_(do_flush_scn, OB_SUCCESS); + } } else { #ifndef UNITTEST_DEBUG if (MDS_FAIL(merge(construct_sequence_, do_flush_scn))) {