jasondeng1997 commented on code in PR #1988:
URL: https://github.com/apache/dubbo-go/pull/1988#discussion_r927231808


##########
registry/polaris/core.go:
##########
@@ -74,48 +73,52 @@ func (watcher *PolarisServiceWatcher) lazyRun() {
 
 // startWatch start run work to watch target service by polaris
 func (watcher *PolarisServiceWatcher) startWatch() {
-
        for {
                resp, err := 
watcher.consumer.WatchService(watcher.subscribeParam)
                if err != nil {
                        time.Sleep(time.Duration(500 * time.Millisecond))
                        continue
                }
-
                watcher.notifyAllSubscriber(&config_center.ConfigChangeEvent{
                        Value:      resp.GetAllInstancesResp.Instances,
                        ConfigType: remoting.EventTypeAdd,
                })
 
-               select {
-               case event := <-resp.EventChannel:
-                       eType := event.GetSubScribeEventType()
-                       if eType == api.EventInstance {
-                               insEvent := event.(*model.InstanceEvent)
-                               if insEvent.AddEvent != nil {
-                                       
watcher.notifyAllSubscriber(&config_center.ConfigChangeEvent{
-                                               Value:      
insEvent.AddEvent.Instances,
-                                               ConfigType: 
remoting.EventTypeAdd,
-                                       })
-                               }
-                               if insEvent.UpdateEvent != nil {
-                                       instances := make([]model.Instance, 
len(insEvent.UpdateEvent.UpdateList))
-                                       for i := range 
insEvent.UpdateEvent.UpdateList {
-                                               instances[i] = 
insEvent.UpdateEvent.UpdateList[i].After
+               for {
+                       select {
+                       case event := <-resp.EventChannel:
+                               eType := event.GetSubScribeEventType()
+                               if eType == api.EventInstance {
+                                       insEvent := event.(*model.InstanceEvent)
+
+                                       if insEvent.AddEvent != nil {
+                                               
watcher.notifyAllSubscriber(&config_center.ConfigChangeEvent{
+                                                       Value:      
insEvent.AddEvent.Instances,
+                                                       ConfigType: 
remoting.EventTypeAdd,
+                                               })
+                                       }
+                                       if insEvent.UpdateEvent != nil {
+                                               instances := 
make([]model.Instance, len(insEvent.UpdateEvent.UpdateList))
+                                               for i := range 
insEvent.UpdateEvent.UpdateList {
+                                                       instances[i] = 
insEvent.UpdateEvent.UpdateList[i].After
+                                               }
+                                               
watcher.notifyAllSubscriber(&config_center.ConfigChangeEvent{
+                                                       Value:      instances,
+                                                       ConfigType: 
remoting.EventTypeUpdate,
+                                               })
+                                       }
+                                       if insEvent.DeleteEvent != nil {
+                                               
watcher.notifyAllSubscriber(&config_center.ConfigChangeEvent{
+                                                       Value:      
insEvent.DeleteEvent.Instances,
+                                                       ConfigType: 
remoting.EventTypeDel,
+                                               })
                                        }
-                                       
watcher.notifyAllSubscriber(&config_center.ConfigChangeEvent{
-                                               Value:      instances,
-                                               ConfigType: 
remoting.EventTypeUpdate,
-                                       })
-                               }
-                               if insEvent.DeleteEvent != nil {
-                                       
watcher.notifyAllSubscriber(&config_center.ConfigChangeEvent{
-                                               Value:      
insEvent.DeleteEvent.Instances,
-                                               ConfigType: 
remoting.EventTypeDel,
-                                       })
                                }
+                       case <-time.After(20 * time.Second):

Review Comment:
   
阻塞20秒以后再执行,所以先执行上面的,上面的如果20秒还没有执行完,重新执行说明上面的bug,当然是否可以用户自定义,另外20秒是否过长,这个在dubbo 
yaml配置文件里面可以用户自定义配置



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to