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 <98214048+dataroar...@users.noreply.github.com>
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: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to