fix core
diff --git a/be/src/cloud/cloud_tablet.cpp b/be/src/cloud/cloud_tablet.cpp
index e515c04..cfb3159 100644
--- a/be/src/cloud/cloud_tablet.cpp
+++ b/be/src/cloud/cloud_tablet.cpp
@@ -349,6 +349,8 @@
g_file_cache_cloud_tablet_submitted_segment_size
<< rowset->rowset_meta()->segment_file_size(seg_id);
}
+ auto self = std::dynamic_pointer_cast<CloudTablet>(shared_from_this());
+ // 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 = rowset->rowset_meta()->segment_file_size(seg_id),
@@ -358,8 +360,8 @@
.expiration_time = expiration_time,
.is_dryrun = config::enable_reader_dryrun_when_download_file_cache,
},
- .download_done {[this, rowset, delay_add_rowset](Status st) {
- warm_up_done_cb(rowset, st, delay_add_rowset);
+ .download_done {[self, rowset, delay_add_rowset](Status st) {
+ self->warm_up_done_cb(rowset, st, delay_add_rowset);
if (!st) {
LOG_WARNING("add rowset warm up error ").error(st);
}
diff --git a/be/src/olap/base_tablet.h b/be/src/olap/base_tablet.h
index a46b195..0cc0fa1 100644
--- a/be/src/olap/base_tablet.h
+++ b/be/src/olap/base_tablet.h
@@ -56,7 +56,7 @@
enum class CompactionStage { NOT_SCHEDULED, PENDING, EXECUTING };
// Base class for all tablet classes
-class BaseTablet {
+class BaseTablet : public std::enable_shared_from_this<BaseTablet> {
public:
explicit BaseTablet(TabletMetaSharedPtr tablet_meta);
virtual ~BaseTablet();