Add subdir under logstream_N archive path
This commit is contained in:
		| @ -545,7 +545,7 @@ int ObArchiveSender::do_compensate_piece_(const ObLSID &id, | |||||||
| { | { | ||||||
|   int ret = OB_SUCCESS; |   int ret = OB_SUCCESS; | ||||||
|   share::ObBackupPath prefix; |   share::ObBackupPath prefix; | ||||||
|   if (OB_FAIL(share::ObArchivePathUtil::get_piece_ls_dir_path(backup_dest, station.get_round().dest_id_, |   if (OB_FAIL(share::ObArchivePathUtil::get_piece_ls_log_dir_path(backup_dest, station.get_round().dest_id_, | ||||||
|       station.get_round().round_, next_piece_id, id, prefix))) { |       station.get_round().round_, next_piece_id, id, prefix))) { | ||||||
|     ARCHIVE_LOG(WARN, "get piece ls dir path failed", K(ret), K(id), K(next_piece_id), K(station)); |     ARCHIVE_LOG(WARN, "get piece ls dir path failed", K(ret), K(id), K(next_piece_id), K(station)); | ||||||
|   } else { |   } else { | ||||||
| @ -665,7 +665,7 @@ int ObArchiveSender::build_archive_prefix_if_needed_(const ObLSID &id, | |||||||
|   share::ObBackupPath prefix; |   share::ObBackupPath prefix; | ||||||
|   if (pre_piece.is_valid() && pre_piece == cur_piece && piece_dir_exist) { |   if (pre_piece.is_valid() && pre_piece == cur_piece && piece_dir_exist) { | ||||||
|     // just skip |     // just skip | ||||||
|   } else if (OB_FAIL(share::ObArchivePathUtil::get_piece_ls_dir_path(backup_dest, station.get_round().dest_id_, |   } else if (OB_FAIL(share::ObArchivePathUtil::get_piece_ls_log_dir_path(backup_dest, station.get_round().dest_id_, | ||||||
|       station.get_round().round_, cur_piece.get_piece_id(), id, prefix))) { |       station.get_round().round_, cur_piece.get_piece_id(), id, prefix))) { | ||||||
|     ARCHIVE_LOG(WARN, "get piece ls dir path failed", K(ret), K(id), |     ARCHIVE_LOG(WARN, "get piece ls dir path failed", K(ret), K(id), | ||||||
|         K(cur_piece), K(station), K(backup_dest)); |         K(cur_piece), K(station), K(backup_dest)); | ||||||
|  | |||||||
| @ -37,6 +37,8 @@ int ObArchivePathUtil::build_restore_prefix(const char *base, | |||||||
|     ARCHIVE_LOG(WARN, "init prefix failed", K(ret), K(base)); |     ARCHIVE_LOG(WARN, "init prefix failed", K(ret), K(base)); | ||||||
|   } else if (OB_FAIL(prefix.join_ls(id))) { |   } else if (OB_FAIL(prefix.join_ls(id))) { | ||||||
|     ARCHIVE_LOG(WARN, "join ls failed", K(ret), K(id)); |     ARCHIVE_LOG(WARN, "join ls failed", K(ret), K(id)); | ||||||
|  |   } else if (OB_FAIL(prefix.join("log", ObBackupFileSuffix::NONE))) { | ||||||
|  |     ARCHIVE_LOG(WARN, "join log failed", K(ret), K(id)); | ||||||
|   } else { |   } else { | ||||||
|     ARCHIVE_LOG(INFO, "build restore prefix succ", K(prefix)); |     ARCHIVE_LOG(INFO, "build restore prefix succ", K(prefix)); | ||||||
|   } |   } | ||||||
| @ -50,14 +52,12 @@ int ObArchivePathUtil::build_restore_path(const char *base, | |||||||
| { | { | ||||||
|   int ret = OB_SUCCESS; |   int ret = OB_SUCCESS; | ||||||
|   path.reset(); |   path.reset(); | ||||||
|   if (OB_FAIL(path.init(base))) { |   if (OB_FAIL(build_restore_prefix(base, id, path))) { | ||||||
|     ARCHIVE_LOG(WARN, "init prefix failed", K(ret), K(base)); |     ARCHIVE_LOG(WARN, "build restore prefix failed", K(ret), K(id), K(base)); | ||||||
|   } else if (OB_FAIL(path.join_ls(id))) { |  | ||||||
|     ARCHIVE_LOG(WARN, "join ls failed", K(ret), K(id)); |  | ||||||
|   } else if (OB_FAIL(path.join(file_id, ObBackupFileSuffix::ARCHIVE))) { |   } else if (OB_FAIL(path.join(file_id, ObBackupFileSuffix::ARCHIVE))) { | ||||||
|     ARCHIVE_LOG(WARN, "join file_id failed", K(ret), K(id), K(file_id)); |     ARCHIVE_LOG(WARN, "join file_id failed", K(ret), K(id), K(file_id)); | ||||||
|   } else { |   } else { | ||||||
|     ARCHIVE_LOG(INFO, "build restore prefix succ", K(path)); |     ARCHIVE_LOG(INFO, "build restore path succ", K(path)); | ||||||
|   } |   } | ||||||
|   return ret; |   return ret; | ||||||
| } | } | ||||||
| @ -248,8 +248,8 @@ int ObArchivePathUtil::get_piece_inner_placeholder_file_path(const ObBackupDest | |||||||
|   return ret; |   return ret; | ||||||
| } | } | ||||||
|  |  | ||||||
| // oss://archive/piece_d[dest_id]r[round_id]p[piece_id]/logstream_[ls_id] | // oss://archive/piece_d[dest_id]r[round_id]p[piece_id]/logstream_[ls_id]/ | ||||||
| int ObArchivePathUtil::get_piece_ls_dir_path(const ObBackupDest &dest, const int64_t dest_id,  | int ObArchivePathUtil::get_piece_ls_dir_path_(const ObBackupDest &dest, const int64_t dest_id, | ||||||
|     const int64_t round_id, const int64_t piece_id, const ObLSID &ls_id, ObBackupPath &path) |     const int64_t round_id, const int64_t piece_id, const ObLSID &ls_id, ObBackupPath &path) | ||||||
| { | { | ||||||
|   int ret = OB_SUCCESS; |   int ret = OB_SUCCESS; | ||||||
| @ -264,12 +264,25 @@ int ObArchivePathUtil::get_piece_ls_dir_path(const ObBackupDest &dest, const int | |||||||
|   return ret; |   return ret; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | // oss://archive/piece_d[dest_id]r[round_id]p[piece_id]/logstream_[ls_id]/log/ | ||||||
|  | int ObArchivePathUtil::get_piece_ls_log_dir_path(const ObBackupDest &dest, const int64_t dest_id, | ||||||
|  |     const int64_t round_id, const int64_t piece_id, const ObLSID &ls_id, ObBackupPath &path) | ||||||
|  | { | ||||||
|  |   int ret = OB_SUCCESS; | ||||||
|  |   if (OB_FAIL(get_piece_ls_dir_path_(dest, dest_id, round_id, piece_id, ls_id, path))) { | ||||||
|  |     LOG_WARN("failed to get piece dir path", K(ret), K(dest), K(round_id), K(dest_id), K(piece_id), K(ls_id)); | ||||||
|  |   } else if (OB_FAIL(path.join("log", ObBackupFileSuffix::NONE))) { | ||||||
|  |     LOG_WARN("failed to join log ", K(ret), K(path)); | ||||||
|  |   } | ||||||
|  |   return ret; | ||||||
|  | } | ||||||
|  |  | ||||||
| // oss://archive/piece_d[dest_id]r[round_id]p[piece_id]/logstream_[ls_id]/ls_file_info | // oss://archive/piece_d[dest_id]r[round_id]p[piece_id]/logstream_[ls_id]/ls_file_info | ||||||
| int ObArchivePathUtil::get_single_ls_info_file_path(const ObBackupDest &dest, const int64_t dest_id,  | int ObArchivePathUtil::get_single_ls_info_file_path(const ObBackupDest &dest, const int64_t dest_id,  | ||||||
|     const int64_t round_id, const int64_t piece_id, const ObLSID &ls_id, ObBackupPath &path) |     const int64_t round_id, const int64_t piece_id, const ObLSID &ls_id, ObBackupPath &path) | ||||||
| { | { | ||||||
|   int ret = OB_SUCCESS; |   int ret = OB_SUCCESS; | ||||||
|   if (OB_FAIL(get_piece_ls_dir_path(dest, dest_id, round_id, piece_id, ls_id, path))) { |   if (OB_FAIL(get_piece_ls_dir_path_(dest, dest_id, round_id, piece_id, ls_id, path))) { | ||||||
|     LOG_WARN("failed to get piece dir path", K(ret), K(dest), K(round_id), K(dest_id), K(piece_id), K(ls_id)); |     LOG_WARN("failed to get piece dir path", K(ret), K(dest), K(round_id), K(dest_id), K(piece_id), K(ls_id)); | ||||||
|   } else if (OB_FAIL(path.join("ls_file_info", ObBackupFileSuffix::ARCHIVE))) { |   } else if (OB_FAIL(path.join("ls_file_info", ObBackupFileSuffix::ARCHIVE))) { | ||||||
|     LOG_WARN("failed to join ls file info ", K(ret), K(path)); |     LOG_WARN("failed to join ls file info ", K(ret), K(path)); | ||||||
| @ -303,12 +316,12 @@ int ObArchivePathUtil::get_tenant_archive_piece_infos_file_path(const ObBackupDe | |||||||
|   return ret; |   return ret; | ||||||
| } | } | ||||||
|  |  | ||||||
| // oss://archive/piece_d[dest_id]r[round_id]p[piece_id]/logstream_[%ld]/[file_id] | // oss://archive/piece_d[dest_id]r[round_id]p[piece_id]/logstream_[%ld]/log/[file_id] | ||||||
| int ObArchivePathUtil::get_ls_archive_file_path(const ObBackupDest &dest, const int64_t dest_id,  | int ObArchivePathUtil::get_ls_archive_file_path(const ObBackupDest &dest, const int64_t dest_id,  | ||||||
|     const int64_t round_id, const int64_t piece_id, const share::ObLSID &ls_id, const int64_t file_id, ObBackupPath &path) |     const int64_t round_id, const int64_t piece_id, const share::ObLSID &ls_id, const int64_t file_id, ObBackupPath &path) | ||||||
| { | { | ||||||
|   int ret = OB_SUCCESS; |   int ret = OB_SUCCESS; | ||||||
|   if (OB_FAIL(get_piece_ls_dir_path(dest, dest_id, round_id, piece_id, ls_id, path))) { |   if (OB_FAIL(get_piece_ls_log_dir_path(dest, dest_id, round_id, piece_id, ls_id, path))) { | ||||||
|     LOG_WARN("failed to get piece dir path", K(ret), K(dest), K(round_id), K(dest_id), K(piece_id), K(ls_id), K(file_id)); |     LOG_WARN("failed to get piece dir path", K(ret), K(dest), K(round_id), K(dest_id), K(piece_id), K(ls_id), K(file_id)); | ||||||
|   } else if (OB_FAIL(path.join(file_id, ObBackupFileSuffix::ARCHIVE))) { |   } else if (OB_FAIL(path.join(file_id, ObBackupFileSuffix::ARCHIVE))) { | ||||||
|     LOG_WARN("failed to join file id", K(ret), K(path), K(file_id)); |     LOG_WARN("failed to join file id", K(ret), K(path), K(file_id)); | ||||||
| @ -324,7 +337,7 @@ int ObArchivePathUtil::get_ls_meta_record_prefix(const ObBackupDest &dest, const | |||||||
| { | { | ||||||
|   int ret = OB_SUCCESS; |   int ret = OB_SUCCESS; | ||||||
|   ObFixedLengthString<ObArchiveLSMetaType::MAX_TYPE_LEN> s(meta_type.get_type_str()); |   ObFixedLengthString<ObArchiveLSMetaType::MAX_TYPE_LEN> s(meta_type.get_type_str()); | ||||||
|   if (OB_FAIL(get_piece_ls_dir_path(dest, dest_id, round_id, piece_id, ls_id, prefix))) { |   if (OB_FAIL(get_piece_ls_dir_path_(dest, dest_id, round_id, piece_id, ls_id, prefix))) { | ||||||
|     LOG_WARN("failed to get piece dir path", K(ret), K(dest), K(round_id), K(dest_id), K(piece_id), K(ls_id)); |     LOG_WARN("failed to get piece dir path", K(ret), K(dest), K(round_id), K(dest_id), K(piece_id), K(ls_id)); | ||||||
|   } else if (OB_FAIL(prefix.join(::obsys::ObStringUtil::str_to_lower(s.ptr()), ObBackupFileSuffix::NONE))) { |   } else if (OB_FAIL(prefix.join(::obsys::ObStringUtil::str_to_lower(s.ptr()), ObBackupFileSuffix::NONE))) { | ||||||
|     LOG_WARN("failed to join meta_type", K(ret), K(prefix)); |     LOG_WARN("failed to join meta_type", K(ret), K(prefix)); | ||||||
|  | |||||||
| @ -80,8 +80,8 @@ public: | |||||||
|       const int64_t round_id, const int64_t piece_id, const SCN &start_scn, |       const int64_t round_id, const int64_t piece_id, const SCN &start_scn, | ||||||
|       const SCN &end_scn, ObBackupPath &path); |       const SCN &end_scn, ObBackupPath &path); | ||||||
|  |  | ||||||
|   // oss://archive/piece_d[dest_id]r[round_id]p[piece_id]/logstream_[ls_id] |   // oss://archive/piece_d[dest_id]r[round_id]p[piece_id]/logstream_[ls_id]/log/ | ||||||
|   static int get_piece_ls_dir_path(const ObBackupDest &dest, const int64_t dest_id,  |   static int get_piece_ls_log_dir_path(const ObBackupDest &dest, const int64_t dest_id, | ||||||
|       const int64_t round_id, const int64_t piece_id, const ObLSID &ls_id, ObBackupPath &path); |       const int64_t round_id, const int64_t piece_id, const ObLSID &ls_id, ObBackupPath &path); | ||||||
|  |  | ||||||
|   // oss://archive/piece_d[dest_id]r[round_id]p[piece_id]/logstream_[ls_id]/ls_file_info.obarc |   // oss://archive/piece_d[dest_id]r[round_id]p[piece_id]/logstream_[ls_id]/ls_file_info.obarc | ||||||
| @ -96,7 +96,7 @@ public: | |||||||
|   static int get_tenant_archive_piece_infos_file_path(const ObBackupDest &dest, const int64_t dest_id,  |   static int get_tenant_archive_piece_infos_file_path(const ObBackupDest &dest, const int64_t dest_id,  | ||||||
|       const int64_t round_id, const int64_t piece_id, ObBackupPath &path); |       const int64_t round_id, const int64_t piece_id, ObBackupPath &path); | ||||||
|  |  | ||||||
|   // oss://archive/piece_d[dest_id]r[round_id]p[piece_id]/logstream_[%ld]/[file_id].obarc |   // oss://archive/piece_d[dest_id]r[round_id]p[piece_id]/logstream_[%ld]/log/[file_id].obarc | ||||||
|   static int get_ls_archive_file_path(const ObBackupDest &dest, const int64_t dest_id,  |   static int get_ls_archive_file_path(const ObBackupDest &dest, const int64_t dest_id,  | ||||||
|     const int64_t round_id, const int64_t piece_id, const share::ObLSID &ls_id, const int64_t file_id, ObBackupPath &path); |     const int64_t round_id, const int64_t piece_id, const share::ObLSID &ls_id, const int64_t file_id, ObBackupPath &path); | ||||||
|  |  | ||||||
| @ -109,6 +109,12 @@ public: | |||||||
|   static int get_ls_meta_record_path(const ObBackupDest &dest, const int64_t dest_id, |   static int get_ls_meta_record_path(const ObBackupDest &dest, const int64_t dest_id, | ||||||
|       const int64_t round_id, const int64_t piece_id, const share::ObLSID &ls_id, |       const int64_t round_id, const int64_t piece_id, const share::ObLSID &ls_id, | ||||||
|       const ObArchiveLSMetaType &meta_type, const int64_t file_id, ObBackupPath &path); |       const ObArchiveLSMetaType &meta_type, const int64_t file_id, ObBackupPath &path); | ||||||
|  |  | ||||||
|  | private: | ||||||
|  |   // oss://archive/piece_d[dest_id]r[round_id]p[piece_id]/logstream_[ls_id]/ | ||||||
|  |   static int get_piece_ls_dir_path_(const ObBackupDest &dest, const int64_t dest_id, | ||||||
|  |       const int64_t round_id, const int64_t piece_id, const ObLSID &ls_id, ObBackupPath &path); | ||||||
|  |  | ||||||
| private: | private: | ||||||
|  |  | ||||||
|   static const char * const ROUNDS_DIR_PATH; |   static const char * const ROUNDS_DIR_PATH; | ||||||
|  | |||||||
| @ -1340,7 +1340,7 @@ int ObArchiveStore::get_file_range_in_piece(const int64_t dest_id, const int64_t | |||||||
|   if (!is_init()) { |   if (!is_init()) { | ||||||
|     ret = OB_NOT_INIT; |     ret = OB_NOT_INIT; | ||||||
|     LOG_WARN("ObArchiveStore not init", K(ret)); |     LOG_WARN("ObArchiveStore not init", K(ret)); | ||||||
|   } else if (OB_FAIL(ObArchivePathUtil::get_piece_ls_dir_path(dest, dest_id, round_id, piece_id, ls_id, piece_path))) { |   } else if (OB_FAIL(ObArchivePathUtil::get_piece_ls_log_dir_path(dest, dest_id, round_id, piece_id, ls_id, piece_path))) { | ||||||
|     LOG_WARN("get piece ls dir path failed", K(ret), K(dest), K(dest_id), K(round_id), K(piece_id), K(ls_id)); |     LOG_WARN("get piece ls dir path failed", K(ret), K(dest), K(dest_id), K(round_id), K(piece_id), K(ls_id)); | ||||||
|   } else if (OB_FAIL(op.init(this))) { |   } else if (OB_FAIL(op.init(this))) { | ||||||
|     LOG_WARN("ObPieceFileListFilter init failed", K(ret)); |     LOG_WARN("ObPieceFileListFilter init failed", K(ret)); | ||||||
| @ -1372,7 +1372,7 @@ int ObArchiveStore:: get_file_list_in_piece(const int64_t dest_id, const int64_t | |||||||
|   if (!is_init()) { |   if (!is_init()) { | ||||||
|     ret = OB_NOT_INIT; |     ret = OB_NOT_INIT; | ||||||
|     LOG_WARN("ObArchiveStore not init", K(ret)); |     LOG_WARN("ObArchiveStore not init", K(ret)); | ||||||
|   } else if (OB_FAIL(ObArchivePathUtil::get_piece_ls_dir_path(dest, dest_id, round_id, piece_id, ls_id, piece_path))) { |   } else if (OB_FAIL(ObArchivePathUtil::get_piece_ls_log_dir_path(dest, dest_id, round_id, piece_id, ls_id, piece_path))) { | ||||||
|     LOG_WARN("get piece ls dir path failed", K(ret), K(dest), K(dest_id), K(round_id), K(piece_id), K(ls_id)); |     LOG_WARN("get piece ls dir path failed", K(ret), K(dest), K(dest_id), K(round_id), K(piece_id), K(ls_id)); | ||||||
|   } else if (OB_FAIL(op.init(this, &filelist))) { |   } else if (OB_FAIL(op.init(this, &filelist))) { | ||||||
|     LOG_WARN("ObLSFileListOp init failed", K(ret)); |     LOG_WARN("ObLSFileListOp init failed", K(ret)); | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user
	 obdev
					obdev