Skip to content

Commit

Permalink
[BugFix] Fix asan stack-use-after-return when update starlet config (#…
Browse files Browse the repository at this point in the history
…51346)

Signed-off-by: wyb <[email protected]>
  • Loading branch information
wyb authored Sep 25, 2024
1 parent 4af7bf6 commit a37e2a8
Show file tree
Hide file tree
Showing 3 changed files with 70 additions and 76 deletions.
99 changes: 23 additions & 76 deletions be/src/http/action/update_config_action.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -253,82 +253,29 @@ Status UpdateConfigAction::update_config(const std::string& name, const std::str
});

#ifdef USE_STAROS
_config_callback.emplace("starlet_cache_thread_num", [&]() {
if (staros::starlet::common::GFlagsUtils::UpdateFlagValue("cachemgr_threadpool_size", value).empty()) {
LOG(WARNING) << "Failed to update cachemgr_threadpool_size";
}
});
_config_callback.emplace("starlet_cache_evict_low_water", [&]() {
if (staros::starlet::common::GFlagsUtils::UpdateFlagValue("cachemgr_evict_low_water", value).empty()) {
LOG(WARNING) << "Failed to update cachemgr_evict_low_water";
}
});
_config_callback.emplace("starlet_cache_evict_percent", [&]() {
if (staros::starlet::common::GFlagsUtils::UpdateFlagValue("cachemgr_evict_percent", value).empty()) {
LOG(WARNING) << "Failed to update cachemgr_evict_percent";
}
});
_config_callback.emplace("starlet_cache_evict_throughput_mb", [&]() {
if (staros::starlet::common::GFlagsUtils::UpdateFlagValue("cachemgr_evict_throughput_mb", value).empty()) {
LOG(WARNING) << "Failed to update cachemgr_evict_throughput_mb";
}
});
_config_callback.emplace("starlet_cache_evict_high_water", [&]() {
if (staros::starlet::common::GFlagsUtils::UpdateFlagValue("cachemgr_evict_high_water", value).empty()) {
LOG(WARNING) << "Failed to update cachemgr_evict_high_water";
}
});
_config_callback.emplace("starlet_fs_stream_buffer_size_bytes", [&]() {
if (staros::starlet::common::GFlagsUtils::UpdateFlagValue("fs_stream_buffer_size_bytes", value).empty()) {
LOG(WARNING) << "Failed to update fs_stream_buffer_size_bytes";
}
});
_config_callback.emplace("starlet_fs_read_prefetch_enable", [&]() {
if (staros::starlet::common::GFlagsUtils::UpdateFlagValue("fs_enable_buffer_prefetch", value).empty()) {
LOG(WARNING) << "Failed to update fs_enable_buffer_prefetch";
}
});
_config_callback.emplace("starlet_fs_read_prefetch_threadpool_size", [&]() {
if (staros::starlet::common::GFlagsUtils::UpdateFlagValue("fs_buffer_prefetch_threadpool_size", value)
.empty()) {
LOG(WARNING) << "Failed to update fs_buffer_prefetch_threadpool_size";
}
});
_config_callback.emplace("starlet_cache_evict_interval", [&]() {
if (staros::starlet::common::GFlagsUtils::UpdateFlagValue("cachemgr_evict_interval", value).empty()) {
LOG(WARNING) << "Failed to update cachemgr_evict_interval";
}
});
_config_callback.emplace("starlet_fslib_s3client_nonread_max_retries", [&]() {
if (staros::starlet::common::GFlagsUtils::UpdateFlagValue("fslib_s3client_nonread_max_retries", value)
.empty()) {
LOG(WARNING) << "Failed to update fslib_s3client_nonread_max_retries";
}
});
_config_callback.emplace("starlet_fslib_s3client_nonread_retry_scale_factor", [&]() {
if (staros::starlet::common::GFlagsUtils::UpdateFlagValue("fslib_s3client_nonread_retry_scale_factor",
value)
.empty()) {
LOG(WARNING) << "Failed to update fslib_s3client_nonread_retry_scale_factor";
}
});
_config_callback.emplace("starlet_fslib_s3client_connect_timeout_ms", [&]() {
if (staros::starlet::common::GFlagsUtils::UpdateFlagValue("fslib_s3client_connect_timeout_ms", value)
.empty()) {
LOG(WARNING) << "Failed to update fslib_s3client_connect_timeout_ms";
}
});
_config_callback.emplace("s3_use_list_objects_v1", [&]() {
if (staros::starlet::common::GFlagsUtils::UpdateFlagValue("fslib_s3client_use_list_objects_v1", value)
.empty()) {
LOG(WARNING) << "Failed to update fslib_s3client_use_list_objects_v1";
}
});
_config_callback.emplace("starlet_delete_files_max_key_in_batch", [&]() {
if (staros::starlet::common::GFlagsUtils::UpdateFlagValue("delete_files_max_key_in_batch", value).empty()) {
LOG(WARNING) << "Failed to update delete_files_max_key_in_batch";
}
});
#define UPDATE_STARLET_CONFIG(BE_CONFIG, STARLET_CONFIG) \
_config_callback.emplace(#BE_CONFIG, [value]() { \
if (staros::starlet::common::GFlagsUtils::UpdateFlagValue(#STARLET_CONFIG, value).empty()) { \
LOG(WARNING) << "Failed to update " << #STARLET_CONFIG; \
} \
});

