fix backup garbage collecting log stream report -4016

This commit is contained in:
oceanoverflow
2023-02-21 09:11:47 +00:00
committed by ob-robot
parent ea16d3cd79
commit 2d4ebc458c
3 changed files with 32 additions and 3 deletions

View File

@ -450,6 +450,7 @@ class ObString;
ACT(AFTER_MIGRATION_REPORT_LS_META_TABLE,)\ ACT(AFTER_MIGRATION_REPORT_LS_META_TABLE,)\
ACT(BEFORE_RESTORE_HANDLE_FETCH_LOG_TASK,)\ ACT(BEFORE_RESTORE_HANDLE_FETCH_LOG_TASK,)\
ACT(BEFORE_DATA_TABLETS_MIGRATION_TASK,)\ ACT(BEFORE_DATA_TABLETS_MIGRATION_TASK,)\
ACT(AFTER_LS_GC_DELETE_ALL_TABLETS,)\
ACT(MAX_DEBUG_SYNC_POINT,) ACT(MAX_DEBUG_SYNC_POINT,)
DECLARE_ENUM(ObDebugSyncPoint, debug_sync_point, OB_DEBUG_SYNC_POINT_DEF); DECLARE_ENUM(ObDebugSyncPoint, debug_sync_point, OB_DEBUG_SYNC_POINT_DEF);

View File

@ -347,6 +347,9 @@ int ObBackupUtils::check_ls_valid_for_backup(const uint64_t tenant_id, const sha
} else if (OB_ISNULL(ls = handle.get_ls())) { } else if (OB_ISNULL(ls = handle.get_ls())) {
ret = OB_ERR_UNEXPECTED; ret = OB_ERR_UNEXPECTED;
LOG_WARN("log stream not exist", K(ret), K(ls_id)); LOG_WARN("log stream not exist", K(ret), K(ls_id));
} else if (ls->is_stopped()) {
ret = OB_REPLICA_CANNOT_BACKUP;
LOG_WARN("ls has stopped, can not backup", K(ret), K(tenant_id), K(ls_id));
} else if (OB_FAIL(ls->get_ls_meta(ls_meta))) { } else if (OB_FAIL(ls->get_ls_meta(ls_meta))) {
LOG_WARN("failed to get ls meta", K(ret), K(tenant_id), K(ls_id)); LOG_WARN("failed to get ls meta", K(ret), K(tenant_id), K(ls_id));
} else if (OB_FAIL(ls_meta.check_valid_for_backup())) { } else if (OB_FAIL(ls_meta.check_valid_for_backup())) {
@ -1761,9 +1764,25 @@ int ObBackupTabletProvider::get_tablet_skipped_type_(const uint64_t tenant_id, c
skipped_type = ObBackupSkippedType(ObBackupSkippedType::DELETED); skipped_type = ObBackupSkippedType(ObBackupSkippedType::DELETED);
} else if (1 == tablet_count) { } else if (1 == tablet_count) {
if (tmp_ls_id == ls_id.id()) { if (tmp_ls_id == ls_id.id()) {
ret = OB_ERR_UNEXPECTED; storage::ObLS *ls = NULL;
LOG_WARN("tablet not exist, but __all_tablet_to_ls still exist", ObLSService *ls_service = NULL;
K(ret), K(tenant_id), K(ls_id), K(tablet_id)); ObLSHandle handle;
if (OB_ISNULL(ls_service = MTL_WITH_CHECK_TENANT(ObLSService *, tenant_id))) {
ret = OB_ERR_UNEXPECTED;
LOG_WARN("log stream service is NULL", K(ret), K(tenant_id));
} else if (OB_FAIL(ls_service->get_ls(ls_id, handle, ObLSGetMod::STORAGE_MOD))) {
LOG_WARN("failed to get log stream", K(ret), K(ls_id));
} else if (OB_ISNULL(ls = handle.get_ls())) {
ret = OB_ERR_UNEXPECTED;
LOG_WARN("log stream not exist", K(ret), K(ls_id));
} else if (ls->is_stopped()) {
ret = OB_REPLICA_CANNOT_BACKUP;
LOG_WARN("ls has stopped, can not backup", K(ret), K(tenant_id), K(ls_id));
} else {
ret = OB_ERR_UNEXPECTED;
LOG_WARN("tablet not exist, but __all_tablet_to_ls still exist",
K(ret), K(tenant_id), K(ls_id), K(tablet_id));
}
} else { } else {
skipped_type = ObBackupSkippedType(ObBackupSkippedType::TRANSFER); skipped_type = ObBackupSkippedType(ObBackupSkippedType::TRANSFER);
LOG_INFO("tablet transfered, need change turn", K(ls_id)); LOG_INFO("tablet transfered, need change turn", K(ls_id));

View File

@ -70,6 +70,7 @@
#include "observer/table_load/ob_table_load_coordinator.h" #include "observer/table_load/ob_table_load_coordinator.h"
#include "observer/table_load/ob_table_load_service.h" #include "observer/table_load/ob_table_load_service.h"
#include "observer/table_load/ob_table_load_store.h" #include "observer/table_load/ob_table_load_store.h"
#include "observer/ob_server_event_history_table_operator.h"
using namespace oceanbase::share; using namespace oceanbase::share;
using namespace oceanbase::common; using namespace oceanbase::common;
@ -240,6 +241,14 @@ int ObLSTabletService::prepare_for_safe_destroy()
if (OB_FAIL(delete_all_tablets())) { if (OB_FAIL(delete_all_tablets())) {
LOG_WARN("fail to delete all tablets", K(ret)); LOG_WARN("fail to delete all tablets", K(ret));
} }
#ifdef ERRSIM
if (!ls_->get_ls_id().is_sys_ls()) {
SERVER_EVENT_SYNC_ADD("ls_tablet_service", "after_delete_all_tablets",
"tenant_id", MTL_ID(),
"ls_id", ls_->get_ls_id().id());
DEBUG_SYNC(AFTER_LS_GC_DELETE_ALL_TABLETS);
}
#endif
return ret; return ret;
} }