This is an automated email from the ASF dual-hosted git repository.

liaoxin01 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 77cdd9cc9d5 [fix](cloud) Set file cache TTL on cloud schema change 
output (#67454)
77cdd9cc9d5 is described below

commit 77cdd9cc9d5abcaa89dcddc0b3eba6a37b385637
Author: Xin Liao <[email protected]>
AuthorDate: Wed Sep 9 09:57:15 2026 +0800

    [fix](cloud) Set file cache TTL on cloud schema change output (#67454)
    
    Problem Summary:
    
    `CloudSchemaChangeJob::_convert_historical_rowsets()` builds its
    `RowsetWriterContext` with `write_file_cache` but never sets
    `file_cache_ttl_sec`. For a table with `file_cache_ttl_seconds`, the
    schema change output is therefore written into the NORMAL/INDEX file
    cache queues instead of the TTL queue. The other two cloud write paths
    both set it:
    
    - load: `CloudRowsetBuilder::init()` — `context.file_cache_ttl_sec =
    _tablet->ttl_seconds();`
    - compaction: `CloudCompactionMixin::construct_output_rowset_writer()` —
    `ctx.file_cache_ttl_sec = _tablet->ttl_seconds();`
---
 be/src/cloud/cloud_schema_change_job.cpp | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/be/src/cloud/cloud_schema_change_job.cpp 
b/be/src/cloud/cloud_schema_change_job.cpp
index 427da01054d..c53a619d0d6 100644
--- a/be/src/cloud/cloud_schema_change_job.cpp
+++ b/be/src/cloud/cloud_schema_change_job.cpp
@@ -401,6 +401,11 @@ Status 
CloudSchemaChangeJob::_convert_historical_rowsets(const SchemaChangeParam
         context.storage_resource = 
_cloud_storage_engine.get_storage_resource(sc_params.vault_id);
         context.job_id = _job_id;
         context.write_file_cache = sc_params.output_to_file_cache;
+        // Schema change output belongs to the new tablet, so it must carry 
the tablet TTL
+        // like the load and compaction output does. Otherwise it is cached in 
the
+        // NORMAL/INDEX queues here, while every warm-up path downloads it 
into the TTL
+        // queue on the destination cluster.
+        context.file_cache_ttl_sec = _new_tablet->ttl_seconds();
         context.tablet = _new_tablet;
         if (!context.storage_resource) {
             return Status::InternalError("vault id not found, maybe not sync, 
vault id {}",


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to