From 5d5bdf2da6c3685f31328064a19e7d38278afd53 Mon Sep 17 00:00:00 2001 From: oceanoverflow Date: Tue, 14 Feb 2023 10:11:54 +0000 Subject: [PATCH] fix backup get skipped report report -4016 issue --- .../backup/ob_backup_data_ls_task_mgr.cpp | 4 +++- src/share/ob_debug_sync_point.h | 1 + src/storage/backup/ob_backup_task.cpp | 13 +++++++++++-- src/storage/backup/ob_backup_utils.cpp | 3 ++- src/storage/high_availability/ob_ls_migration.cpp | 6 ++++++ 5 files changed, 23 insertions(+), 4 deletions(-) diff --git a/src/rootserver/backup/ob_backup_data_ls_task_mgr.cpp b/src/rootserver/backup/ob_backup_data_ls_task_mgr.cpp index de16d04066..abe3a88ec3 100644 --- a/src/rootserver/backup/ob_backup_data_ls_task_mgr.cpp +++ b/src/rootserver/backup/ob_backup_data_ls_task_mgr.cpp @@ -122,7 +122,9 @@ int ObBackupDataLSTaskMgr::gen_and_add_task_() case ObBackupDataTaskType::Type::BACKUP_DATA_MAJOR: { if (ObBackupDataTaskType::Type::BACKUP_DATA_MAJOR == ls_attr_->task_type_.type_) { #ifdef ERRSIM - ROOTSERVICE_EVENT_ADD("backup", "before_backup_major_sstable"); + ROOTSERVICE_EVENT_ADD("backup", "before_backup_major_sstable", + "tenant_id", ls_attr_->tenant_id_, + "ls_id", ls_attr_->ls_id_.id()); DEBUG_SYNC(BEFORE_BACKUP_MAJOR_SSTABLE); #endif } diff --git a/src/share/ob_debug_sync_point.h b/src/share/ob_debug_sync_point.h index 9f805771e6..1fae1819e6 100644 --- a/src/share/ob_debug_sync_point.h +++ b/src/share/ob_debug_sync_point.h @@ -449,6 +449,7 @@ class ObString; ACT(BEFORE_RESTORE_SERVICE_PUSH_FETCH_DATA,)\ ACT(AFTER_MIGRATION_REPORT_LS_META_TABLE,)\ ACT(BEFORE_RESTORE_HANDLE_FETCH_LOG_TASK,)\ + ACT(BEFORE_DATA_TABLETS_MIGRATION_TASK,)\ ACT(MAX_DEBUG_SYNC_POINT,) DECLARE_ENUM(ObDebugSyncPoint, debug_sync_point, OB_DEBUG_SYNC_POINT_DEF); diff --git a/src/storage/backup/ob_backup_task.cpp b/src/storage/backup/ob_backup_task.cpp index 46d297f6df..6c4294da99 100644 --- a/src/storage/backup/ob_backup_task.cpp +++ b/src/storage/backup/ob_backup_task.cpp @@ -3795,8 +3795,6 @@ int ObLSBackupPrepareTask::may_need_advance_checkpoint_() LOG_WARN("failed to fetch backup ls meta checkpoint ts", K(ret), K_(param)); } else if (FALSE_IT(ls_backup_ctx_->rebuild_seq_ = rebuild_seq)) { // assign rebuild seq - } else if (backup_data_type_.is_major_backup()) { - LOG_INFO("no need advance checkpoint when backup major"); } else { const uint64_t tenant_id = param_.tenant_id_; const share::ObLSID &ls_id = param_.ls_id_; @@ -3813,6 +3811,17 @@ int ObLSBackupPrepareTask::may_need_advance_checkpoint_() LOG_WARN("failed to get ls meta", K(ret), K(tenant_id), K(ls_id)); } else if (OB_FAIL(cur_ls_meta.check_valid_for_backup())) { LOG_WARN("failed to check valid for backup", K(ret), K(cur_ls_meta)); + } else if (backup_data_type_.is_major_backup()) { + if (backup_clog_checkpoint_scn > cur_ls_meta.get_clog_checkpoint_scn()) { + ret = OB_REPLICA_CANNOT_BACKUP; + LOG_WARN("clog checkpoint scn too small, can not use this replica", K(ret), K(tenant_id), K(ls_id)); + SERVER_EVENT_ADD("backup", "clog_checkpoint_scn_too_small", + "tenant_id", tenant_id, + "ls_id", ls_id.id(), + "backup_set_id", param_.backup_set_desc_.backup_set_id_, + "backup_clog_checkpoint_scn", backup_clog_checkpoint_scn, + "cur_clog_checkpoint_scn", cur_ls_meta.get_clog_checkpoint_scn()); + } } else if (backup_clog_checkpoint_scn <= cur_ls_meta.get_clog_checkpoint_scn()) { LOG_INFO("no need advance checkpoint", K_(param)); } else if (OB_FAIL(advance_checkpoint_by_flush(tenant_id, ls_id, backup_clog_checkpoint_scn, ls))) { diff --git a/src/storage/backup/ob_backup_utils.cpp b/src/storage/backup/ob_backup_utils.cpp index 19b74c4e61..195ada5542 100644 --- a/src/storage/backup/ob_backup_utils.cpp +++ b/src/storage/backup/ob_backup_utils.cpp @@ -1762,7 +1762,8 @@ int ObBackupTabletProvider::get_tablet_skipped_type_(const uint64_t tenant_id, c } else if (1 == tablet_count) { if (tmp_ls_id == ls_id.id()) { ret = OB_ERR_UNEXPECTED; - LOG_INFO("tablet not exist, but __all_tablet_to_ls still exist", K(tmp_ls_id)); + LOG_WARN("tablet not exist, but __all_tablet_to_ls still exist", + K(ret), K(tenant_id), K(ls_id), K(tablet_id)); } else { skipped_type = ObBackupSkippedType(ObBackupSkippedType::TRANSFER); LOG_INFO("tablet transfered, need change turn", K(ls_id)); diff --git a/src/storage/high_availability/ob_ls_migration.cpp b/src/storage/high_availability/ob_ls_migration.cpp index 71994c1fa0..1e3a86e307 100644 --- a/src/storage/high_availability/ob_ls_migration.cpp +++ b/src/storage/high_availability/ob_ls_migration.cpp @@ -2915,6 +2915,12 @@ int ObDataTabletsMigrationTask::process() int tmp_ret = OB_SUCCESS; bool is_ls_online_success = false; LOG_INFO("start do data tablets migration task", K(ret), KPC(ctx_)); +#ifdef ERRSIM + SERVER_EVENT_SYNC_ADD("storage_ha", "before_data_tablets_migration_task", + "tenant_id", ctx_->tenant_id_, + "ls_id", ctx_->arg_.ls_id_.id()); +#endif + DEBUG_SYNC(BEFORE_DATA_TABLETS_MIGRATION_TASK); if (!is_inited_) { ret = OB_NOT_INIT; -- GitLab