diff --git a/src/rootserver/ob_disaster_recovery_worker.cpp b/src/rootserver/ob_disaster_recovery_worker.cpp index df03fde97..d589fd218 100755 --- a/src/rootserver/ob_disaster_recovery_worker.cpp +++ b/src/rootserver/ob_disaster_recovery_worker.cpp @@ -2039,7 +2039,17 @@ int ObDRWorker::check_ls_locality_match_( } else if (0 != locality_alignment.get_task_array_cnt()) { locality_is_matched = false; } else { - locality_is_matched = true; + // for dup-ls, add C/R replica task is not in task_array, also need to try getting next LA task + const LATask *task = nullptr; + if (OB_TMP_FAIL(locality_alignment.get_next_locality_alignment_task(task))) { + if (OB_ITER_END == tmp_ret) { + locality_is_matched = true; + } else { + LOG_WARN("fail to get next locality alignment task", KR(tmp_ret)); + } + } else { + locality_is_matched = false; + } } ObTaskController::get().allow_next_syslog(); LOG_INFO("the locality matched check for this logstream", KR(ret), K(locality_is_matched), diff --git a/src/rootserver/ob_disaster_recovery_worker.h b/src/rootserver/ob_disaster_recovery_worker.h index 97e73ee00..07c4c6726 100755 --- a/src/rootserver/ob_disaster_recovery_worker.h +++ b/src/rootserver/ob_disaster_recovery_worker.h @@ -610,6 +610,8 @@ private: bool is_readonly_all_server() { return is_readonly_all_server_; } bool is_columnstore_all_server() { return is_columnstore_all_server_; } int64_t get_readonly_memstore_percent() { return readonly_memstore_percent_; } + INHERIT_TO_STRING_KV("replica_desc_array", common::ObIArray, + K_(is_readonly_all_server), K_(is_columnstore_all_server), K_(readonly_memstore_percent)); private: bool is_readonly_all_server_; bool is_columnstore_all_server_;