@@ -455,80 +455,88 @@ void CloudInternalServiceImpl::warm_up_rowset(google::protobuf::RpcController* c
455455 }
456456
457457 for (int64_t segment_id = 0 ; segment_id < rs_meta.num_segments (); segment_id++) {
458- auto segment_size = rs_meta.segment_file_size (segment_id);
459- auto download_done = [=, version = rs_meta.version ()](Status st) {
460- DBUG_EXECUTE_IF (" CloudInternalServiceImpl::warm_up_rowset.download_segment" , {
461- auto sleep_time = dp->param <int >(" sleep" , 3 );
462- LOG_INFO (" [verbose] block download for rowset={}, version={}, sleep={}" ,
463- rowset_id.to_string (), version.to_string (), sleep_time);
464- std::this_thread::sleep_for (std::chrono::seconds (sleep_time));
465- });
466- DBUG_EXECUTE_IF (
467- " CloudInternalServiceImpl::warm_up_rowset.download_segment.inject_error" , {
468- st = Status::InternalError (" injected error" );
469- LOG_INFO (" [verbose] inject error, tablet={}, rowset={}, st={}" ,
470- tablet_id, rowset_id.to_string (), st.to_string ());
471- });
472- if (st.ok ()) {
473- g_file_cache_event_driven_warm_up_finished_segment_num << 1 ;
474- g_file_cache_event_driven_warm_up_finished_segment_size << segment_size;
475- int64_t now_ts = std::chrono::duration_cast<std::chrono::microseconds>(
476- std::chrono::system_clock::now ().time_since_epoch ())
477- .count ();
478- g_file_cache_warm_up_rowset_last_finish_unix_ts.set_value (now_ts);
479- g_file_cache_warm_up_rowset_latency << (now_ts - request_ts);
480- g_file_cache_warm_up_rowset_handle_to_finish_latency << (now_ts - handle_ts);
481- if (request_ts > 0 &&
482- now_ts - request_ts > config::warm_up_rowset_slow_log_ms * 1000 ) {
483- g_file_cache_warm_up_rowset_slow_count << 1 ;
484- LOG (INFO) << " warm up rowset took " << now_ts - request_ts
485- << " us, tablet_id: " << tablet_id
486- << " , rowset_id: " << rowset_id.to_string ()
487- << " , segment_id: " << segment_id;
458+ if (!config::enable_only_warm_up_idx) {
459+ auto segment_size = rs_meta.segment_file_size (segment_id);
460+ auto download_done = [=, version = rs_meta.version ()](Status st) {
461+ DBUG_EXECUTE_IF (" CloudInternalServiceImpl::warm_up_rowset.download_segment" , {
462+ auto sleep_time = dp->param <int >(" sleep" , 3 );
463+ LOG_INFO (" [verbose] block download for rowset={}, version={}, sleep={}" ,
464+ rowset_id.to_string (), version.to_string (), sleep_time);
465+ std::this_thread::sleep_for (std::chrono::seconds (sleep_time));
466+ });
467+ DBUG_EXECUTE_IF (
468+ " CloudInternalServiceImpl::warm_up_rowset.download_segment.inject_"
469+ " error" ,
470+ {
471+ st = Status::InternalError (" injected error" );
472+ LOG_INFO (" [verbose] inject error, tablet={}, rowset={}, st={}" ,
473+ tablet_id, rowset_id.to_string (), st.to_string ());
474+ });
475+ if (st.ok ()) {
476+ g_file_cache_event_driven_warm_up_finished_segment_num << 1 ;
477+ g_file_cache_event_driven_warm_up_finished_segment_size << segment_size;
478+ int64_t now_ts =
479+ std::chrono::duration_cast<std::chrono::microseconds>(
480+ std::chrono::system_clock::now ().time_since_epoch ())
481+ .count ();
482+ g_file_cache_warm_up_rowset_last_finish_unix_ts.set_value (now_ts);
483+ g_file_cache_warm_up_rowset_latency << (now_ts - request_ts);
484+ g_file_cache_warm_up_rowset_handle_to_finish_latency
485+ << (now_ts - handle_ts);
486+ if (request_ts > 0 &&
487+ now_ts - request_ts > config::warm_up_rowset_slow_log_ms * 1000 ) {
488+ g_file_cache_warm_up_rowset_slow_count << 1 ;
489+ LOG (INFO) << " warm up rowset took " << now_ts - request_ts
490+ << " us, tablet_id: " << tablet_id
491+ << " , rowset_id: " << rowset_id.to_string ()
492+ << " , segment_id: " << segment_id;
493+ }
494+ if (now_ts - handle_ts > config::warm_up_rowset_slow_log_ms * 1000 ) {
495+ g_file_cache_warm_up_rowset_handle_to_finish_slow_count << 1 ;
496+ LOG (INFO) << " warm up rowset (handle to finish) took "
497+ << now_ts - handle_ts << " us, tablet_id: " << tablet_id
498+ << " , rowset_id: " << rowset_id.to_string ()
499+ << " , segment_id: " << segment_id;
500+ }
501+ } else {
502+ g_file_cache_event_driven_warm_up_failed_segment_num << 1 ;
503+ g_file_cache_event_driven_warm_up_failed_segment_size << segment_size;
504+ LOG (WARNING)
505+ << " download segment failed, tablet_id: " << tablet_id
506+ << " rowset_id: " << rowset_id.to_string () << " , error: " << st;
488507 }
489- if (now_ts - handle_ts > config::warm_up_rowset_slow_log_ms * 1000 ) {
490- g_file_cache_warm_up_rowset_handle_to_finish_slow_count << 1 ;
491- LOG (INFO) << " warm up rowset (handle to finish) took " << now_ts - handle_ts
492- << " us, tablet_id: " << tablet_id
493- << " , rowset_id: " << rowset_id.to_string ()
494- << " , segment_id: " << segment_id;
508+ if (tablet->complete_rowset_segment_warmup (WarmUpTriggerSource::EVENT_DRIVEN,
509+ rowset_id, st, 1 , 0 )
510+ .trigger_source == WarmUpTriggerSource::EVENT_DRIVEN) {
511+ VLOG_DEBUG << " warmup rowset " << version.to_string () << " ("
512+ << rowset_id.to_string () << " ) completed" ;
495513 }
496- } else {
497- g_file_cache_event_driven_warm_up_failed_segment_num << 1 ;
498- g_file_cache_event_driven_warm_up_failed_segment_size << segment_size;
499- LOG (WARNING) << " download segment failed, tablet_id: " << tablet_id
500- << " rowset_id: " << rowset_id.to_string () << " , error: " << st;
501- }
502- if (tablet->complete_rowset_segment_warmup (WarmUpTriggerSource::EVENT_DRIVEN,
503- rowset_id, st, 1 , 0 )
504- .trigger_source == WarmUpTriggerSource::EVENT_DRIVEN) {
505- VLOG_DEBUG << " warmup rowset " << version.to_string () << " ("
506- << rowset_id.to_string () << " ) completed" ;
507- }
514+ if (wait) {
515+ wait->signal ();
516+ }
517+ };
518+
519+ io::DownloadFileMeta download_meta {
520+ .path = storage_resource.value ()->remote_segment_path (rs_meta, segment_id),
521+ .file_size = segment_size,
522+ .offset = 0 ,
523+ .download_size = segment_size,
524+ .file_system = storage_resource.value ()->fs ,
525+ .ctx = {.is_index_data = false ,
526+ .expiration_time = expiration_time,
527+ .is_dryrun = config::enable_reader_dryrun_when_download_file_cache,
528+ .is_warmup = true },
529+ .download_done = std::move (download_done),
530+ };
531+
532+ g_file_cache_event_driven_warm_up_submitted_segment_num << 1 ;
533+ g_file_cache_event_driven_warm_up_submitted_segment_size << segment_size;
508534 if (wait) {
509- wait->signal ();
535+ wait->add_count ();
510536 }
511- };
512537
513- io::DownloadFileMeta download_meta {
514- .path = storage_resource.value ()->remote_segment_path (rs_meta, segment_id),
515- .file_size = segment_size,
516- .offset = 0 ,
517- .download_size = segment_size,
518- .file_system = storage_resource.value ()->fs ,
519- .ctx = {.is_index_data = false ,
520- .expiration_time = expiration_time,
521- .is_dryrun = config::enable_reader_dryrun_when_download_file_cache,
522- .is_warmup = true },
523- .download_done = std::move (download_done),
524- };
525- g_file_cache_event_driven_warm_up_submitted_segment_num << 1 ;
526- g_file_cache_event_driven_warm_up_submitted_segment_size << segment_size;
527- if (wait) {
528- wait->add_count ();
538+ _engine.file_cache_block_downloader ().submit_download_task (download_meta);
529539 }
530- _engine.file_cache_block_downloader ().submit_download_task (download_meta);
531-
532540 auto download_inverted_index = [&, tablet](std::string index_path, uint64_t idx_size) {
533541 auto storage_resource = rs_meta.remote_storage_resource ();
534542 auto download_done = [=, version = rs_meta.version ()](Status st) {
0 commit comments