Skip to content

Commit bab73a9

Browse files
obdevob-robot
obdev
authored andcommitted
[OBCDC] Fix a potential deadlock issue in LOB handling scenarios
1 parent 220df7f commit bab73a9

File tree

3 files changed

+10
-5
lines changed

3 files changed

+10
-5
lines changed

src/logservice/libobcdc/src/ob_cdc_lob_data_merger.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ class IObCDCLobDataMerger
3737
virtual void mark_stop_flag() = 0;
3838

3939
virtual int push(ObLobDataOutRowCtxList &task, volatile bool &stop_flag) = 0;
40-
virtual void get_task_count(int64_t &log_entry_task_count) const = 0;
40+
virtual void get_task_count(int64_t &lob_data_list_task_count) const = 0;
4141
virtual void print_stat_info() = 0;
4242
};
4343

src/logservice/libobcdc/src/ob_log_config.h

+2-1
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,8 @@ class ObLogConfig : public common::ObBaseConfig
103103
DEF_INT(sequencer_thread_num, OB_CLUSTER_PARAMETER, "5", "[1,]", "sequencer thread number");
104104
DEF_INT(sequencer_queue_length, OB_CLUSTER_PARAMETER, "0", "[0,]", "sequencer queue length");
105105
DEF_INT(formatter_thread_num, OB_CLUSTER_PARAMETER, "10", "[1,]", "formatter thread number");
106-
DEF_INT(lob_data_merger_thread_num, OB_CLUSTER_PARAMETER, "2", "[1,]", "lob data merger thread number");
106+
DEF_INT(lob_data_merger_thread_num, OB_CLUSTER_PARAMETER, "5", "[1,]", "lob data merger thread number");
107+
DEF_INT(lob_data_merger_queue_length, OB_CLUSTER_PARAMETER, "1000000", "[0,]", "lob data merger queue length");
107108
DEF_CAP(batch_buf_size, OB_CLUSTER_PARAMETER, "20MB", "[2MB,]", "batch buf size");
108109
DEF_INT(batch_buf_count, OB_CLUSTER_PARAMETER, "10", "[5,]", "batch buf count");
109110
DEF_INT(storager_thread_num, OB_CLUSTER_PARAMETER, "10", "[1,]", "storager thread number");

src/logservice/libobcdc/src/ob_log_instance.cpp

+7-3
Original file line numberDiff line numberDiff line change
@@ -940,7 +940,7 @@ int ObLogInstance::init_components_(const uint64_t start_tstamp_ns)
940940
enable_output_hidden_primary_key);
941941

942942
INIT(lob_data_merger_, ObCDCLobDataMerger, TCONF.lob_data_merger_thread_num,
943-
CDC_CFG_MGR.get_lob_data_merger_queue_length(), *err_handler);
943+
TCONF.lob_data_merger_queue_length, *err_handler);
944944

945945
if (OB_SUCC(ret)) {
946946
if (OB_FAIL(lob_aux_meta_storager_.init(store_service_))) {
@@ -2769,7 +2769,7 @@ int ObLogInstance::get_task_count_(
27692769
part_trans_task_resuable_count = 0;
27702770

27712771
if (OB_ISNULL(fetcher_) || OB_ISNULL(dml_parser_) || OB_ISNULL(formatter_)
2772-
|| OB_ISNULL(storager_)
2772+
|| OB_ISNULL(storager_) || OB_ISNULL(lob_data_merger_)
27732773
|| OB_ISNULL(sequencer_) || OB_ISNULL(reader_) || OB_ISNULL(committer_)
27742774
|| OB_ISNULL(sys_ls_handler_) || OB_ISNULL(resource_collector_)) {
27752775
ret = OB_ERR_UNEXPECTED;
@@ -2812,6 +2812,8 @@ int ObLogInstance::get_task_count_(
28122812
// (3) Tasks held by users that have not been returned
28132813
// (4) tasks held by resource_collector
28142814
if (OB_SUCC(ret)) {
2815+
int64_t lob_data_list_task_count = 0;
2816+
lob_data_merger_->get_task_count(lob_data_list_task_count);
28152817
int64_t committer_ddl_part_trans_task_count = 0;
28162818
int64_t committer_dml_part_trans_task_count = 0;
28172819

@@ -2849,7 +2851,9 @@ int ObLogInstance::get_task_count_(
28492851
seq_stat_info.ready_trans_count_, seq_stat_info.sequenced_trans_count_);
28502852
_LOG_INFO("[TASK_COUNT_STAT] [READER] [ROW_TASK=%ld]", reader_task_count);
28512853
_LOG_INFO("[TASK_COUNT_STAT] [DML_PARSER] [LOG_TASK=%ld]", dml_parser_log_count);
2852-
_LOG_INFO("[TASK_COUNT_STAT] [FORMATTER] [BR=%ld LOG_TASK=%ld LOB_STMT=%ld]", formatter_br_count, formatter_log_count, stmt_in_lob_merger_count);
2854+
_LOG_INFO("[TASK_COUNT_STAT] [FORMATTER] [BR=%ld LOG_TASK=%ld LOB_STMT=%ld]",
2855+
formatter_br_count, formatter_log_count, stmt_in_lob_merger_count);
2856+
_LOG_INFO("[TASK_COUNT_STAT] [LOB_MERGER] [LOB_LIST_TASK=%ld]", lob_data_list_task_count);
28532857
_LOG_INFO("[TASK_COUNT_STAT] [SORTER] [TRANS=%ld]", sorter_task_count);
28542858
_LOG_INFO("[TASK_COUNT_STAT] [COMMITER] [DML_TRANS=%ld DDL_PART_TRANS_TASK=%ld DML_PART_TRANS_TASK=%ld]",
28552859
committer_pending_dml_trans_count,

0 commit comments

Comments
 (0)