[FEAT MERGE] merge transfer
Co-authored-by: wxhwang <wxhwang@126.com> Co-authored-by: godyangfight <godyangfight@gmail.com> Co-authored-by: Tyshawn <tuyunshan@gmail.com>
This commit is contained in:
@ -235,7 +235,7 @@ ObUpdateTableStoreParam::ObUpdateTableStoreParam(
|
||||
const int64_t multi_version_start,
|
||||
const ObStorageSchema *storage_schema,
|
||||
const int64_t rebuild_seq)
|
||||
: table_handle_(),
|
||||
: sstable_(nullptr),
|
||||
snapshot_version_(snapshot_version),
|
||||
clog_checkpoint_scn_(),
|
||||
multi_version_start_(multi_version_start),
|
||||
@ -248,15 +248,14 @@ ObUpdateTableStoreParam::ObUpdateTableStoreParam(
|
||||
allow_duplicate_sstable_(false),
|
||||
tx_data_(),
|
||||
binding_info_(),
|
||||
auto_inc_seq_(),
|
||||
medium_info_list_(nullptr),
|
||||
autoinc_seq_(),
|
||||
merge_type_(MERGE_TYPE_MAX)
|
||||
{
|
||||
clog_checkpoint_scn_.set_min();
|
||||
}
|
||||
|
||||
ObUpdateTableStoreParam::ObUpdateTableStoreParam(
|
||||
const ObTableHandleV2 &table_handle,
|
||||
const blocksstable::ObSSTable *sstable,
|
||||
const int64_t snapshot_version,
|
||||
const int64_t multi_version_start,
|
||||
const ObStorageSchema *storage_schema,
|
||||
@ -265,9 +264,8 @@ ObUpdateTableStoreParam::ObUpdateTableStoreParam(
|
||||
const SCN clog_checkpoint_scn,
|
||||
const bool need_check_sstable,
|
||||
const bool allow_duplicate_sstable,
|
||||
const compaction::ObMediumCompactionInfoList *medium_info_list,
|
||||
const ObMergeType merge_type)
|
||||
: table_handle_(table_handle),
|
||||
: sstable_(sstable),
|
||||
snapshot_version_(snapshot_version),
|
||||
clog_checkpoint_scn_(),
|
||||
multi_version_start_(multi_version_start),
|
||||
@ -280,22 +278,22 @@ ObUpdateTableStoreParam::ObUpdateTableStoreParam(
|
||||
allow_duplicate_sstable_(allow_duplicate_sstable),
|
||||
tx_data_(),
|
||||
binding_info_(),
|
||||
auto_inc_seq_(),
|
||||
medium_info_list_(medium_info_list),
|
||||
autoinc_seq_(),
|
||||
merge_type_(merge_type)
|
||||
{
|
||||
clog_checkpoint_scn_ = clog_checkpoint_scn;
|
||||
}
|
||||
|
||||
ObUpdateTableStoreParam::ObUpdateTableStoreParam(
|
||||
const ObTableHandleV2 &table_handle,
|
||||
const blocksstable::ObSSTable *sstable,
|
||||
const int64_t snapshot_version,
|
||||
const int64_t multi_version_start,
|
||||
const int64_t rebuild_seq,
|
||||
const ObStorageSchema *storage_schema,
|
||||
const bool update_with_major_flag,
|
||||
const ObMergeType merge_type,
|
||||
const bool need_report)
|
||||
: table_handle_(table_handle),
|
||||
: sstable_(sstable),
|
||||
snapshot_version_(snapshot_version),
|
||||
clog_checkpoint_scn_(),
|
||||
multi_version_start_(multi_version_start),
|
||||
@ -308,9 +306,8 @@ ObUpdateTableStoreParam::ObUpdateTableStoreParam(
|
||||
allow_duplicate_sstable_(false),
|
||||
tx_data_(),
|
||||
binding_info_(),
|
||||
auto_inc_seq_(),
|
||||
medium_info_list_(nullptr),
|
||||
merge_type_(MERGE_TYPE_MAX)
|
||||
autoinc_seq_(),
|
||||
merge_type_(merge_type)
|
||||
{
|
||||
clog_checkpoint_scn_.set_min();
|
||||
}
|
||||
@ -330,9 +327,12 @@ ObBatchUpdateTableStoreParam::ObBatchUpdateTableStoreParam()
|
||||
: tables_handle_(),
|
||||
rebuild_seq_(OB_INVALID_VERSION),
|
||||
update_logical_minor_sstable_(false),
|
||||
is_transfer_replace_(false),
|
||||
start_scn_(SCN::min_scn()),
|
||||
tablet_meta_(nullptr)
|
||||
tablet_meta_(nullptr),
|
||||
update_ddl_sstable_(false)
|
||||
{
|
||||
ha_status_.init_status();
|
||||
}
|
||||
|
||||
void ObBatchUpdateTableStoreParam::reset()
|
||||
@ -340,15 +340,19 @@ void ObBatchUpdateTableStoreParam::reset()
|
||||
tables_handle_.reset();
|
||||
rebuild_seq_ = OB_INVALID_VERSION;
|
||||
update_logical_minor_sstable_ = false;
|
||||
is_transfer_replace_ = false;
|
||||
start_scn_.set_min();
|
||||
tablet_meta_ = nullptr;
|
||||
update_ddl_sstable_ = false;
|
||||
ha_status_.init_status();
|
||||
}
|
||||
|
||||
bool ObBatchUpdateTableStoreParam::is_valid() const
|
||||
{
|
||||
return rebuild_seq_ > OB_INVALID_VERSION
|
||||
&& (!update_logical_minor_sstable_
|
||||
|| (update_logical_minor_sstable_ && start_scn_ > SCN::min_scn() && OB_ISNULL(tablet_meta_)));
|
||||
|| (update_logical_minor_sstable_ && start_scn_ > SCN::min_scn() && OB_ISNULL(tablet_meta_)))
|
||||
&& ha_status_.is_valid();
|
||||
}
|
||||
|
||||
int ObBatchUpdateTableStoreParam::assign(
|
||||
@ -363,8 +367,11 @@ int ObBatchUpdateTableStoreParam::assign(
|
||||
} else {
|
||||
rebuild_seq_ = param.rebuild_seq_;
|
||||
update_logical_minor_sstable_ = param.update_logical_minor_sstable_;
|
||||
is_transfer_replace_ = param.is_transfer_replace_;
|
||||
start_scn_ = param.start_scn_;
|
||||
tablet_meta_ = param.tablet_meta_;
|
||||
update_ddl_sstable_ = param.update_ddl_sstable_;
|
||||
ha_status_ = param.ha_status_;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
@ -431,202 +438,6 @@ void ObPartitionReadableInfo::reset()
|
||||
force_ = false;
|
||||
}
|
||||
|
||||
|
||||
int ObMigrateStatusHelper::trans_replica_op(const ObReplicaOpType &op_type, ObMigrateStatus &migrate_status)
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
migrate_status = OB_MIGRATE_STATUS_MAX;
|
||||
|
||||
if (!is_replica_op_valid(op_type)) {
|
||||
ret = OB_INVALID_ARGUMENT;
|
||||
LOG_WARN("invalid args", K(ret), K(op_type));
|
||||
} else {
|
||||
switch (op_type) {
|
||||
case ADD_REPLICA_OP: {
|
||||
migrate_status = OB_MIGRATE_STATUS_ADD;
|
||||
break;
|
||||
}
|
||||
case FAST_MIGRATE_REPLICA_OP:
|
||||
case MIGRATE_REPLICA_OP: {
|
||||
migrate_status = OB_MIGRATE_STATUS_MIGRATE;
|
||||
break;
|
||||
}
|
||||
case REBUILD_REPLICA_OP: {
|
||||
migrate_status = OB_MIGRATE_STATUS_REBUILD;
|
||||
break;
|
||||
}
|
||||
case CHANGE_REPLICA_OP: {
|
||||
migrate_status = OB_MIGRATE_STATUS_CHANGE;
|
||||
break;
|
||||
}
|
||||
case RESTORE_REPLICA_OP: {
|
||||
migrate_status = OB_MIGRATE_STATUS_RESTORE;
|
||||
break;
|
||||
}
|
||||
case COPY_GLOBAL_INDEX_OP: {
|
||||
migrate_status = OB_MIGRATE_STATUS_COPY_GLOBAL_INDEX;
|
||||
break;
|
||||
}
|
||||
case COPY_LOCAL_INDEX_OP: {
|
||||
migrate_status = OB_MIGRATE_STATUS_COPY_LOCAL_INDEX;
|
||||
break;
|
||||
}
|
||||
case RESTORE_FOLLOWER_REPLICA_OP: {
|
||||
migrate_status = OB_MIGRATE_STATUS_RESTORE_FOLLOWER;
|
||||
break;
|
||||
}
|
||||
case RESTORE_STANDBY_OP: {
|
||||
migrate_status = OB_MIGRATE_STATUS_RESTORE_STANDBY;
|
||||
break;
|
||||
}
|
||||
case LINK_SHARE_MAJOR_OP: {
|
||||
migrate_status = OB_MIGRATE_STATUS_LINK_MAJOR;
|
||||
break;
|
||||
}
|
||||
|
||||
default: {
|
||||
ret = OB_INVALID_ARGUMENT;
|
||||
LOG_ERROR("unknown op type", K(ret), K(op_type));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObMigrateStatusHelper::trans_fail_status(const ObMigrateStatus &cur_status, ObMigrateStatus &fail_status)
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
fail_status = OB_MIGRATE_STATUS_MAX;
|
||||
|
||||
if (cur_status < OB_MIGRATE_STATUS_NONE || cur_status >= OB_MIGRATE_STATUS_MAX) {
|
||||
ret = OB_INVALID_ARGUMENT;
|
||||
LOG_WARN("invalid args", K(ret), K(cur_status));
|
||||
} else {
|
||||
switch (cur_status) {
|
||||
case OB_MIGRATE_STATUS_ADD: {
|
||||
fail_status = OB_MIGRATE_STATUS_ADD_FAIL;
|
||||
break;
|
||||
}
|
||||
case OB_MIGRATE_STATUS_MIGRATE: {
|
||||
fail_status = OB_MIGRATE_STATUS_MIGRATE_FAIL;
|
||||
break;
|
||||
}
|
||||
case OB_MIGRATE_STATUS_REBUILD: {
|
||||
fail_status = OB_MIGRATE_STATUS_NONE;
|
||||
break;
|
||||
}
|
||||
case OB_MIGRATE_STATUS_CHANGE: {
|
||||
fail_status = OB_MIGRATE_STATUS_NONE;
|
||||
break;
|
||||
}
|
||||
case OB_MIGRATE_STATUS_RESTORE: {
|
||||
//allow observer self reentry
|
||||
fail_status = OB_MIGRATE_STATUS_NONE;
|
||||
break;
|
||||
}
|
||||
case OB_MIGRATE_STATUS_COPY_GLOBAL_INDEX: {
|
||||
fail_status = OB_MIGRATE_STATUS_NONE;
|
||||
break;
|
||||
}
|
||||
case OB_MIGRATE_STATUS_COPY_LOCAL_INDEX: {
|
||||
fail_status = OB_MIGRATE_STATUS_NONE;
|
||||
break;
|
||||
}
|
||||
case OB_MIGRATE_STATUS_HOLD: {
|
||||
fail_status = OB_MIGRATE_STATUS_NONE;
|
||||
break;
|
||||
}
|
||||
case OB_MIGRATE_STATUS_RESTORE_FOLLOWER : {
|
||||
//allow observer self reentry
|
||||
fail_status = OB_MIGRATE_STATUS_NONE;
|
||||
break;
|
||||
}
|
||||
case OB_MIGRATE_STATUS_RESTORE_STANDBY : {
|
||||
//allow observer self reentry
|
||||
fail_status = OB_MIGRATE_STATUS_NONE;
|
||||
break;
|
||||
}
|
||||
case OB_MIGRATE_STATUS_LINK_MAJOR : {
|
||||
fail_status = OB_MIGRATE_STATUS_NONE;
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
ret = OB_INVALID_ARGUMENT;
|
||||
LOG_ERROR("invalid cur status for fail", K(ret), K(cur_status));
|
||||
}
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObMigrateStatusHelper::trans_reboot_status(const ObMigrateStatus &cur_status, ObMigrateStatus &reboot_status)
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
reboot_status = OB_MIGRATE_STATUS_MAX;
|
||||
|
||||
if (cur_status < OB_MIGRATE_STATUS_NONE || cur_status >= OB_MIGRATE_STATUS_MAX) {
|
||||
ret = OB_INVALID_ARGUMENT;
|
||||
LOG_WARN("invalid args", K(ret), K(cur_status));
|
||||
} else {
|
||||
switch (cur_status) {
|
||||
case OB_MIGRATE_STATUS_NONE: {
|
||||
reboot_status = OB_MIGRATE_STATUS_NONE;
|
||||
break;
|
||||
}
|
||||
case OB_MIGRATE_STATUS_ADD:
|
||||
case OB_MIGRATE_STATUS_ADD_FAIL: {
|
||||
reboot_status = OB_MIGRATE_STATUS_ADD_FAIL;
|
||||
break;
|
||||
}
|
||||
case OB_MIGRATE_STATUS_MIGRATE:
|
||||
case OB_MIGRATE_STATUS_MIGRATE_FAIL: {
|
||||
reboot_status = OB_MIGRATE_STATUS_MIGRATE_FAIL;
|
||||
break;
|
||||
}
|
||||
case OB_MIGRATE_STATUS_REBUILD: {
|
||||
reboot_status = OB_MIGRATE_STATUS_NONE;
|
||||
break;
|
||||
}
|
||||
case OB_MIGRATE_STATUS_CHANGE: {
|
||||
reboot_status = OB_MIGRATE_STATUS_NONE;
|
||||
break;
|
||||
}
|
||||
case OB_MIGRATE_STATUS_RESTORE:
|
||||
case OB_MIGRATE_STATUS_RESTORE_FOLLOWER:
|
||||
case OB_MIGRATE_STATUS_RESTORE_STANDBY: {
|
||||
reboot_status = OB_MIGRATE_STATUS_NONE;
|
||||
break;
|
||||
}
|
||||
case OB_MIGRATE_STATUS_RESTORE_FAIL: {
|
||||
reboot_status = OB_MIGRATE_STATUS_RESTORE_FAIL;
|
||||
break;
|
||||
}
|
||||
case OB_MIGRATE_STATUS_COPY_GLOBAL_INDEX: {
|
||||
reboot_status = OB_MIGRATE_STATUS_NONE;
|
||||
break;
|
||||
}
|
||||
case OB_MIGRATE_STATUS_COPY_LOCAL_INDEX: {
|
||||
reboot_status = OB_MIGRATE_STATUS_NONE;
|
||||
break;
|
||||
}
|
||||
case OB_MIGRATE_STATUS_HOLD: {
|
||||
reboot_status = OB_MIGRATE_STATUS_NONE;
|
||||
break;
|
||||
}
|
||||
case OB_MIGRATE_STATUS_LINK_MAJOR: {
|
||||
reboot_status = OB_MIGRATE_STATUS_NONE;
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
ret = OB_INVALID_ARGUMENT;
|
||||
LOG_ERROR("invalid cur status for fail", K(ret), K(cur_status));
|
||||
}
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObCreateSSTableParamExtraInfo::assign(const ObCreateSSTableParamExtraInfo &other)
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
|
||||
Reference in New Issue
Block a user