diff --git a/src/share/ob_tablet_autoincrement_param.h b/src/share/ob_tablet_autoincrement_param.h index d4c589d074..2cc8d4b97d 100644 --- a/src/share/ob_tablet_autoincrement_param.h +++ b/src/share/ob_tablet_autoincrement_param.h @@ -176,6 +176,7 @@ public: TO_STRING_KV(K_(intervals)); private: common::ObSArray intervals_; + DISALLOW_COPY_AND_ASSIGN(ObTabletAutoincSeq); }; }//end namespace share diff --git a/src/storage/high_availability/ob_ls_restore.cpp b/src/storage/high_availability/ob_ls_restore.cpp index 82bdcd81ad..40551dc7c7 100644 --- a/src/storage/high_availability/ob_ls_restore.cpp +++ b/src/storage/high_availability/ob_ls_restore.cpp @@ -189,7 +189,7 @@ int ObLSRestoreDagNet::init_by_param(const ObIDagInitParam *param) index_store_param.tenant_id_ = MTL_ID(); index_store_param.backup_set_id_ = backup_set_file_desc.backup_set_file_.backup_set_id_; index_store_param.ls_id_ = init_param->arg_.ls_id_; - index_store_param.is_tenant_level_ = false; + index_store_param.is_tenant_level_ = false; index_store_param.backup_data_type_ = data_type; index_store_param.turn_id_ = backup_set_file_desc.backup_set_file_.data_turn_id_; backup_set_desc.backup_set_id_ = backup_set_file_desc.backup_set_file_.backup_set_id_; @@ -202,19 +202,19 @@ int ObLSRestoreDagNet::init_by_param(const ObIDagInitParam *param) } else if (OB_FAIL(store.get_max_sys_ls_retry_id(backup_path, init_param->arg_.ls_id_, retry_id))) { LOG_WARN("failed to get max sys retry id", K(ret), K(backup_path), KPC(init_param)); } else { - index_store_param.retry_id_ = retry_id; + index_store_param.retry_id_ = retry_id; LOG_INFO("get max sys ls retry id", "arg", init_param->arg_, K(retry_id)); } } - + share::ObBackupDest dest; if (OB_FAIL(ret)) { } else if (OB_FAIL(meta_index_store_.init(mode, index_store_param, - init_param->arg_.restore_base_info_.backup_dest_, + init_param->arg_.restore_base_info_.backup_dest_, backup_set_desc, false/*is_sec_meta*/, OB_BACKUP_INDEX_CACHE))) { LOG_WARN("failed to init meta index store", K(ret), KPC(init_param)); } else if (OB_FAIL(second_meta_index_store_.init(mode, index_store_param, - init_param->arg_.restore_base_info_.backup_dest_, + init_param->arg_.restore_base_info_.backup_dest_, backup_set_desc, true/*is_sec_meta*/, OB_BACKUP_INDEX_CACHE))) { LOG_WARN("failed to init macro index store", K(ret), KPC(init_param)); } @@ -245,7 +245,7 @@ int ObLSRestoreDagNet::init_by_param(const ObIDagInitParam *param) if (OB_FAIL(ret)) { LOG_WARN("init ls restore dag param failed", K(ret)); } - } + } #endif return ret; } @@ -871,7 +871,7 @@ int ObStartLSRestoreTask::process() } else if (OB_FAIL(generate_tablets_restore_dag_())) { LOG_WARN("failed to generate tablets retore dag", K(ret), K(*ctx_)); } - + if (OB_FAIL(ret)) { int tmp_ret = OB_SUCCESS; if (OB_SUCCESS != (tmp_ret = ObStorageHADagUtils::deal_with_fo(ret, this->get_dag()))) { @@ -1059,7 +1059,7 @@ int ObStartLSRestoreTask::update_ls_meta_() } else if (OB_ISNULL(ls = ls_handle.get_ls())) { ret = OB_ERR_UNEXPECTED; LOG_WARN("restore ls should not be NULL", K(ret), KPC(ctx_)); - } else if (OB_FAIL(ls->update_ls_meta(false/*don't update restore status*/, + } else if (OB_FAIL(ls->update_ls_meta(false/*don't update restore status*/, ctx_->src_ls_meta_package_.ls_meta_))) { LOG_WARN("fail to update ls meta", K(ret), KPC(ls), KPC(ctx_)); } else { @@ -2041,6 +2041,7 @@ int ObTabletGroupMetaRestoreTask::create_or_update_tablet_( param.ls_id_ = ctx_->arg_.ls_id_; param.tablet_id_ = tablet_id; param.data_tablet_id_ = tablet_id; + param.create_scn_ = ObTabletMeta::INIT_CREATE_SCN; param.clog_checkpoint_ts_ = OB_INVALID_TIMESTAMP; param.compat_mode_ = lib::Worker::get_compatibility_mode(); param.multi_version_start_ = 0; diff --git a/src/storage/high_availability/ob_storage_ha_reader.cpp b/src/storage/high_availability/ob_storage_ha_reader.cpp index 42ca0bef83..18577bfab6 100644 --- a/src/storage/high_availability/ob_storage_ha_reader.cpp +++ b/src/storage/high_availability/ob_storage_ha_reader.cpp @@ -1012,6 +1012,7 @@ int ObCopyTabletInfoObProducer::build_deleted_tablet_info_( tablet_info.param_.ls_id_ = ls_id; tablet_info.param_.tablet_id_ = tablet_id; tablet_info.param_.data_tablet_id_ = tablet_id; + tablet_info.param_.create_scn_ = ObTabletMeta::INIT_CREATE_SCN; tablet_info.param_.start_scn_ = ObTabletMeta::INIT_CLOG_CHECKPOINT_TS; tablet_info.param_.clog_checkpoint_ts_ = ObTabletMeta::INIT_CLOG_CHECKPOINT_TS; tablet_info.param_.compat_mode_ = lib::Worker::get_compatibility_mode(); @@ -1873,6 +1874,7 @@ int ObCopySSTableInfoObProducer::fake_deleted_tablet_meta_( tablet_meta.ls_id_ = ls_id_; tablet_meta.tablet_id_ = tablet_sstable_info_.tablet_id_; tablet_meta.data_tablet_id_ = tablet_sstable_info_.tablet_id_; + tablet_meta.create_scn_ = ObTabletMeta::INIT_CREATE_SCN; tablet_meta.start_scn_ = ObTabletMeta::INIT_CLOG_CHECKPOINT_TS; tablet_meta.clog_checkpoint_ts_ = INT64_MAX; tablet_meta.compat_mode_ = lib::Worker::get_compatibility_mode(); diff --git a/src/storage/tablet/ob_tablet.cpp b/src/storage/tablet/ob_tablet.cpp index c3c714a6bb..3657877c8e 100644 --- a/src/storage/tablet/ob_tablet.cpp +++ b/src/storage/tablet/ob_tablet.cpp @@ -1797,11 +1797,11 @@ int ObTablet::build_migration_tablet_param(ObMigrationTabletParam &mig_tablet_pa mig_tablet_param.tablet_id_ = tablet_meta_.tablet_id_; mig_tablet_param.data_tablet_id_ = tablet_meta_.data_tablet_id_; mig_tablet_param.ref_tablet_id_ = tablet_meta_.ref_tablet_id_; + mig_tablet_param.create_scn_ = tablet_meta_.create_scn_; mig_tablet_param.start_scn_ = tablet_meta_.start_scn_; mig_tablet_param.clog_checkpoint_ts_ = tablet_meta_.clog_checkpoint_ts_; mig_tablet_param.snapshot_version_ = tablet_meta_.snapshot_version_; mig_tablet_param.multi_version_start_ = tablet_meta_.multi_version_start_; - mig_tablet_param.autoinc_seq_ = tablet_meta_.autoinc_seq_; mig_tablet_param.compat_mode_ = tablet_meta_.compat_mode_; mig_tablet_param.ha_status_ = tablet_meta_.ha_status_; mig_tablet_param.tx_data_ = tablet_meta_.tx_data_; @@ -1816,6 +1816,8 @@ int ObTablet::build_migration_tablet_param(ObMigrationTabletParam &mig_tablet_pa LOG_WARN("failed to copy storage schema", K(ret), K_(tablet_meta)); } else if (OB_FAIL(mig_tablet_param.ddl_data_.assign(tablet_meta_.ddl_data_))) { LOG_WARN("failed to assign ddl data", K(ret), K_(tablet_meta)); + } else if (OB_FAIL(mig_tablet_param.autoinc_seq_.assign(tablet_meta_.autoinc_seq_))) { + LOG_WARN("failed to assign autoinc seq", K(ret), K_(tablet_meta)); } } diff --git a/src/storage/tablet/ob_tablet_meta.cpp b/src/storage/tablet/ob_tablet_meta.cpp index 74bfb66c09..32f288c7cb 100644 --- a/src/storage/tablet/ob_tablet_meta.cpp +++ b/src/storage/tablet/ob_tablet_meta.cpp @@ -25,6 +25,10 @@ using namespace blocksstable; namespace storage { const int64_t ObTabletMeta::INIT_CLOG_CHECKPOINT_TS = 1; +const int64_t ObTabletMeta::INVALID_CREATE_SCN = -2; +// multi source transaction leader has no log scn when first time register +// create tablet buffer, so the init create scn for tablet could be -1. +const int64_t ObTabletMeta::INIT_CREATE_SCN = -1; ObTabletMeta::ObTabletMeta() : version_(TABLET_META_VERSION), @@ -34,7 +38,7 @@ ObTabletMeta::ObTabletMeta() data_tablet_id_(), ref_tablet_id_(), has_next_tablet_(false), - create_scn_(OB_INVALID_TIMESTAMP), + create_scn_(ObTabletMeta::INVALID_CREATE_SCN), start_scn_(OB_INVALID_TIMESTAMP), clog_checkpoint_ts_(OB_INVALID_TIMESTAMP), ddl_checkpoint_ts_(OB_INVALID_TIMESTAMP), @@ -301,7 +305,7 @@ int ObTabletMeta::init( ddl_start_log_ts_ = old_tablet_meta.ddl_start_log_ts_; ddl_snapshot_version_ = old_tablet_meta.ddl_snapshot_version_; max_sync_storage_schema_version_ = max_sync_storage_schema_version; - + if (OB_SUCC(ret)) { is_inited_ = true; } @@ -321,7 +325,7 @@ void ObTabletMeta::reset() data_tablet_id_.reset(); ref_tablet_id_.reset(); has_next_tablet_ = false; - create_scn_ = OB_INVALID_TIMESTAMP; + create_scn_ = ObTabletMeta::INVALID_CREATE_SCN; start_scn_ = OB_INVALID_TIMESTAMP; clog_checkpoint_ts_ = OB_INVALID_TIMESTAMP; ddl_checkpoint_ts_ = OB_INVALID_TIMESTAMP; @@ -346,7 +350,7 @@ bool ObTabletMeta::is_valid() const return ls_id_.is_valid() && tablet_id_.is_valid() && data_tablet_id_.is_valid() - //&& create_scn_ > OB_INVALID_TIMESTAMP + && create_scn_ >= INIT_CREATE_SCN && multi_version_start_ >= 0 && multi_version_start_ <= snapshot_version_ && compat_mode_ != lib::Worker::CompatMode::INVALID @@ -694,7 +698,7 @@ ObMigrationTabletParam::ObMigrationTabletParam() tablet_id_(), data_tablet_id_(), ref_tablet_id_(), - create_scn_(OB_INVALID_TIMESTAMP), + create_scn_(ObTabletMeta::INVALID_CREATE_SCN), start_scn_(OB_INVALID_TIMESTAMP), clog_checkpoint_ts_(OB_INVALID_TIMESTAMP), ddl_checkpoint_ts_(OB_INVALID_TIMESTAMP), @@ -720,7 +724,7 @@ bool ObMigrationTabletParam::is_valid() const return ls_id_.is_valid() && tablet_id_.is_valid() && data_tablet_id_.is_valid() - //&& create_scn_ > OB_INVALID_TIMESTAMP + && create_scn_ >= ObTabletMeta::INIT_CREATE_SCN && multi_version_start_ >= 0 && multi_version_start_ <= snapshot_version_ && compat_mode_ != lib::Worker::CompatMode::INVALID @@ -895,7 +899,7 @@ void ObMigrationTabletParam::reset() tablet_id_.reset(); data_tablet_id_.reset(); ref_tablet_id_.reset(); - create_scn_ = OB_INVALID_TIMESTAMP; + create_scn_ = ObTabletMeta::INVALID_CREATE_SCN; start_scn_ = OB_INVALID_TIMESTAMP; clog_checkpoint_ts_ = OB_INVALID_TIMESTAMP; ddl_checkpoint_ts_ = OB_INVALID_TIMESTAMP; diff --git a/src/storage/tablet/ob_tablet_meta.h b/src/storage/tablet/ob_tablet_meta.h index 336faa0d12..6896ff251d 100644 --- a/src/storage/tablet/ob_tablet_meta.h +++ b/src/storage/tablet/ob_tablet_meta.h @@ -43,6 +43,8 @@ class ObTabletMeta final { public: static const int64_t INIT_CLOG_CHECKPOINT_TS; + static const int64_t INVALID_CREATE_SCN; + static const int64_t INIT_CREATE_SCN; public: ObTabletMeta(); @@ -239,7 +241,7 @@ public: int64_t ddl_start_log_ts_; int64_t ddl_snapshot_version_; // max_sync_version may less than storage_schema.schema_version_ when major update schema - int64_t max_sync_storage_schema_version_; + int64_t max_sync_storage_schema_version_; }; } // namespace storage