@@ -343,6 +343,13 @@ bool GrpcServerConnector::SendDiscoverRequest(ServiceListener& service_listener)
343343 return false ;
344344 }
345345 }
346+ // 已经发送过请求正等待超时
347+ if (service_listener.timeout_task_iter_ != reactor_.TimingTaskEnd ()) {
348+ POLARIS_LOG (LOG_WARN, " already discover %s for service[%s/%s]" ,
349+ DataTypeToStr (service_listener.service_ .data_type_ ), service_key.namespace_ .c_str (),
350+ service_key.name_ .c_str ());
351+ return true ;
352+ }
346353 // 组装请求
347354 ::v1::DiscoverRequest request;
348355 if (!service_key.namespace_ .empty ()) {
@@ -366,7 +373,6 @@ bool GrpcServerConnector::SendDiscoverRequest(ServiceListener& service_listener)
366373 DataTypeToStr (service_listener.service_ .data_type_ ), service_key.namespace_ .c_str (),
367374 service_key.name_ .c_str ());
368375 // 设置超时检查任务
369- POLARIS_ASSERT (service_listener.timeout_task_iter_ == reactor_.TimingTaskEnd ());
370376 service_listener.timeout_task_iter_ = reactor_.AddTimingTask (new TimingFuncTask<ServiceListener>(
371377 DiscoverTimoutCheck, &service_listener, message_timeout_.GetTimeout ()));
372378 return true ;
@@ -518,11 +524,14 @@ ReturnCode GrpcServerConnector::ProcessDiscoverResponse(::v1::DiscoverResponse&
518524 response.info ().value ().c_str ());
519525 }
520526 // 设置下一次的检查任务
521- listener.discover_task_iter_ = reactor_.AddTimingTask (
522- new TimingFuncTask<ServiceListener>(TimingDiscover, &listener, listener.sync_interval_ ));
523- if (pending_for_connected_.count (&listener) > 0 ) {
524- // 清理由于切换失败保留在pending列表里的任务需要
525- pending_for_connected_.erase (&listener);
527+ // 这里检查,避免发现任务取消又注册后,之前的同步任务遗留的应答导致重复设置定时任务
528+ if (listener.discover_task_iter_ == reactor_.TimingTaskEnd ()) {
529+ listener.discover_task_iter_ = reactor_.AddTimingTask (
530+ new TimingFuncTask<ServiceListener>(TimingDiscover, &listener, listener.sync_interval_ ));
531+ if (pending_for_connected_.count (&listener) > 0 ) {
532+ // 清理由于切换失败保留在pending列表里的任务需要
533+ pending_for_connected_.erase (&listener);
534+ }
526535 }
527536 return kReturnOk ;
528537}
0 commit comments