[FIX]fix tenant_config deadlock
This commit is contained in:
@ -638,12 +638,14 @@ int ObPartitionMergePolicy::check_need_mini_minor_merge(
|
|||||||
const ObTabletTableStore &table_store = tablet.get_table_store();
|
const ObTabletTableStore &table_store = tablet.get_table_store();
|
||||||
const ObTabletID &tablet_id = tablet.get_tablet_meta().tablet_id_;
|
const ObTabletID &tablet_id = tablet.get_tablet_meta().tablet_id_;
|
||||||
int64_t delay_merge_schedule_interval = 0;
|
int64_t delay_merge_schedule_interval = 0;
|
||||||
omt::ObTenantConfigGuard tenant_config(TENANT_CONF(MTL_ID()));
|
|
||||||
ObTablesHandleArray minor_tables;
|
ObTablesHandleArray minor_tables;
|
||||||
|
{
|
||||||
|
omt::ObTenantConfigGuard tenant_config(TENANT_CONF(MTL_ID()));
|
||||||
if (tenant_config.is_valid()) {
|
if (tenant_config.is_valid()) {
|
||||||
mini_minor_threshold = tenant_config->minor_compact_trigger;
|
mini_minor_threshold = tenant_config->minor_compact_trigger;
|
||||||
delay_merge_schedule_interval = tenant_config->_minor_compaction_interval;
|
delay_merge_schedule_interval = tenant_config->_minor_compaction_interval;
|
||||||
}
|
}
|
||||||
|
} // end of ObTenantConfigGuard
|
||||||
if (table_store.get_minor_sstables().count_ <= mini_minor_threshold) {
|
if (table_store.get_minor_sstables().count_ <= mini_minor_threshold) {
|
||||||
// total number of mini sstable is less than threshold + 1
|
// total number of mini sstable is less than threshold + 1
|
||||||
} else if (tablet.is_ls_tx_data_tablet()) {
|
} else if (tablet.is_ls_tx_data_tablet()) {
|
||||||
@ -1074,6 +1076,7 @@ int ObPartitionMergePolicy::refine_mini_minor_merge_result(ObGetMergeTablesResul
|
|||||||
if (OB_SUCC(ret)) {
|
if (OB_SUCC(ret)) {
|
||||||
int64_t minor_compact_trigger = DEFAULT_MINOR_COMPACT_TRIGGER;
|
int64_t minor_compact_trigger = DEFAULT_MINOR_COMPACT_TRIGGER;
|
||||||
int64_t size_amplification_factor = OB_DEFAULT_COMPACTION_AMPLIFICATION_FACTOR;
|
int64_t size_amplification_factor = OB_DEFAULT_COMPACTION_AMPLIFICATION_FACTOR;
|
||||||
|
{
|
||||||
omt::ObTenantConfigGuard tenant_config(TENANT_CONF(MTL_ID()));
|
omt::ObTenantConfigGuard tenant_config(TENANT_CONF(MTL_ID()));
|
||||||
if (tenant_config.is_valid()) {
|
if (tenant_config.is_valid()) {
|
||||||
minor_compact_trigger = tenant_config->minor_compact_trigger;
|
minor_compact_trigger = tenant_config->minor_compact_trigger;
|
||||||
@ -1081,6 +1084,7 @@ int ObPartitionMergePolicy::refine_mini_minor_merge_result(ObGetMergeTablesResul
|
|||||||
size_amplification_factor = tenant_config->_minor_compaction_amplification_factor;
|
size_amplification_factor = tenant_config->_minor_compaction_amplification_factor;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} // end of ObTenantConfigGuard
|
||||||
if (1 == result.handle_.get_count()) {
|
if (1 == result.handle_.get_count()) {
|
||||||
LOG_INFO("minor refine, only one sstable, no need to do mini minor merge", K(result));
|
LOG_INFO("minor refine, only one sstable, no need to do mini minor merge", K(result));
|
||||||
result.handle_.reset();
|
result.handle_.reset();
|
||||||
|
|||||||
@ -77,10 +77,12 @@ int ObParallelMergeCtx::init(compaction::ObTabletMergeCtx &merge_ctx)
|
|||||||
} else {
|
} else {
|
||||||
int64_t tablet_size = merge_ctx.get_merge_schema()->get_tablet_size();
|
int64_t tablet_size = merge_ctx.get_merge_schema()->get_tablet_size();
|
||||||
bool enable_parallel_minor_merge = false;
|
bool enable_parallel_minor_merge = false;
|
||||||
|
{
|
||||||
omt::ObTenantConfigGuard tenant_config(TENANT_CONF(MTL_ID()));
|
omt::ObTenantConfigGuard tenant_config(TENANT_CONF(MTL_ID()));
|
||||||
if (tenant_config.is_valid()) {
|
if (tenant_config.is_valid()) {
|
||||||
enable_parallel_minor_merge = tenant_config->_enable_parallel_minor_merge;
|
enable_parallel_minor_merge = tenant_config->_enable_parallel_minor_merge;
|
||||||
}
|
}
|
||||||
|
} // end of ObTenantConfigGuard
|
||||||
if (enable_parallel_minor_merge && tablet_size > 0 && merge_ctx.param_.is_mini_merge()) {
|
if (enable_parallel_minor_merge && tablet_size > 0 && merge_ctx.param_.is_mini_merge()) {
|
||||||
if (OB_FAIL(init_parallel_mini_merge(merge_ctx))) {
|
if (OB_FAIL(init_parallel_mini_merge(merge_ctx))) {
|
||||||
STORAGE_LOG(WARN, "Failed to init parallel setting for mini merge", K(ret));
|
STORAGE_LOG(WARN, "Failed to init parallel setting for mini merge", K(ret));
|
||||||
|
|||||||
@ -178,11 +178,13 @@ int ObTenantTabletScheduler::init()
|
|||||||
{
|
{
|
||||||
int ret = OB_SUCCESS;
|
int ret = OB_SUCCESS;
|
||||||
int64_t schedule_interval = DEFAULT_COMPACTION_SCHEDULE_INTERVAL;
|
int64_t schedule_interval = DEFAULT_COMPACTION_SCHEDULE_INTERVAL;
|
||||||
|
{
|
||||||
omt::ObTenantConfigGuard tenant_config(TENANT_CONF(MTL_ID()));
|
omt::ObTenantConfigGuard tenant_config(TENANT_CONF(MTL_ID()));
|
||||||
if (tenant_config.is_valid()) {
|
if (tenant_config.is_valid()) {
|
||||||
schedule_interval = tenant_config->ob_compaction_schedule_interval;
|
schedule_interval = tenant_config->ob_compaction_schedule_interval;
|
||||||
fast_freeze_checker_.reload_config(tenant_config->_ob_enable_fast_freeze);
|
fast_freeze_checker_.reload_config(tenant_config->_ob_enable_fast_freeze);
|
||||||
}
|
}
|
||||||
|
} // end of ObTenantConfigGuard
|
||||||
if (IS_INIT) {
|
if (IS_INIT) {
|
||||||
ret = OB_INIT_TWICE;
|
ret = OB_INIT_TWICE;
|
||||||
LOG_WARN("ObTenantTabletScheduler has inited", K(ret));
|
LOG_WARN("ObTenantTabletScheduler has inited", K(ret));
|
||||||
@ -232,11 +234,13 @@ int ObTenantTabletScheduler::reload_tenant_config()
|
|||||||
{
|
{
|
||||||
int ret = OB_SUCCESS;
|
int ret = OB_SUCCESS;
|
||||||
int64_t merge_schedule_interval = DEFAULT_COMPACTION_SCHEDULE_INTERVAL;
|
int64_t merge_schedule_interval = DEFAULT_COMPACTION_SCHEDULE_INTERVAL;
|
||||||
|
{
|
||||||
omt::ObTenantConfigGuard tenant_config(TENANT_CONF(MTL_ID()));
|
omt::ObTenantConfigGuard tenant_config(TENANT_CONF(MTL_ID()));
|
||||||
if (tenant_config.is_valid()) {
|
if (tenant_config.is_valid()) {
|
||||||
merge_schedule_interval = tenant_config->ob_compaction_schedule_interval;
|
merge_schedule_interval = tenant_config->ob_compaction_schedule_interval;
|
||||||
fast_freeze_checker_.reload_config(tenant_config->_ob_enable_fast_freeze);
|
fast_freeze_checker_.reload_config(tenant_config->_ob_enable_fast_freeze);
|
||||||
}
|
}
|
||||||
|
} // end of ObTenantConfigGuard
|
||||||
if (IS_NOT_INIT) {
|
if (IS_NOT_INIT) {
|
||||||
ret = OB_NOT_INIT;
|
ret = OB_NOT_INIT;
|
||||||
LOG_WARN("The ObTenantTabletScheduler has not been inited", K(ret));
|
LOG_WARN("The ObTenantTabletScheduler has not been inited", K(ret));
|
||||||
|
|||||||
Reference in New Issue
Block a user