提交 d9944fd4 编写于 作者: M maosy 提交者: ob-robot

Restrict standby from creating versions greater than the primary.

上级 284612e2
......@@ -557,6 +557,7 @@ int ObRecoveryLSService::process_upgrade_log_(
LOG_WARN("failed to get primary_data_version", KR(ret), K(pos), K(node.get_data_buf().length()));
} else {
LOG_INFO("get primary_data_version", K(primary_data_version));
uint64_t current_data_version = 0;//用户网络备库的版本号校验,防止备租户创建的版本号大于主租户的版本号
if (!primary_data_version.is_valid()) {
ret = OB_ERR_UNEXPECTED;
LOG_WARN("primary_data_version not valid", KR(ret), K(primary_data_version));
......@@ -574,6 +575,19 @@ int ObRecoveryLSService::process_upgrade_log_(
if (OB_TMP_FAIL(init_restore_status(sync_scn, OB_ERR_RESTORE_STANDBY_VERSION_LAG))) {
LOG_WARN("failed to init restore status", KR(tmp_ret), K(sync_scn));
}
} else if (OB_FAIL(get_min_data_version_(current_data_version))) {
LOG_WARN("failed to get min data version", KR(ret));
} else if (0 == current_data_version) {
//standby cluster not set data version now, need retry
ret = OB_EAGAIN;
LOG_WARN("standby data version not valid, need retry", KR(ret), K(current_data_version),
K(primary_data_version));
} else if (primary_data_version.get_data_version() < current_data_version) {
ret = OB_ITER_STOP;
if (REACH_TIME_INTERVAL(60 * 1000 * 1000)) {//1min
LOG_ERROR("standby version is larger than primary version", KR(ret),
K(current_data_version), K(primary_data_version));
}
}
}
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册