diff --git a/src/storage/ls/ob_ls_tablet_service.cpp b/src/storage/ls/ob_ls_tablet_service.cpp index b1a74d1c66..d93b23c13c 100755 --- a/src/storage/ls/ob_ls_tablet_service.cpp +++ b/src/storage/ls/ob_ls_tablet_service.cpp @@ -1972,25 +1972,7 @@ int ObLSTabletService::create_tablet( table_store_flag.set_with_major_sstable(); tablet_handle.reset(); - // ddl schema version defense - if (table_schema.is_index_table()) { - const int64_t table_schema_version = table_schema.get_schema_version(); - ObTenantFreezeInfoMgr::FreezeInfo freeze_info; - - if (OB_FAIL(MTL_CALL_FREEZE_INFO_MGR(get_freeze_info_behind_snapshot_version, snapshot_version, freeze_info))) { - if (OB_ENTRY_NOT_EXIST != ret) { - LOG_WARN("failed to get freeze info behind snapshot version", K(ret), K(snapshot_version)); - } else { - ret = OB_SUCCESS; - } - } else if (OB_UNLIKELY(table_schema_version > freeze_info.schema_version)) { - ret = OB_SCHEMA_ERROR; - LOG_ERROR("schema version in freeze info is less than table schema version", K(ret), K(ls_id), K(tablet_id), K(data_tablet_id), - K(snapshot_version), K(table_schema_version), K(freeze_info), K(create_scn), K(table_schema)); - } - } - - if (FAILEDx(ObTabletCreateDeleteHelper::prepare_create_msd_tablet())) { + if (OB_FAIL(ObTabletCreateDeleteHelper::prepare_create_msd_tablet())) { LOG_WARN("fail to prepare create msd tablet", K(ret)); } diff --git a/src/storage/tablet/ob_tablet.cpp b/src/storage/tablet/ob_tablet.cpp index a717f01cd0..6db115b087 100755 --- a/src/storage/tablet/ob_tablet.cpp +++ b/src/storage/tablet/ob_tablet.cpp @@ -3955,7 +3955,7 @@ int ObTablet::get_kept_multi_version_start( int ret = OB_SUCCESS; int tmp_ret = OB_SUCCESS; multi_version_start = 0; - int64_t max_merged_snapshot = 0; + int64_t last_major_snapshot_version = 0; int64_t min_reserved_snapshot = 0; int64_t min_medium_snapshot = INT64_MAX; int64_t ls_min_reserved_snapshot = INT64_MAX; @@ -3970,13 +3970,13 @@ int ObTablet::get_kept_multi_version_start( } else if (OB_FAIL(table_store_wrapper.get_member(table_store))) { LOG_WARN("fail to get table store", K(ret), K(table_store_wrapper)); } else if (0 != table_store->get_major_sstables().count()) { - max_merged_snapshot = table_store->get_major_sstables().get_boundary_table(true/*last*/)->get_snapshot_version(); + last_major_snapshot_version = table_store->get_major_sstables().get_boundary_table(true/*last*/)->get_snapshot_version(); } if (OB_FAIL(ret)) { } else if (FALSE_IT(multi_version_start = tablet.get_multi_version_start())) { } else if (OB_FAIL(MTL(ObTenantFreezeInfoMgr*)->get_min_reserved_snapshot( - tablet_id, max_merged_snapshot, min_reserved_snapshot))) { + tablet_id, last_major_snapshot_version, min_reserved_snapshot))) { LOG_WARN("failed to get multi version from freeze info mgr", K(ret), K(tablet_id)); } else if (!tablet.is_ls_inner_tablet()) { ObTabletMediumInfoReader medium_info_reader(tablet); @@ -4003,13 +4003,14 @@ int ObTablet::get_kept_multi_version_start( if (REACH_TENANT_TIME_INTERVAL(10 * 1000 * 1000L /*10s*/)) { LOG_INFO("tablet multi version start not advance for a long time", K(ret), K(ls_id), K(tablet_id), K(multi_version_start), K(old_min_reserved_snapshot), K(min_medium_snapshot), - "ls_min_reserved_snapshot", ls.get_min_reserved_snapshot(), K(tablet)); + K(ls_min_reserved_snapshot), "old_tablet_multi_version_start", tablet.get_multi_version_start(), + "old_tablet_snaphsot_version", tablet.get_snapshot_version(), K(tablet)); } } } LOG_DEBUG("get multi version start", K(ret), K(ls_id), K(tablet_id), K(multi_version_start), K(min_reserved_snapshot), K(min_medium_snapshot), - K(ls.get_min_reserved_snapshot()), K(max_merged_snapshot)); + K(ls_min_reserved_snapshot), K(last_major_snapshot_version)); return ret; } diff --git a/src/storage/tablet/ob_tablet_table_store.cpp b/src/storage/tablet/ob_tablet_table_store.cpp index 36cb7aad5d..0d56917e1d 100755 --- a/src/storage/tablet/ob_tablet_table_store.cpp +++ b/src/storage/tablet/ob_tablet_table_store.cpp @@ -1606,7 +1606,7 @@ int ObTabletTableStore::check_ready_for_read(const ObTablet &tablet) const SCN &last_minor_end_scn = minor_tables_.get_boundary_table(true/*last*/)->get_end_scn(); if (OB_UNLIKELY(clog_checkpoint_scn != last_minor_end_scn)) { ret = OB_ERR_UNEXPECTED; - LOG_ERROR("last minor table's end_scn must be equal to clog_checkpoint_scn", + LOG_WARN("last minor table's end_scn must be equal to clog_checkpoint_scn", K(ret), K(last_minor_end_scn), K(clog_checkpoint_scn), KPC(this), K(tablet)); } else { is_ready_for_read_ = true; @@ -1804,9 +1804,7 @@ int ObTabletTableStore::need_remove_old_table( } else if (multi_version_start <= 0) { ret = OB_INVALID_ARGUMENT; LOG_WARN("get invalid arguments", K(ret), K(multi_version_start)); - } else if (minor_tables_.empty() || INT64_MAX == minor_tables_[0]->get_upper_trans_version()) { - // do nothing - } else if (minor_tables_[0]->get_upper_trans_version() <= major_tables_[0]->get_snapshot_version()) { + } else if (minor_tables_.count() > 0 && minor_tables_[0]->get_upper_trans_version() <= major_tables_[0]->get_snapshot_version()) { // at least one minor sstable is coverd by major sstable // don't need to care about kept_multi_version_start here // becase major_tables_[0]::snapshot_version must <= kept_multi_version_start