diff --git a/src/logservice/ob_net_keepalive_adapter.cpp b/src/logservice/ob_net_keepalive_adapter.cpp index 2f86c6630b..ed019adc57 100644 --- a/src/logservice/ob_net_keepalive_adapter.cpp +++ b/src/logservice/ob_net_keepalive_adapter.cpp @@ -37,7 +37,7 @@ int ObNetKeepAliveAdapter::in_black_or_stopped_(const common::ObAddr &server, } else if (OB_FAIL(net_keepalive_->in_black(server, in_blacklist, &ka_data))) { CLOG_LOG(WARN, "in_black failed", K(ret), K(server)); } else { - is_server_stopped = (share::RSS_IS_STOPPED == ka_data.rs_server_status_) + is_server_stopped = (share::RSS_IS_WORKING != ka_data.rs_server_status_) || (ka_data.start_service_time_ <= 0 || OB_INVALID_TIMESTAMP == ka_data.start_service_time_); if (is_server_stopped && REACH_TIME_INTERVAL(1 * 1000 * 1000)) { diff --git a/src/rootserver/ob_root_service.cpp b/src/rootserver/ob_root_service.cpp index c26a1e4007..ab98b567fe 100644 --- a/src/rootserver/ob_root_service.cpp +++ b/src/rootserver/ob_root_service.cpp @@ -2254,7 +2254,11 @@ int ObRootService::renew_lease(const ObLeaseRequest &lease_request, ObLeaseRespo lease_response.force_frozen_status_ = to_alive; lease_response.baseline_schema_version_ = baseline_schema_version_; // set observer stopped after has no leader - lease_response.rs_server_status_ = is_stopped ? RSS_IS_STOPPED : RSS_IS_WORKING; + if (is_full_service()) { + lease_response.rs_server_status_ = is_stopped ? RSS_IS_STOPPED : RSS_IS_WORKING; + } else { + lease_response.rs_server_status_ = RSS_INVALID; + } (void)OTC_MGR.get_lease_response(lease_response); // after split schema, the schema_version is not used, but for the legality detection, set schema_version to sys's schema_version