This is an automated email from the ASF dual-hosted git repository.
gavinchou pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push:
new d33f580e388 [fix](cloud-balance) use right file size instead of block
size (#38939)
d33f580e388 is described below
commit d33f580e3882af57ff88df5718af06ee20f3ada1
Author: Yongqiang YANG <[email protected]>
AuthorDate: Wed Aug 7 10:40:21 2024 +0800
[fix](cloud-balance) use right file size instead of block size (#38939)
introduced by #34191
---
be/src/cloud/cloud_internal_service.cpp | 1 +
be/src/io/cache/block_file_cache_downloader.cpp | 3 ++-
be/src/olap/rowset/segment_v2/segment.cpp | 18 ++++++++++--------
gensrc/proto/internal_service.proto | 1 +
4 files changed, 14 insertions(+), 9 deletions(-)
diff --git a/be/src/cloud/cloud_internal_service.cpp
b/be/src/cloud/cloud_internal_service.cpp
index 63e3d4f3081..66e089c22e9 100644
--- a/be/src/cloud/cloud_internal_service.cpp
+++ b/be/src/cloud/cloud_internal_service.cpp
@@ -94,6 +94,7 @@ void
CloudInternalServiceImpl::get_file_cache_meta_by_tablet_id(
meta->set_rowset_id(rowset_id);
meta->set_segment_id(segment_id);
meta->set_file_name(file_name);
+
meta->set_file_size(rowset->rowset_meta()->segment_file_size(segment_id));
meta->set_offset(std::get<0>(tuple));
meta->set_size(std::get<1>(tuple));
meta->set_cache_type(cache_type_to_pb(std::get<2>(tuple)));
diff --git a/be/src/io/cache/block_file_cache_downloader.cpp
b/be/src/io/cache/block_file_cache_downloader.cpp
index 02e8f736828..585c0ff0159 100644
--- a/be/src/io/cache/block_file_cache_downloader.cpp
+++ b/be/src/io/cache/block_file_cache_downloader.cpp
@@ -171,7 +171,8 @@ void FileCacheBlockDownloader::download_file_cache_block(
DownloadFileMeta download_meta {
.path =
storage_resource.value()->remote_segment_path(*find_it->second,
meta.segment_id()),
- .file_size = meta.offset() + meta.size(), // To avoid trigger
get file size IO
+ .file_size = meta.has_file_size() ? meta.file_size()
+ : -1, // To avoid trigger
get file size IO
.offset = meta.offset(),
.download_size = meta.size(),
.file_system = storage_resource.value()->fs,
diff --git a/be/src/olap/rowset/segment_v2/segment.cpp
b/be/src/olap/rowset/segment_v2/segment.cpp
index 1b31117f126..7f353cc0add 100644
--- a/be/src/olap/rowset/segment_v2/segment.cpp
+++ b/be/src/olap/rowset/segment_v2/segment.cpp
@@ -315,9 +315,10 @@ Status Segment::_parse_footer(SegmentFooterPB* footer) {
DCHECK_EQ(bytes_read, 12);
if (memcmp(fixed_buf + 8, k_segment_magic, k_segment_magic_length) != 0) {
- return Status::Corruption("Bad segment file {}: magic number not
match, cache_key: {}",
- _file_reader->path().native(),
-
file_cache_key_str(_file_reader->path().native()));
+ return Status::Corruption(
+ "Bad segment file {}: file_size: {}, magic number not match,
cache_key: {}",
+ _file_reader->path().native(), file_size,
+ file_cache_key_str(_file_reader->path().native()));
}
// read footer PB
@@ -339,17 +340,18 @@ Status Segment::_parse_footer(SegmentFooterPB* footer) {
uint32_t actual_checksum = crc32c::Value(footer_buf.data(),
footer_buf.size());
if (actual_checksum != expect_checksum) {
return Status::Corruption(
- "Bad segment file {}: footer checksum not match, actual={} vs
expect={}, "
- "cache_key: {}",
- _file_reader->path().native(), actual_checksum,
expect_checksum,
+ "Bad segment file {}: file_size = {}, footer checksum not
match, actual={} "
+ "vs expect={}, cache_key: {}",
+ _file_reader->path().native(), file_size, actual_checksum,
expect_checksum,
file_cache_key_str(_file_reader->path().native()));
}
// deserialize footer PB
if (!footer->ParseFromString(footer_buf)) {
return Status::Corruption(
- "Bad segment file {}: failed to parse SegmentFooterPB,
cache_key: ",
- _file_reader->path().native(),
file_cache_key_str(_file_reader->path().native()));
+ "Bad segment file {}: file_size = {}, failed to parse
SegmentFooterPB, cache_key: ",
+ _file_reader->path().native(), file_size,
+ file_cache_key_str(_file_reader->path().native()));
}
return Status::OK();
}
diff --git a/gensrc/proto/internal_service.proto
b/gensrc/proto/internal_service.proto
index b08308f2144..e188001e491 100644
--- a/gensrc/proto/internal_service.proto
+++ b/gensrc/proto/internal_service.proto
@@ -805,6 +805,7 @@ message FileCacheBlockMeta {
required int64 size = 6;
required FileCacheType cache_type = 7;
required int64 expiration_time = 8;
+ optional int64 file_size = 9;
}
message PGetFileCacheMetaResponse {
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]