UPDATE_STARLET_CONFIG(starlet_cache_thread_num, cachemgr_threadpool_size);
UPDATE_STARLET_CONFIG(starlet_cache_evict_low_water, cachemgr_evict_low_water);
UPDATE_STARLET_CONFIG(starlet_cache_evict_high_water, cachemgr_evict_high_water);
UPDATE_STARLET_CONFIG(starlet_cache_evict_percent, cachemgr_evict_percent);
UPDATE_STARLET_CONFIG(starlet_cache_evict_throughput_mb, cachemgr_evict_throughput_mb);
UPDATE_STARLET_CONFIG(starlet_fs_stream_buffer_size_bytes, fs_stream_buffer_size_bytes);
UPDATE_STARLET_CONFIG(starlet_fs_read_prefetch_enable, fs_enable_buffer_prefetch);
UPDATE_STARLET_CONFIG(starlet_fs_read_prefetch_threadpool_size, fs_buffer_prefetch_threadpool_size);
UPDATE_STARLET_CONFIG(starlet_cache_evict_interval, cachemgr_evict_interval);
UPDATE_STARLET_CONFIG(starlet_fslib_s3client_nonread_max_retries, fslib_s3client_nonread_max_retries);
UPDATE_STARLET_CONFIG(starlet_fslib_s3client_nonread_retry_scale_factor,
fslib_s3client_nonread_retry_scale_factor);
UPDATE_STARLET_CONFIG(starlet_fslib_s3client_connect_timeout_ms, fslib_s3client_connect_timeout_ms);
UPDATE_STARLET_CONFIG(s3_use_list_objects_v1, fslib_s3client_use_list_objects_v1);
UPDATE_STARLET_CONFIG(starlet_delete_files_max_key_in_batch, delete_files_max_key_in_batch);
#undef UPDATE_STARLET_CONFIG
#endif // USE_STAROS
});

Expand Down
34 changes: 34 additions & 0 deletions test/sql/test_conf/R/test_update_starlet_config
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
-- name: test_update_starlet_config @cloud

update information_schema.be_configs set value = "32" where name = "starlet_cache_thread_num";
-- result:
-- !result
select distinct value from information_schema.be_configs where name = "starlet_cache_thread_num";
-- result:
32
-- !result
update information_schema.be_configs set value = "16" where name = "starlet_cache_thread_num";
-- result:
-- !result

update information_schema.be_configs set value = "0.2" where name = "starlet_cache_evict_low_water";
-- result:
-- !result
select distinct value from information_schema.be_configs where name = "starlet_cache_evict_low_water";
-- result:
0.2
-- !result
update information_schema.be_configs set value = "0.1" where name = "starlet_cache_evict_low_water";
-- result:
-- !result

update information_schema.be_configs set value = "true" where name = "starlet_fs_read_prefetch_enable";
-- result:
-- !result
select distinct value from information_schema.be_configs where name = "starlet_fs_read_prefetch_enable";
-- result:
true
-- !result
update information_schema.be_configs set value = "false" where name = "starlet_fs_read_prefetch_enable";
-- result:
-- !result
13 changes: 13 additions & 0 deletions test/sql/test_conf/T/test_update_starlet_config
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
-- name: test_update_starlet_config @cloud

update information_schema.be_configs set value = "32" where name = "starlet_cache_thread_num";
select distinct value from information_schema.be_configs where name = "starlet_cache_thread_num";
update information_schema.be_configs set value = "16" where name = "starlet_cache_thread_num";

update information_schema.be_configs set value = "0.2" where name = "starlet_cache_evict_low_water";
select distinct value from information_schema.be_configs where name = "starlet_cache_evict_low_water";
update information_schema.be_configs set value = "0.1" where name = "starlet_cache_evict_low_water";

update information_schema.be_configs set value = "true" where name = "starlet_fs_read_prefetch_enable";
select distinct value from information_schema.be_configs where name = "starlet_fs_read_prefetch_enable";
update information_schema.be_configs set value = "false" where name = "starlet_fs_read_prefetch_enable";

0 comments on commit a37e2a8

Please sign in to comment.