gavinchou commented on code in PR #60001:
URL: https://github.com/apache/doris/pull/60001#discussion_r2702535525
##########
be/src/cloud/cloud_tablet.cpp:
##########
@@ -1736,5 +1557,212 @@ void CloudTablet::add_warmed_up_rowset(const RowsetId&
rowset_id) {
.start_tp = std::chrono::steady_clock::now()};
}
+bool CloudTablet::_check_rowset_should_be_visible_but_not_warmed_up(
+ const RowsetMetaSharedPtr& rs_meta, int64_t path_max_version,
+ std::chrono::system_clock::time_point freshness_limit_tp) const {
+ if (rs_meta->version() == Version {0, 1}) {
+ // skip rowset[0-1]
+ return false;
+ }
+ bool ret = rs_meta->start_version() > path_max_version &&
+ rs_meta->visible_timestamp() < freshness_limit_tp;
+ if (ret && config::read_cluster_cache_opt_verbose_log) {
+ using namespace std::chrono;
+ std::time_t t1 = system_clock::to_time_t(rs_meta->visible_timestamp());
+ std::tm tm1 = *std::localtime(&t1);
+ std::ostringstream oss1;
+ oss1 << std::put_time(&tm1, "%Y-%m-%d %H:%M:%S");
+
+ std::time_t t2 = system_clock::to_time_t(freshness_limit_tp);
+ std::tm tm2 = *std::localtime(&t2);
+ std::ostringstream oss2;
+ oss2 << std::put_time(&tm2, "%Y-%m-%d %H:%M:%S");
+ LOG_INFO(
+ "[verbose]
CloudTablet::capture_rs_readers_with_freshness_tolerance, "
+ "find a rowset which should be visible but not warmed up,
tablet_id={}, "
+ "path_max_version={}, rowset_id={}, version={},
visible_time={}, "
+ "freshness_limit={}, version_graph={},
rowset_warmup_digest={}",
+ tablet_id(), path_max_version,
rs_meta->rowset_id().to_string(),
+ rs_meta->version().to_string(), oss1.str(), oss2.str(),
+ _timestamped_version_tracker.debug_string(),
rowset_warmup_digest());
+ }
+ return ret;
+}
+
+void CloudTablet::_submit_segment_download_task(const RowsetSharedPtr& rs, int
seg_id,
+ const RowsetMetaSharedPtr&
rowset_meta,
+ int64_t expiration_time) {
+ auto self = std::dynamic_pointer_cast<CloudTablet>(shared_from_this());
+ auto storage_resource = rowset_meta->remote_storage_resource();
+ if (!storage_resource) {
+ LOG(WARNING) << storage_resource.error();
+ return;
+ }
+
+ // clang-format off
+
_engine.file_cache_block_downloader().submit_download_task(io::DownloadFileMeta
{
+ .path =
storage_resource.value()->remote_segment_path(*rowset_meta, seg_id),
+ .file_size = rs->rowset_meta()->segment_file_size(seg_id),
+ .file_system = storage_resource.value()->fs,
+ .ctx = {
+ .expiration_time = expiration_time,
+ .is_dryrun =
config::enable_reader_dryrun_when_download_file_cache,
+ .is_warmup = true
+ },
+ .download_done {[=](Status st) {
+
DBUG_EXECUTE_IF("CloudTablet::add_rowsets.download_data.callback.block_compaction_rowset",
{
+ if (rs->version().second > rs->version().first) {
+ auto sleep_time = dp->param<int>("sleep", 3);
+ LOG_INFO(
+ "[verbose] block download for
rowset={}, "
+ "version={}, sleep={}",
+ rs->rowset_id().to_string(),
+ rs->version().to_string(), sleep_time);
+ std::this_thread::sleep_for(
+ std::chrono::seconds(sleep_time));
+ }
+ });
+
self->complete_rowset_segment_warmup(WarmUpTriggerSource::SYNC_ROWSET,
rowset_meta->rowset_id(), st, 1, 0);
+ if (!st) {
+ LOG_WARNING("add rowset warm up error ").error(st);
+ }
+ }},
+ });
+ // clang-format on
+}
+
+void CloudTablet::_submit_inverted_index_download_task(const RowsetSharedPtr&
rs,
+ const
RowsetMetaSharedPtr& rowset_meta,
+ const io::Path&
idx_path, int64_t idx_size,
+ int64_t
expiration_time) {
+ auto self = std::dynamic_pointer_cast<CloudTablet>(shared_from_this());
+ auto storage_resource = rowset_meta->remote_storage_resource();
+ if (!storage_resource) {
+ LOG(WARNING) << storage_resource.error();
+ return;
+ }
+
+ io::DownloadFileMeta meta {
+ .path = idx_path,
+ .file_size = idx_size,
+ .file_system = storage_resource.value()->fs,
+ .ctx = {.expiration_time = expiration_time,
+ .is_dryrun =
config::enable_reader_dryrun_when_download_file_cache,
+ .is_warmup = true},
+ .download_done {[=](Status st) {
+
DBUG_EXECUTE_IF("CloudTablet::add_rowsets.download_idx.callback.block", {
+ // clang-format on
Review Comment:
wrong "on" here
##########
be/src/cloud/cloud_tablet.cpp:
##########
@@ -1736,5 +1557,212 @@ void CloudTablet::add_warmed_up_rowset(const RowsetId&
rowset_id) {
.start_tp = std::chrono::steady_clock::now()};
}
+bool CloudTablet::_check_rowset_should_be_visible_but_not_warmed_up(
+ const RowsetMetaSharedPtr& rs_meta, int64_t path_max_version,
+ std::chrono::system_clock::time_point freshness_limit_tp) const {
+ if (rs_meta->version() == Version {0, 1}) {
+ // skip rowset[0-1]
+ return false;
+ }
+ bool ret = rs_meta->start_version() > path_max_version &&
+ rs_meta->visible_timestamp() < freshness_limit_tp;
+ if (ret && config::read_cluster_cache_opt_verbose_log) {
+ using namespace std::chrono;
+ std::time_t t1 = system_clock::to_time_t(rs_meta->visible_timestamp());
+ std::tm tm1 = *std::localtime(&t1);
+ std::ostringstream oss1;
+ oss1 << std::put_time(&tm1, "%Y-%m-%d %H:%M:%S");
+
+ std::time_t t2 = system_clock::to_time_t(freshness_limit_tp);
+ std::tm tm2 = *std::localtime(&t2);
+ std::ostringstream oss2;
+ oss2 << std::put_time(&tm2, "%Y-%m-%d %H:%M:%S");
+ LOG_INFO(
+ "[verbose]
CloudTablet::capture_rs_readers_with_freshness_tolerance, "
+ "find a rowset which should be visible but not warmed up,
tablet_id={}, "
+ "path_max_version={}, rowset_id={}, version={},
visible_time={}, "
+ "freshness_limit={}, version_graph={},
rowset_warmup_digest={}",
+ tablet_id(), path_max_version,
rs_meta->rowset_id().to_string(),
+ rs_meta->version().to_string(), oss1.str(), oss2.str(),
+ _timestamped_version_tracker.debug_string(),
rowset_warmup_digest());
+ }
+ return ret;
+}
+
+void CloudTablet::_submit_segment_download_task(const RowsetSharedPtr& rs, int
seg_id,
+ const RowsetMetaSharedPtr&
rowset_meta,
+ int64_t expiration_time) {
+ auto self = std::dynamic_pointer_cast<CloudTablet>(shared_from_this());
+ auto storage_resource = rowset_meta->remote_storage_resource();
+ if (!storage_resource) {
+ LOG(WARNING) << storage_resource.error();
+ return;
+ }
+
+ // clang-format off
+
_engine.file_cache_block_downloader().submit_download_task(io::DownloadFileMeta
{
+ .path =
storage_resource.value()->remote_segment_path(*rowset_meta, seg_id),
+ .file_size = rs->rowset_meta()->segment_file_size(seg_id),
+ .file_system = storage_resource.value()->fs,
+ .ctx = {
+ .expiration_time = expiration_time,
+ .is_dryrun =
config::enable_reader_dryrun_when_download_file_cache,
+ .is_warmup = true
+ },
+ .download_done {[=](Status st) {
+
DBUG_EXECUTE_IF("CloudTablet::add_rowsets.download_data.callback.block_compaction_rowset",
{
+ if (rs->version().second > rs->version().first) {
+ auto sleep_time = dp->param<int>("sleep", 3);
+ LOG_INFO(
+ "[verbose] block download for
rowset={}, "
+ "version={}, sleep={}",
+ rs->rowset_id().to_string(),
+ rs->version().to_string(), sleep_time);
+ std::this_thread::sleep_for(
+ std::chrono::seconds(sleep_time));
+ }
+ });
+
self->complete_rowset_segment_warmup(WarmUpTriggerSource::SYNC_ROWSET,
rowset_meta->rowset_id(), st, 1, 0);
+ if (!st) {
+ LOG_WARNING("add rowset warm up error ").error(st);
+ }
+ }},
+ });
+ // clang-format on
+}
+
+void CloudTablet::_submit_inverted_index_download_task(const RowsetSharedPtr&
rs,
+ const
RowsetMetaSharedPtr& rowset_meta,
+ const io::Path&
idx_path, int64_t idx_size,
+ int64_t
expiration_time) {
+ auto self = std::dynamic_pointer_cast<CloudTablet>(shared_from_this());
+ auto storage_resource = rowset_meta->remote_storage_resource();
+ if (!storage_resource) {
+ LOG(WARNING) << storage_resource.error();
+ return;
+ }
+
+ io::DownloadFileMeta meta {
+ .path = idx_path,
+ .file_size = idx_size,
+ .file_system = storage_resource.value()->fs,
+ .ctx = {.expiration_time = expiration_time,
+ .is_dryrun =
config::enable_reader_dryrun_when_download_file_cache,
+ .is_warmup = true},
+ .download_done {[=](Status st) {
+
DBUG_EXECUTE_IF("CloudTablet::add_rowsets.download_idx.callback.block", {
+ // clang-format on
+ auto sleep_time = dp->param<int>("sleep", 3);
+ LOG_INFO(
+ "[verbose] block download for "
+ "rowset={}, inverted_idx_file={}, "
+ "sleep={}",
+ rs->rowset_id().to_string(), idx_path.string(),
sleep_time);
+
std::this_thread::sleep_for(std::chrono::seconds(sleep_time));
+ // clang-format off
Review Comment:
wrong of here
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]