[CP] backup task cannot finish when backup disk is full
This commit is contained in:
committed by
wangzelin.wzl
parent
e44cddde95
commit
f4df995acd
1
deps/oblib/src/lib/utility/ob_tracepoint.h
vendored
1
deps/oblib/src/lib/utility/ob_tracepoint.h
vendored
@ -448,6 +448,7 @@ public:
|
|||||||
EN_STOP_TENANT_LOG_ARCHIVE_BACKUP = 186,
|
EN_STOP_TENANT_LOG_ARCHIVE_BACKUP = 186,
|
||||||
EN_BACKUP_SERVER_DISK_IS_FULL = 188,
|
EN_BACKUP_SERVER_DISK_IS_FULL = 188,
|
||||||
EN_BACKUP_DATA_CLEAN_ERROR = 189,
|
EN_BACKUP_DATA_CLEAN_ERROR = 189,
|
||||||
|
EN_BACKUP_COMMON_HEADER_NOT_COMPLETED = 190,
|
||||||
EN_BACKUP_SCHEDULER_WEAK_READ = 191,
|
EN_BACKUP_SCHEDULER_WEAK_READ = 191,
|
||||||
EN_CHECK_STANDBY_CLUSTER_SCHEMA_CONDITION = 201,
|
EN_CHECK_STANDBY_CLUSTER_SCHEMA_CONDITION = 201,
|
||||||
EN_ALLOCATE_LOB_BUF_FAILED = 202,
|
EN_ALLOCATE_LOB_BUF_FAILED = 202,
|
||||||
|
|||||||
@ -81,7 +81,13 @@ int64_t ObBackupMeta::get_total_macro_block_count() const
|
|||||||
}
|
}
|
||||||
|
|
||||||
ObBackupMetaFileStore::ObBackupMetaFileStore()
|
ObBackupMetaFileStore::ObBackupMetaFileStore()
|
||||||
: is_inited_(false), pos_(-1), cur_mem_file_(), allocator_(), base_path_info_(), meta_file_path_list_()
|
: is_inited_(false),
|
||||||
|
pos_(-1),
|
||||||
|
cur_mem_file_(),
|
||||||
|
allocator_(),
|
||||||
|
base_path_info_(),
|
||||||
|
meta_file_path_list_(),
|
||||||
|
need_swith_next_file_(false)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
ObBackupMetaFileStore::~ObBackupMetaFileStore()
|
ObBackupMetaFileStore::~ObBackupMetaFileStore()
|
||||||
@ -122,6 +128,8 @@ int ObBackupMetaFileStore::next(ObBackupMeta& backup_meta)
|
|||||||
LOG_WARN("memory file should not be null", KR(ret), K(mem_file));
|
LOG_WARN("memory file should not be null", KR(ret), K(mem_file));
|
||||||
} else if (OB_FAIL(may_need_parse_common_header(mem_file))) {
|
} else if (OB_FAIL(may_need_parse_common_header(mem_file))) {
|
||||||
LOG_WARN("failed to parse common header", KR(ret));
|
LOG_WARN("failed to parse common header", KR(ret));
|
||||||
|
} else if (need_swith_next_file_) {
|
||||||
|
FLOG_INFO("backup data has incomplete data, skip it", KPC(mem_file));
|
||||||
} else if (OB_FAIL(parse_sealed_message(mem_file, backup_meta, end_of_one_block))) {
|
} else if (OB_FAIL(parse_sealed_message(mem_file, backup_meta, end_of_one_block))) {
|
||||||
LOG_WARN("failed to parse sealed message", KR(ret));
|
LOG_WARN("failed to parse sealed message", KR(ret));
|
||||||
} else if (mem_file->reader_.pos() == mem_file->end_pos_) {
|
} else if (mem_file->reader_.pos() == mem_file->end_pos_) {
|
||||||
@ -227,7 +235,7 @@ int ObBackupMetaFileStore::get_next_mem_file(MemoryFile*& mem_file)
|
|||||||
if (IS_NOT_INIT) {
|
if (IS_NOT_INIT) {
|
||||||
ret = OB_NOT_INIT;
|
ret = OB_NOT_INIT;
|
||||||
LOG_WARN("backup meta file store not init", KR(ret));
|
LOG_WARN("backup meta file store not init", KR(ret));
|
||||||
} else if (cur_mem_file_.reader_.remain() > 0 && !cur_mem_file_.meet_file_end_mark_) {
|
} else if (cur_mem_file_.reader_.remain() > 0 && !cur_mem_file_.meet_file_end_mark_ && !need_swith_next_file_) {
|
||||||
mem_file = &cur_mem_file_;
|
mem_file = &cur_mem_file_;
|
||||||
} else {
|
} else {
|
||||||
LOG_INFO("current memory file", K(cur_mem_file_.reader_));
|
LOG_INFO("current memory file", K(cur_mem_file_.reader_));
|
||||||
@ -246,6 +254,7 @@ int ObBackupMetaFileStore::get_next_mem_file(MemoryFile*& mem_file)
|
|||||||
LOG_WARN("failed to assign mem file", KR(ret), K(tmp_mem_file));
|
LOG_WARN("failed to assign mem file", KR(ret), K(tmp_mem_file));
|
||||||
} else {
|
} else {
|
||||||
mem_file = &cur_mem_file_;
|
mem_file = &cur_mem_file_;
|
||||||
|
need_swith_next_file_ = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -262,6 +271,9 @@ int ObBackupMetaFileStore::may_need_parse_common_header(MemoryFile*& mem_file)
|
|||||||
LOG_WARN("backup meta file store do not init", KR(ret));
|
LOG_WARN("backup meta file store do not init", KR(ret));
|
||||||
} else if (!mem_file->need_parse_common_header_) {
|
} else if (!mem_file->need_parse_common_header_) {
|
||||||
// do not need parse common header
|
// do not need parse common header
|
||||||
|
} else if (reader.remain() < sizeof(ObBackupCommonHeader)) {
|
||||||
|
FLOG_INFO("backup data has incomplete data, skip it", KPC(mem_file));
|
||||||
|
need_swith_next_file_ = true;
|
||||||
} else if (OB_FAIL(parse_common_header(reader, common_header))) {
|
} else if (OB_FAIL(parse_common_header(reader, common_header))) {
|
||||||
LOG_WARN("failed to parse common header", KR(ret));
|
LOG_WARN("failed to parse common header", KR(ret));
|
||||||
} else if (OB_FAIL(common_header.check_valid())) {
|
} else if (OB_FAIL(common_header.check_valid())) {
|
||||||
|
|||||||
@ -118,6 +118,7 @@ private:
|
|||||||
common::ObArenaAllocator allocator_;
|
common::ObArenaAllocator allocator_;
|
||||||
share::ObBackupBaseDataPathInfo base_path_info_;
|
share::ObBackupBaseDataPathInfo base_path_info_;
|
||||||
common::ObArray<share::ObBackupPath> meta_file_path_list_;
|
common::ObArray<share::ObBackupPath> meta_file_path_list_;
|
||||||
|
bool need_swith_next_file_;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
DISALLOW_COPY_AND_ASSIGN(ObBackupMetaFileStore);
|
DISALLOW_COPY_AND_ASSIGN(ObBackupMetaFileStore);
|
||||||
|
|||||||
@ -1973,6 +1973,23 @@ int ObBackupFileAppender::sync_upload()
|
|||||||
STORAGE_LOG(WARN, "advance align size fail", K(ret), K(align_size), K(advance_size));
|
STORAGE_LOG(WARN, "advance align size fail", K(ret), K(align_size), K(advance_size));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef ERRSIM
|
||||||
|
if (OB_SUCC(ret) && ObBackupFileType::BACKUP_META_INDEX == file_type_) {
|
||||||
|
ret = E(EventTable::EN_BACKUP_COMMON_HEADER_NOT_COMPLETED) OB_SUCCESS;
|
||||||
|
if (OB_FAIL(ret)) {
|
||||||
|
LOG_WARN("prepare uplaod incomplete header", K(ret), KPC(common_header_));
|
||||||
|
const int64_t head_length = sizeof(ObBackupCommonHeader);
|
||||||
|
if (0 == head_length / 2 || data_buffer_.length() < head_length) {
|
||||||
|
ret = OB_SUCCESS;
|
||||||
|
} else if (OB_FAIL(storage_appender_.pwrite(data_buffer_.data(), head_length / 2, file_offset_))) {
|
||||||
|
STORAGE_LOG(WARN, "storage_writer writer fail", K(ret), K(storage_appender_));
|
||||||
|
} else {
|
||||||
|
ret = OB_IO_ERROR;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef ERRSIM
|
#ifdef ERRSIM
|
||||||
if (OB_SUCC(ret) && ObBackupFileType::BACKUP_META_INDEX == file_type_) {
|
if (OB_SUCC(ret) && ObBackupFileType::BACKUP_META_INDEX == file_type_) {
|
||||||
ret = E(EventTable::EN_BACKUP_META_INDEX_BUFFER_NOT_COMPLETED) OB_SUCCESS;
|
ret = E(EventTable::EN_BACKUP_META_INDEX_BUFFER_NOT_COMPLETED) OB_SUCCESS;
|
||||||
@ -2956,7 +2973,7 @@ int ObBackupPhysicalPGCtx::fetch_retry_points(const ObString& path, const ObStri
|
|||||||
common_header = NULL;
|
common_header = NULL;
|
||||||
int64_t end_pos = 0;
|
int64_t end_pos = 0;
|
||||||
if (buffer_reader.remain() < sizeof(ObBackupCommonHeader)) {
|
if (buffer_reader.remain() < sizeof(ObBackupCommonHeader)) {
|
||||||
STORAGE_LOG(INFO, "backup data has incomplete data, skip it", K(buffer_reader.remain()));
|
FLOG_INFO("backup data has incomplete data, skip it", K(buffer_reader.remain()), K(path), K(storage_info));
|
||||||
break;
|
break;
|
||||||
} else if (OB_FAIL(buffer_reader.get(common_header))) {
|
} else if (OB_FAIL(buffer_reader.get(common_header))) {
|
||||||
STORAGE_LOG(WARN, "read macro index common header fail", K(ret));
|
STORAGE_LOG(WARN, "read macro index common header fail", K(ret));
|
||||||
|
|||||||
@ -753,7 +753,11 @@ int ObPhyRestoreMetaIndexStore::init_one_file(
|
|||||||
ObBackupMetaIndex meta_index;
|
ObBackupMetaIndex meta_index;
|
||||||
while (OB_SUCC(ret) && buffer_reader.remain() > 0) {
|
while (OB_SUCC(ret) && buffer_reader.remain() > 0) {
|
||||||
common_header = NULL;
|
common_header = NULL;
|
||||||
if (OB_FAIL(buffer_reader.get(common_header))) {
|
|
||||||
|
if (buffer_reader.remain() < sizeof(ObBackupCommonHeader)) {
|
||||||
|
FLOG_INFO("backup data has incomplete data, skip it", K(buffer_reader.remain()), K(path), K(storage_info));
|
||||||
|
break;
|
||||||
|
} else if (OB_FAIL(buffer_reader.get(common_header))) {
|
||||||
STORAGE_LOG(WARN, "read meta index common header fail", K(ret));
|
STORAGE_LOG(WARN, "read meta index common header fail", K(ret));
|
||||||
} else if (OB_ISNULL(common_header)) {
|
} else if (OB_ISNULL(common_header)) {
|
||||||
ret = OB_ERR_UNEXPECTED;
|
ret = OB_ERR_UNEXPECTED;
|
||||||
@ -1115,7 +1119,7 @@ int ObPhyRestoreMacroIndexStore::init_one_file(
|
|||||||
while (OB_SUCC(ret) && buffer_reader.remain() > 0) {
|
while (OB_SUCC(ret) && buffer_reader.remain() > 0) {
|
||||||
common_header = NULL;
|
common_header = NULL;
|
||||||
if (buffer_reader.remain() < sizeof(ObBackupCommonHeader)) {
|
if (buffer_reader.remain() < sizeof(ObBackupCommonHeader)) {
|
||||||
STORAGE_LOG(INFO, "backup data has incomplete data, skip it", K(buffer_reader.remain()));
|
FLOG_INFO("backup data has incomplete data, skip it", K(buffer_reader.remain()), K(path), K(storage_info));
|
||||||
break;
|
break;
|
||||||
} else if (OB_FAIL(buffer_reader.get(common_header))) {
|
} else if (OB_FAIL(buffer_reader.get(common_header))) {
|
||||||
STORAGE_LOG(WARN, "read macro index common header fail", K(ret));
|
STORAGE_LOG(WARN, "read macro index common header fail", K(ret));
|
||||||
|
|||||||
Reference in New Issue
Block a user