Fix show create table hang when global service is not leader
This commit is contained in:
@ -258,9 +258,6 @@ int ObGlobalAutoIncService::handle_curr_autoinc_request(const ObGAISAutoIncKeyAr
|
|||||||
LOG_WARN("invalid argument", K(ret), K(request));
|
LOG_WARN("invalid argument", K(ret), K(request));
|
||||||
} else if (OB_FAIL(check_leader_(key.tenant_id_, is_leader))) {
|
} else if (OB_FAIL(check_leader_(key.tenant_id_, is_leader))) {
|
||||||
LOG_WARN("check leader failed", K(ret), K(request.sender_), K(self_));
|
LOG_WARN("check leader failed", K(ret), K(request.sender_), K(self_));
|
||||||
} else if (OB_UNLIKELY(!is_leader)) {
|
|
||||||
ret = OB_NOT_MASTER;
|
|
||||||
LOG_WARN("gais service is not leader", K(ret));
|
|
||||||
} else if (OB_FAIL(mutex.lock())) {
|
} else if (OB_FAIL(mutex.lock())) {
|
||||||
LOG_WARN("fail to get lock", K(ret));
|
LOG_WARN("fail to get lock", K(ret));
|
||||||
} else {
|
} else {
|
||||||
@ -270,11 +267,12 @@ int ObGlobalAutoIncService::handle_curr_autoinc_request(const ObGAISAutoIncKeyAr
|
|||||||
if (OB_UNLIKELY(OB_SUCCESS != err && OB_HASH_NOT_EXIST != err)) {
|
if (OB_UNLIKELY(OB_SUCCESS != err && OB_HASH_NOT_EXIST != err)) {
|
||||||
ret = OB_ERR_UNEXPECTED;
|
ret = OB_ERR_UNEXPECTED;
|
||||||
LOG_WARN("failed to get seq value", K(ret), K(key));
|
LOG_WARN("failed to get seq value", K(ret), K(key));
|
||||||
} else if (OB_LIKELY(cache_node.is_valid())) {
|
} else if (is_leader && OB_LIKELY(cache_node.is_valid())) {
|
||||||
// get autoinc values from cache
|
// get autoinc values from cache
|
||||||
sequence_value = cache_node.sequence_value_;
|
sequence_value = cache_node.sequence_value_;
|
||||||
sync_value = cache_node.sync_value_;
|
sync_value = cache_node.sync_value_;
|
||||||
// hash not exist or cache node is non-valid, read value from inner table
|
// hash not exist, cache node is non-valid or service is not leader,
|
||||||
|
// read value from inner table
|
||||||
} else if (OB_FAIL(read_value_from_inner_table_(key, sequence_value, sync_value))) {
|
} else if (OB_FAIL(read_value_from_inner_table_(key, sequence_value, sync_value))) {
|
||||||
LOG_WARN("fail to read value from inner table", K(ret));
|
LOG_WARN("fail to read value from inner table", K(ret));
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user