This is an automated email from the ASF dual-hosted git repository.
yiguolei pushed a commit to branch branch-4.1
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-4.1 by this push:
new a244bd0f489 branch-4.1: [fix](filecache) avoid duplicated FileCache
counter accumulation in NewOlapScanner(pick#61072) (#64235)
a244bd0f489 is described below
commit a244bd0f489ca4608dc4b5108186ee1e9dd6ce29
Author: zhengyu <[email protected]>
AuthorDate: Tue Jun 9 10:39:43 2026 +0800
branch-4.1: [fix](filecache) avoid duplicated FileCache counter
accumulation in NewOlapScanner(pick#61072) (#64235)
Original PR: https://github.com/apache/doris/pull/61072
Picked to: branch-4.1
Pick branch: freemandealer:pick-branch-4.1-pr-61072
Validation:
- git diff --check
- build-support/check-format.sh with clang-format 16
Notes:
Resolved olap_scanner.cpp conflict against branch-4.1 file layout.
---
be/src/exec/scan/olap_scanner.cpp | 42 ++++++++++++++++++++++++++++++---------
be/src/exec/scan/olap_scanner.h | 3 ---
2 files changed, 33 insertions(+), 12 deletions(-)
diff --git a/be/src/exec/scan/olap_scanner.cpp
b/be/src/exec/scan/olap_scanner.cpp
index ee20194c21a..c2d3a945cca 100644
--- a/be/src/exec/scan/olap_scanner.cpp
+++ b/be/src/exec/scan/olap_scanner.cpp
@@ -125,6 +125,26 @@ static std::string read_columns_to_string(TabletSchemaSPtr
tablet_schema,
return read_columns_string;
}
+static bool has_file_cache_statistics(const io::FileCacheStatistics& stats) {
+ return stats.num_local_io_total != 0 || stats.num_remote_io_total != 0 ||
+ stats.num_peer_io_total != 0 || stats.local_io_timer != 0 ||
+ stats.bytes_read_from_local != 0 || stats.bytes_read_from_remote !=
0 ||
+ stats.bytes_read_from_peer != 0 || stats.remote_io_timer != 0 ||
+ stats.peer_io_timer != 0 || stats.remote_wait_timer != 0 ||
+ stats.write_cache_io_timer != 0 || stats.bytes_write_into_cache !=
0 ||
+ stats.num_skip_cache_io_total != 0 ||
stats.read_cache_file_directly_timer != 0 ||
+ stats.cache_get_or_set_timer != 0 || stats.lock_wait_timer != 0 ||
+ stats.get_timer != 0 || stats.set_timer != 0 ||
+ stats.inverted_index_num_local_io_total != 0 ||
+ stats.inverted_index_num_remote_io_total != 0 ||
+ stats.inverted_index_num_peer_io_total != 0 ||
+ stats.inverted_index_bytes_read_from_local != 0 ||
+ stats.inverted_index_bytes_read_from_remote != 0 ||
+ stats.inverted_index_bytes_read_from_peer != 0 ||
+ stats.inverted_index_local_io_timer != 0 ||
stats.inverted_index_remote_io_timer != 0 ||
+ stats.inverted_index_peer_io_timer != 0 ||
stats.inverted_index_io_timer != 0;
+}
+
Status OlapScanner::prepare() {
auto* local_state = static_cast<OlapScanLocalState*>(_local_state);
auto& tablet = _tablet_reader_params.tablet;
@@ -629,25 +649,30 @@ void OlapScanner::update_realtime_counters() {
stats.compressed_bytes_read);
} else {
_state->get_query_ctx()->resource_ctx()->io_context()->update_scan_bytes_from_local_storage(
- stats.file_cache_stats.bytes_read_from_local -
_bytes_read_from_local);
+ stats.file_cache_stats.bytes_read_from_local);
_state->get_query_ctx()
->resource_ctx()
->io_context()
->update_scan_bytes_from_remote_storage(
- stats.file_cache_stats.bytes_read_from_remote -
_bytes_read_from_remote);
+ stats.file_cache_stats.bytes_read_from_remote);
DorisMetrics::instance()->query_scan_bytes_from_local->increment(
- stats.file_cache_stats.bytes_read_from_local -
_bytes_read_from_local);
+ stats.file_cache_stats.bytes_read_from_local);
DorisMetrics::instance()->query_scan_bytes_from_remote->increment(
- stats.file_cache_stats.bytes_read_from_remote -
_bytes_read_from_remote);
+ stats.file_cache_stats.bytes_read_from_remote);
+ }
+
+ if (has_file_cache_statistics(stats.file_cache_stats)) {
+ io::FileCacheProfileReporter
cache_profile(local_state->_segment_profile.get());
+ cache_profile.update(&stats.file_cache_stats);
+
_state->get_query_ctx()->resource_ctx()->io_context()->update_bytes_write_into_cache(
+ stats.file_cache_stats.bytes_write_into_cache);
}
_tablet_reader->mutable_stats()->compressed_bytes_read = 0;
_tablet_reader->mutable_stats()->uncompressed_bytes_read = 0;
_tablet_reader->mutable_stats()->raw_rows_read = 0;
-
- _bytes_read_from_local =
_tablet_reader->stats().file_cache_stats.bytes_read_from_local;
- _bytes_read_from_remote =
_tablet_reader->stats().file_cache_stats.bytes_read_from_remote;
+ _tablet_reader->mutable_stats()->file_cache_stats = {};
}
void OlapScanner::_collect_profile_before_close() {
@@ -777,8 +802,7 @@ void OlapScanner::_collect_profile_before_close() {
inverted_index_profile.update(local_state->_index_filter_profile.get(),
&stats.inverted_index_stats);
- // only cloud deploy mode will use file cache.
- if (config::is_cloud_mode() && config::enable_file_cache) {
+ if (has_file_cache_statistics(stats.file_cache_stats)) {
io::FileCacheProfileReporter
cache_profile(local_state->_segment_profile.get());
cache_profile.update(&stats.file_cache_stats);
_state->get_query_ctx()->resource_ctx()->io_context()->update_bytes_write_into_cache(
diff --git a/be/src/exec/scan/olap_scanner.h b/be/src/exec/scan/olap_scanner.h
index 2187be4ce45..928c3515abf 100644
--- a/be/src/exec/scan/olap_scanner.h
+++ b/be/src/exec/scan/olap_scanner.h
@@ -99,9 +99,6 @@ private:
TabletReader::ReaderParams _tablet_reader_params;
std::unique_ptr<TabletReader> _tablet_reader;
- int64_t _bytes_read_from_local = 0;
- int64_t _bytes_read_from_remote = 0;
-
public:
std::vector<ColumnId> _return_columns;
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]