diff --git a/functionsystem/src/domain_scheduler/domain_group_control/domain_group_ctrl_actor.cpp b/functionsystem/src/domain_scheduler/domain_group_control/domain_group_ctrl_actor.cpp index a3f556fbff3223f3515e8b2a070912449d210db3..d8af1c3344a5378270681d06ec061528628f53e2 100644 --- a/functionsystem/src/domain_scheduler/domain_group_control/domain_group_ctrl_actor.cpp +++ b/functionsystem/src/domain_scheduler/domain_group_control/domain_group_ctrl_actor.cpp @@ -262,6 +262,11 @@ std::vector DomainGroupCtrlActor::RollbackContext(const std::shared_ptrlastReservedInd = static_cast(i); continue; } + + if (i >= ctx->tryScheduleResults.size()) { + continue; + } + alreadyFailed = true; YRLOG_INFO("{}|{}|instance({}) is already failed to reserve, rollback it context to retry", request->traceid(), requestID, request->instance().instanceid()); diff --git a/functionsystem/src/function_proxy/common/observer/observer_actor.cpp b/functionsystem/src/function_proxy/common/observer/observer_actor.cpp index 95de83514e53133b5e7d6b9597c44cc6aeabc116..b4b51fcd0f2042fdf2f945a71af84a72fade9e35 100644 --- a/functionsystem/src/function_proxy/common/observer/observer_actor.cpp +++ b/functionsystem/src/function_proxy/common/observer/observer_actor.cpp @@ -1104,6 +1104,12 @@ litebus::Future ObserverActor::PartialInstanceInfoSyncer(const std:: localInstance->second.set_version(1); PutInstance(localInstance->second, true); } + + if (IsLowReliabilityInstance(localInstance->second)) { + YRLOG_WARN("failed to find low reliability instance({}) in meta-store, delete local instance", + localInstance->first); + DelInstanceEvent(instanceID, getResponse->header.revision); + } return syncResult; } auto eventKey = TrimKeyPrefix(events.at(0).kv.key(), metaStorageAccessor_->GetMetaClient()->GetTablePrefix());