fix ddl while migration not allow duplicate sstable issue

This commit is contained in:
oceanoverflow
2022-12-15 13:41:27 +00:00
committed by ob-robot
parent 28156b90af
commit d71fdb19f8
4 changed files with 12 additions and 6 deletions

View File

@ -1398,7 +1398,8 @@ int ObTabletCopyFinishTask::inner_update_tablet_table_store_with_major_(
ls_->get_rebuild_seq(), ls_->get_rebuild_seq(),
true/*need_report*/, true/*need_report*/,
SCN::min_scn()/*clog_checkpoint_scn*/, SCN::min_scn()/*clog_checkpoint_scn*/,
true/*need_check_sstable*/); true/*need_check_sstable*/,
true/*allow_duplicate_sstable*/);
if (tablet->get_storage_schema().get_version() < src_tablet_meta_->storage_schema_.get_version()) { if (tablet->get_storage_schema().get_version() < src_tablet_meta_->storage_schema_.get_version()) {
SERVER_EVENT_ADD("storage_ha", "schema_change_need_merge_tablet_meta", SERVER_EVENT_ADD("storage_ha", "schema_change_need_merge_tablet_meta",
"tenant_id", MTL_ID(), "tenant_id", MTL_ID(),

View File

@ -224,6 +224,7 @@ ObUpdateTableStoreParam::ObUpdateTableStoreParam(
ddl_snapshot_version_(0), ddl_snapshot_version_(0),
ddl_execution_id_(0), ddl_execution_id_(0),
ddl_cluster_version_(0), ddl_cluster_version_(0),
allow_duplicate_sstable_(false),
tx_data_(), tx_data_(),
binding_info_(), binding_info_(),
auto_inc_seq_() auto_inc_seq_()
@ -239,7 +240,8 @@ ObUpdateTableStoreParam::ObUpdateTableStoreParam(
const int64_t rebuild_seq, const int64_t rebuild_seq,
const bool need_report, const bool need_report,
const SCN clog_checkpoint_scn, const SCN clog_checkpoint_scn,
const bool need_check_sstable) const bool need_check_sstable,
const bool allow_duplicate_sstable)
: table_handle_(table_handle), : table_handle_(table_handle),
snapshot_version_(snapshot_version), snapshot_version_(snapshot_version),
clog_checkpoint_scn_(), clog_checkpoint_scn_(),
@ -255,6 +257,7 @@ ObUpdateTableStoreParam::ObUpdateTableStoreParam(
ddl_snapshot_version_(0), ddl_snapshot_version_(0),
ddl_execution_id_(0), ddl_execution_id_(0),
ddl_cluster_version_(0), ddl_cluster_version_(0),
allow_duplicate_sstable_(allow_duplicate_sstable),
tx_data_(), tx_data_(),
binding_info_(), binding_info_(),
auto_inc_seq_() auto_inc_seq_()
@ -285,6 +288,7 @@ ObUpdateTableStoreParam::ObUpdateTableStoreParam(
ddl_snapshot_version_(0), ddl_snapshot_version_(0),
ddl_execution_id_(0), ddl_execution_id_(0),
ddl_cluster_version_(0), ddl_cluster_version_(0),
allow_duplicate_sstable_(false),
tx_data_(), tx_data_(),
binding_info_(), binding_info_(),
auto_inc_seq_() auto_inc_seq_()

View File

@ -305,7 +305,8 @@ struct ObUpdateTableStoreParam
const int64_t rebuild_seq, const int64_t rebuild_seq,
const bool need_report = false, const bool need_report = false,
const share::SCN clog_checkpoint_scn = share::SCN::min_scn(), const share::SCN clog_checkpoint_scn = share::SCN::min_scn(),
const bool need_check_sstable = false); const bool need_check_sstable = false,
const bool allow_duplicate_sstable = false);
ObUpdateTableStoreParam( // for ddl merge task only ObUpdateTableStoreParam( // for ddl merge task only
const ObTableHandleV2 &table_handle, const ObTableHandleV2 &table_handle,
@ -320,7 +321,7 @@ struct ObUpdateTableStoreParam
TO_STRING_KV(K_(table_handle), K_(snapshot_version), K_(clog_checkpoint_scn), K_(multi_version_start), TO_STRING_KV(K_(table_handle), K_(snapshot_version), K_(clog_checkpoint_scn), K_(multi_version_start),
K_(keep_old_ddl_sstable), K_(need_report), KPC_(storage_schema), K_(rebuild_seq), K_(update_with_major_flag), K_(keep_old_ddl_sstable), K_(need_report), KPC_(storage_schema), K_(rebuild_seq), K_(update_with_major_flag),
K_(need_check_sstable), K_(ddl_checkpoint_scn), K_(ddl_start_scn), K_(ddl_snapshot_version), K_(need_check_sstable), K_(ddl_checkpoint_scn), K_(ddl_start_scn), K_(ddl_snapshot_version),
K_(ddl_execution_id), K_(ddl_cluster_version), K_(tx_data), K_(binding_info), K_(auto_inc_seq)); K_(ddl_execution_id), K_(ddl_cluster_version), K_(allow_duplicate_sstable), K_(tx_data), K_(binding_info), K_(auto_inc_seq));
ObTableHandleV2 table_handle_; ObTableHandleV2 table_handle_;
int64_t snapshot_version_; int64_t snapshot_version_;
@ -337,6 +338,7 @@ struct ObUpdateTableStoreParam
int64_t ddl_snapshot_version_; int64_t ddl_snapshot_version_;
int64_t ddl_execution_id_; int64_t ddl_execution_id_;
int64_t ddl_cluster_version_; int64_t ddl_cluster_version_;
bool allow_duplicate_sstable_;
// msd // msd
ObTabletTxMultiSourceDataUnit tx_data_; ObTabletTxMultiSourceDataUnit tx_data_;

View File

@ -773,11 +773,10 @@ int ObTabletTableStore::build_major_tables(
inc_base_snapshot_version = -1; inc_base_snapshot_version = -1;
ObITable *new_table = const_cast<ObITable *>(param.table_handle_.get_table()); //table can be null ObITable *new_table = const_cast<ObITable *>(param.table_handle_.get_table()); //table can be null
ObTablesHandleArray tables_handle; ObTablesHandleArray tables_handle;
const bool allow_duplicate_sstable = false;
if (OB_NOT_NULL(new_table) && OB_FAIL(tables_handle.add_table(new_table))) { if (OB_NOT_NULL(new_table) && OB_FAIL(tables_handle.add_table(new_table))) {
LOG_WARN("failed to add table into tables handle", K(ret), K(param)); LOG_WARN("failed to add table into tables handle", K(ret), K(param));
} else if (OB_FAIL(inner_build_major_tables_(allocator, old_store, tables_handle, } else if (OB_FAIL(inner_build_major_tables_(allocator, old_store, tables_handle,
param.multi_version_start_, allow_duplicate_sstable, inc_base_snapshot_version))) { param.multi_version_start_, param.allow_duplicate_sstable_, inc_base_snapshot_version))) {
LOG_WARN("failed to inner build major tables", K(ret), K(param), K(tables_handle)); LOG_WARN("failed to inner build major tables", K(ret), K(param), K(tables_handle));
} }
return ret; return ret;