Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions be/src/cloud/cloud_storage_engine.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -249,10 +249,10 @@ bool CloudStorageEngine::stopped() {
}

Result<BaseTabletSPtr> CloudStorageEngine::get_tablet(int64_t tablet_id,
SyncRowsetStats* sync_stats) {
return _tablet_mgr->get_tablet(tablet_id, false, true, sync_stats).transform([](auto&& t) {
return static_pointer_cast<BaseTablet>(std::move(t));
});
SyncRowsetStats* sync_stats,
bool force_use_cache) {
return _tablet_mgr->get_tablet(tablet_id, false, true, sync_stats, force_use_cache)
.transform([](auto&& t) { return static_pointer_cast<BaseTablet>(std::move(t)); });
}

Status CloudStorageEngine::start_bg_threads(std::shared_ptr<WorkloadGroup> wg_sptr) {
Expand Down
4 changes: 2 additions & 2 deletions be/src/cloud/cloud_storage_engine.h
Original file line number Diff line number Diff line change
Expand Up @@ -58,8 +58,8 @@ class CloudStorageEngine final : public BaseStorageEngine {
void stop() override;
bool stopped() override;

Result<BaseTabletSPtr> get_tablet(int64_t tablet_id,
SyncRowsetStats* sync_stats = nullptr) override;
Result<BaseTabletSPtr> get_tablet(int64_t tablet_id, SyncRowsetStats* sync_stats = nullptr,
bool force_use_cache = false) override;

Status start_bg_threads(std::shared_ptr<WorkloadGroup> wg_sptr = nullptr) override;

Expand Down
9 changes: 8 additions & 1 deletion be/src/cloud/cloud_tablet_mgr.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -153,7 +153,8 @@ void set_tablet_access_time_ms(CloudTablet* tablet) {

Result<std::shared_ptr<CloudTablet>> CloudTabletMgr::get_tablet(int64_t tablet_id, bool warmup_data,
bool sync_delete_bitmap,
SyncRowsetStats* sync_stats) {
SyncRowsetStats* sync_stats,
bool force_use_cache) {
// LRU value type. `Value`'s lifetime MUST NOT be longer than `CloudTabletMgr`
class Value : public LRUCacheValueBase {
public:
Expand All @@ -170,6 +171,12 @@ Result<std::shared_ptr<CloudTablet>> CloudTabletMgr::get_tablet(int64_t tablet_i
auto tablet_id_str = std::to_string(tablet_id);
CacheKey key(tablet_id_str);
auto* handle = _cache->lookup(key);

if (handle == nullptr && force_use_cache) {
return ResultError(
Status::InternalError("failed to get cloud tablet from cache {}", tablet_id));
}

if (handle == nullptr) {
if (sync_stats) {
++sync_stats->tablet_meta_cache_miss;
Expand Down
3 changes: 2 additions & 1 deletion be/src/cloud/cloud_tablet_mgr.h
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,8 @@ class CloudTabletMgr {
// sync rowsets after, and download segment data in background if `warmup_data` is true.
Result<std::shared_ptr<CloudTablet>> get_tablet(int64_t tablet_id, bool warmup_data = false,
bool sync_delete_bitmap = true,
SyncRowsetStats* sync_stats = nullptr);
SyncRowsetStats* sync_stats = nullptr,
bool force_use_cache = false);

void erase_tablet(int64_t tablet_id);

Expand Down
2 changes: 1 addition & 1 deletion be/src/exec/rowid_fetcher.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -369,7 +369,7 @@ Status RowIdStorageReader::read_by_rowids(const PMultiGetRequest& request,
watch.start();
BaseTabletSPtr tablet = scope_timer_run(
[&]() {
auto res = ExecEnv::get_tablet(row_loc.tablet_id());
auto res = ExecEnv::get_tablet(row_loc.tablet_id(), nullptr, true);
return !res.has_value() ? nullptr
: std::dynamic_pointer_cast<BaseTablet>(res.value());
},
Expand Down
3 changes: 2 additions & 1 deletion be/src/olap/storage_engine.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1267,7 +1267,8 @@ Status StorageEngine::create_tablet(const TCreateTabletReq& request, RuntimeProf
return _tablet_manager->create_tablet(request, stores, profile);
}

Result<BaseTabletSPtr> StorageEngine::get_tablet(int64_t tablet_id, SyncRowsetStats* sync_stats) {
Result<BaseTabletSPtr> StorageEngine::get_tablet(int64_t tablet_id, SyncRowsetStats* sync_stats,
bool force_use_cache) {
BaseTabletSPtr tablet;
std::string err;
tablet = _tablet_manager->get_tablet(tablet_id, true, &err);
Expand Down
7 changes: 4 additions & 3 deletions be/src/olap/storage_engine.h
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,8 @@ class BaseStorageEngine {
virtual Status start_bg_threads(std::shared_ptr<WorkloadGroup> wg_sptr = nullptr) = 0;

virtual Result<BaseTabletSPtr> get_tablet(int64_t tablet_id,
SyncRowsetStats* sync_stats = nullptr) = 0;
SyncRowsetStats* sync_stats = nullptr,
bool force_use_cache = false) = 0;

void register_report_listener(ReportWorker* listener);
void deregister_report_listener(ReportWorker* listener);
Expand Down Expand Up @@ -227,8 +228,8 @@ class StorageEngine final : public BaseStorageEngine {

Status create_tablet(const TCreateTabletReq& request, RuntimeProfile* profile);

Result<BaseTabletSPtr> get_tablet(int64_t tablet_id,
SyncRowsetStats* sync_stats = nullptr) override;
Result<BaseTabletSPtr> get_tablet(int64_t tablet_id, SyncRowsetStats* sync_stats = nullptr,
bool force_use_cache = false) override;

void clear_transaction_task(const TTransactionId transaction_id);
void clear_transaction_task(const TTransactionId transaction_id,
Expand Down
3 changes: 2 additions & 1 deletion be/src/runtime/exec_env.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,8 @@ void ExecEnv::set_write_cooldown_meta_executors() {
}
#endif // BE_TEST

Result<BaseTabletSPtr> ExecEnv::get_tablet(int64_t tablet_id, SyncRowsetStats* sync_stats) {
Result<BaseTabletSPtr> ExecEnv::get_tablet(int64_t tablet_id, SyncRowsetStats* sync_stats,
bool force_use_cache) {
auto storage_engine = GetInstance()->_storage_engine.get();
return storage_engine != nullptr
? storage_engine->get_tablet(tablet_id, sync_stats)
Expand Down
3 changes: 2 additions & 1 deletion be/src/runtime/exec_env.h
Original file line number Diff line number Diff line change
Expand Up @@ -154,7 +154,8 @@ class ExecEnv {

// Requires ExenEnv ready
static Result<BaseTabletSPtr> get_tablet(int64_t tablet_id,
SyncRowsetStats* sync_stats = nullptr);
SyncRowsetStats* sync_stats = nullptr,
bool force_use_cache = false);

static bool ready() { return _s_ready.load(std::memory_order_acquire); }
static bool tracking_memory() { return _s_tracking_memory.load(std::memory_order_acquire); }
Expand Down
Loading