提交 d813d37a 编写于 作者: O obdev 提交者: wangzelin.wzl

[CP] [OBCDC] Fix the computational logic of the safety checkpoint

上级 2599b6fb
......@@ -733,16 +733,20 @@ void ObLogCommitter::heartbeat_routine()
}
}
int64_t output_checkpoint = OB_INVALID_TIMESTAMP;
// periodically send a heartbeat binlog record
// checkpoint timestamp is invalid for the first time, here ensure that the heartbeat is sent as soon as the checkpoint timestamp is valid
if (OB_FAIL(ret)) {
} else if (OB_FAIL(calculate_output_checkpoint_(output_checkpoint))) {
LOG_ERROR("calculate_output_checkpoint_ failed", KR(ret), K(output_checkpoint));
} else if (OB_LIKELY(OB_INVALID_TIMESTAMP != output_checkpoint) && REACH_TIME_INTERVAL(g_output_heartbeat_interval)) {
if (OB_FAIL(dispatch_heartbeat_binlog_record_(output_checkpoint))) {
if (OB_IN_STOP_STATE != ret) {
LOG_ERROR("dispatch_heartbeat_binlog_record_ fail", KR(ret), K(output_checkpoint));
if (OB_SUCC(ret)) {
if (REACH_TIME_INTERVAL(g_output_heartbeat_interval)) {
int64_t output_checkpoint = OB_INVALID_TIMESTAMP;
if (OB_FAIL(calculate_output_checkpoint_(output_checkpoint))) {
LOG_ERROR("calculate_output_checkpoint_ failed", KR(ret), K(output_checkpoint));
} else if (OB_INVALID_TIMESTAMP != output_checkpoint) {
if (OB_FAIL(dispatch_heartbeat_binlog_record_(output_checkpoint))) {
if (OB_IN_STOP_STATE != ret) {
LOG_ERROR("dispatch_heartbeat_binlog_record_ fail", KR(ret), K(output_checkpoint));
}
}
}
}
}
......
......@@ -238,9 +238,9 @@ int ObExprToOutfileRow::print_field(char *buf, const int64_t buf_len, int64_t &p
OZ(out_info.enclose_.print_plain_str_literal(buf, buf_len, pos, out_info.print_params_));
}
if (0 == out_info.wchar_escape_) {
OZ(obj.print_plain_str_literal(buf, buf_len, pos, out_info.print_params_));
} else if (obj.is_null()) {
OZ(out_info.escape_.print_plain_str_literal(buf, buf_len, pos, out_info.print_params_));
OZ(obj.print_plain_str_literal(buf, buf_len, pos, out_info.print_params_));
} else if (obj.is_null()) {
OZ(out_info.escape_.print_plain_str_literal(buf, buf_len, pos, out_info.print_params_));
OZ(print_wchar_to_buf(buf, buf_len, pos, 'N', out_info.print_params_.cs_type_));
} else if (obj.is_string_or_lob_locator_type() && obj.get_collation_type() == CS_TYPE_BINARY) {
OZ(obj.print_plain_str_literal(buf, buf_len, pos, out_info.print_params_));
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册