You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@dubbo.apache.org by GitBox <gi...@apache.org> on 2022/07/01 03:31:27 UTC

[GitHub] [dubbo] happytimor opened a new issue, #10188: throw InterruptedException in FailoverClusterInvoker

happytimor opened a new issue, #10188:
URL: https://github.com/apache/dubbo/issues/10188

   最近开发一个类似流程任务的一个功能, 核心就是在线程池里运行任务, 代码如下:
   
   ```java
   RUNNER_EXECUTOR.execute(() -> {
       pipelineService.startTask(taskId);
   });
   ```
   
   后来业务需要进行支持中断操作, 于是调整代码如下:
   ``` java
   //启动逻辑
   Future<?> future = this.RUNNER_EXECUTOR.submit(() -> {
       this.pipelineService.startTask(taskId);
   });
   TASK_FUTURE_MAP.put(taskId, future);
   ```
   
   ```java
   //中断逻辑
   TASK_FUTURE_MAP.remove(taskId).cancel(true);
   ```
   
   运行后发现任务无法被中断,查了下,发现最终是因为startTask方法里面的dubbo调用有设置重试次数(大部分时间是需要重试),failover策略会把InterruptException当做普通异常,直接重试了(打断失败)。
   
   
   我觉得应该把InterruptException直接抛出来, 于是做了一个pr如下: https://github.com/apache/dubbo/pull/10164
   ``` java
   //Brief code for FailoverClusterInvoker.java
   public Result doInvoke(Invocation invocation, final List<Invoker<T>> invokers, LoadBalance loadbalance) {
       for (int i = 0; i < len; i++) {
           try {
               Result result = invoker.invoke(invocation);
               return result;
           } catch (RpcException e) {
               if (e.isBiz()) {
                   throw e;
               }
               
               //this is my change,  merge code start
               if (e.getCause().toString().equals(InterruptedException.class.getName())) {
                   throw new RuntimeException(e);
               }
               //merge code end
               
               le = e;
           } catch (Throwable e) {
               le = new RpcException(e.getMessage(), e);
           } finally {
               providers.add(invoker.getUrl().getAddress());
           }
       }
       throw new RpcException();
   ```
   
   想问下:
   1. 这个pr有没有合并价值
   2. 如果不这么做的话,怎么实现我的中断需求比较合理


-- 
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: notifications-unsubscribe@dubbo.apache.org.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@dubbo.apache.org
For additional commands, e-mail: notifications-help@dubbo.apache.org


[GitHub] [dubbo] happytimor commented on issue #10188: throw InterruptedException in FailoverClusterInvoker

Posted by GitBox <gi...@apache.org>.
happytimor commented on issue #10188:
URL: https://github.com/apache/dubbo/issues/10188#issuecomment-1172072098

   @AlbumenJ  debug看了下,服务端的异常不会出现在RpcException里面, 对于dubbo来说, 这是一个正常的返回
   
   请看截图
   ![image](https://user-images.githubusercontent.com/7302896/176853971-b09eaf81-7457-435d-a2d0-aca7691f2609.png)
   


-- 
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: notifications-unsubscribe@dubbo.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@dubbo.apache.org
For additional commands, e-mail: notifications-help@dubbo.apache.org


[GitHub] [dubbo] AlbumenJ commented on issue #10188: throw InterruptedException in FailoverClusterInvoker

Posted by GitBox <gi...@apache.org>.
AlbumenJ commented on issue #10188:
URL: https://github.com/apache/dubbo/issues/10188#issuecomment-1172164687

   你可以试下服务端请求中,Filter 里面抛出 InterruptedException


-- 
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: notifications-unsubscribe@dubbo.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@dubbo.apache.org
For additional commands, e-mail: notifications-help@dubbo.apache.org


[GitHub] [dubbo] happytimor commented on issue #10188: throw InterruptedException in FailoverClusterInvoker

Posted by GitBox <gi...@apache.org>.
happytimor commented on issue #10188:
URL: https://github.com/apache/dubbo/issues/10188#issuecomment-1171899644

   > @happytimor 从 isInterrupted 状态 + InterruptedException.class 理论上是可以判断的,你可以试试
   
   我试下


-- 
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: notifications-unsubscribe@dubbo.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@dubbo.apache.org
For additional commands, e-mail: notifications-help@dubbo.apache.org


[GitHub] [dubbo] happytimor commented on issue #10188: throw InterruptedException in FailoverClusterInvoker

Posted by GitBox <gi...@apache.org>.
happytimor commented on issue #10188:
URL: https://github.com/apache/dubbo/issues/10188#issuecomment-1171275935

   > 
   
   
   
   > > > > > 1. 打断重试的这个需求应该是我们需要支持的,只是实现的方式需要考虑下
   > > > > > 2. 是否可以在 catch 异常的时候判断当前线程是否是已经被打断的,以此来确定是否需要把报错外发
   > > > > 
   > > > > 
   > > > > 写了一个简单的代码模拟下:
   > > > > ```java
   > > > >     public static void main(String[] args) throws InterruptedException {
   > > > >         ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(1, 1, 0, TimeUnit.SECONDS, new LinkedBlockingQueue<>());
   > > > > 
   > > > >         Future<?> submit = threadPoolExecutor.submit(() -> {
   > > > >             System.out.println("before: " + Thread.currentThread().isInterrupted());
   > > > >             dubboInvoke();
   > > > >             System.out.println("end: " + Thread.currentThread().isInterrupted());
   > > > >         });
   > > > >         Thread.sleep(1000);
   > > > >         submit.cancel(true);
   > > > >     }
   > > > > 
   > > > > 
   > > > >     static void dubboInvoke() {
   > > > >         try {
   > > > >             interruptError();
   > > > >         } catch (Exception e) {
   > > > >             //retry invoke
   > > > >         }
   > > > >     }
   > > > > 
   > > > >     static void interruptError() throws Exception {
   > > > >         try {
   > > > >             Thread.sleep(5000);
   > > > >             System.out.println("wake up");
   > > > >         } catch (Exception e) {
   > > > >             //contains interrupt exception(RpcException)
   > > > >             throw e;
   > > > >         }
   > > > >     }
   > > > > ```
   > > > > 
   > > > > 
   > > > >     
   > > > >       
   > > > >     
   > > > > 
   > > > >       
   > > > >     
   > > > > 
   > > > >     
   > > > >   
   > > > > 控制台输出信息:
   > > > > ```java
   > > > > before: false
   > > > > end: false
   > > > > ```
   > > > > 
   > > > > 
   > > > >     
   > > > >       
   > > > >     
   > > > > 
   > > > >       
   > > > >     
   > > > > 
   > > > >     
   > > > >   
   > > > > invoke产生的InterruptException没有被抛出, 外层通过 Thread.currentThread().isInterrupted() 方法是感知不到的
   > > > 
   > > > 
   > > > 这里应该在 catch 异常的时候将线程的 isInterrupted 状态置上去,如果目前 Dubbo 没有做的话也需要完善下
   > > 
   > > 
   > > 看了下源代码是没有做个操作的,所以写了这个pr #10164 , 我觉得核心是用户主动打断产生的异常, 不应该被重试(即使设置了重试次数)
   > 
   > #10164 的问题是 InterruptedException.class 这个异常可能是服务端抛出来的异常(即是业务异常),不一定是客户端的异常。所以直接判断 cause 为 InterruptedException 是有问题的。
   
   也有道理, 那就只能想办法来判断错误发生在客户端还是服务端了


-- 
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: notifications-unsubscribe@dubbo.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@dubbo.apache.org
For additional commands, e-mail: notifications-help@dubbo.apache.org


[GitHub] [dubbo] happytimor commented on issue #10188: throw InterruptedException in FailoverClusterInvoker

Posted by GitBox <gi...@apache.org>.
happytimor commented on issue #10188:
URL: https://github.com/apache/dubbo/issues/10188#issuecomment-1168662311

   > 1. 打断重试的这个需求应该是我们需要支持的,只是实现的方式需要考虑下
   > 2. 是否可以在 catch 异常的时候判断当前线程是否是已经被打断的,以此来确定是否需要把报错外发
   
   写了一个简单的代码模拟下:
   ```java
       public static void main(String[] args) throws InterruptedException {
           ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(1, 1, 0, TimeUnit.SECONDS, new LinkedBlockingQueue<>());
   
           Future<?> submit = threadPoolExecutor.submit(() -> {
               System.out.println("before: " + Thread.currentThread().isInterrupted());
               dubboInvoke();
               System.out.println("end: " + Thread.currentThread().isInterrupted());
           });
           Thread.sleep(1000);
           submit.cancel(true);
       }
   
   
       static void dubboInvoke() {
           try {
               interruptError();
           } catch (Exception e) {
               //retry invoke
           }
       }
   
       static void interruptError() throws Exception {
           try {
               Thread.sleep(5000);
               System.out.println("wake up");
           } catch (Exception e) {
               //contains interrupt exception(RpcException)
               throw e;
           }
       }
   ```
   
   控制台输出信息:
   ``` java
   before: false
   end: false
   ```
   
   invoke产生的InterruptException没有被抛出, 外层通过 Thread.currentThread().isInterrupted() 方法是感知不到的


-- 
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: notifications-unsubscribe@dubbo.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@dubbo.apache.org
For additional commands, e-mail: notifications-help@dubbo.apache.org


[GitHub] [dubbo] 24kpure commented on issue #10188: throw InterruptedException in FailoverClusterInvoker

Posted by GitBox <gi...@apache.org>.
24kpure commented on issue #10188:
URL: https://github.com/apache/dubbo/issues/10188#issuecomment-1165389618

   Just in my opinitions,for consumers, exceptions thrown by providers during business operations can be converted to business exceptions.


-- 
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: notifications-unsubscribe@dubbo.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@dubbo.apache.org
For additional commands, e-mail: notifications-help@dubbo.apache.org


[GitHub] [dubbo] happytimor closed issue #10188: throw InterruptedException in FailoverClusterInvoker

Posted by GitBox <gi...@apache.org>.
happytimor closed issue #10188: throw InterruptedException in FailoverClusterInvoker
URL: https://github.com/apache/dubbo/issues/10188


-- 
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: notifications-unsubscribe@dubbo.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@dubbo.apache.org
For additional commands, e-mail: notifications-help@dubbo.apache.org


[GitHub] [dubbo] happytimor commented on issue #10188: throw InterruptedException in FailoverClusterInvoker

Posted by GitBox <gi...@apache.org>.
happytimor commented on issue #10188:
URL: https://github.com/apache/dubbo/issues/10188#issuecomment-1169452507

   > > > 1. 打断重试的这个需求应该是我们需要支持的,只是实现的方式需要考虑下
   > > > 2. 是否可以在 catch 异常的时候判断当前线程是否是已经被打断的,以此来确定是否需要把报错外发
   > > 
   > > 
   > > 写了一个简单的代码模拟下:
   > > ```java
   > >     public static void main(String[] args) throws InterruptedException {
   > >         ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(1, 1, 0, TimeUnit.SECONDS, new LinkedBlockingQueue<>());
   > > 
   > >         Future<?> submit = threadPoolExecutor.submit(() -> {
   > >             System.out.println("before: " + Thread.currentThread().isInterrupted());
   > >             dubboInvoke();
   > >             System.out.println("end: " + Thread.currentThread().isInterrupted());
   > >         });
   > >         Thread.sleep(1000);
   > >         submit.cancel(true);
   > >     }
   > > 
   > > 
   > >     static void dubboInvoke() {
   > >         try {
   > >             interruptError();
   > >         } catch (Exception e) {
   > >             //retry invoke
   > >         }
   > >     }
   > > 
   > >     static void interruptError() throws Exception {
   > >         try {
   > >             Thread.sleep(5000);
   > >             System.out.println("wake up");
   > >         } catch (Exception e) {
   > >             //contains interrupt exception(RpcException)
   > >             throw e;
   > >         }
   > >     }
   > > ```
   > > 
   > > 
   > >     
   > >       
   > >     
   > > 
   > >       
   > >     
   > > 
   > >     
   > >   
   > > 控制台输出信息:
   > > ```java
   > > before: false
   > > end: false
   > > ```
   > > 
   > > 
   > >     
   > >       
   > >     
   > > 
   > >       
   > >     
   > > 
   > >     
   > >   
   > > invoke产生的InterruptException没有被抛出, 外层通过 Thread.currentThread().isInterrupted() 方法是感知不到的
   > 
   > 这里应该在 catch 异常的时候将线程的 isInterrupted 状态置上去,如果目前 Dubbo 没有做的话也需要完善下
   
   看了下源代码是没有做个操作的,所以写了这个pr https://github.com/apache/dubbo/pull/10164 ,  我觉得核心是用户主动打断产生的异常, 不应该被重试(即使设置了重试次数)


-- 
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: notifications-unsubscribe@dubbo.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@dubbo.apache.org
For additional commands, e-mail: notifications-help@dubbo.apache.org


[GitHub] [dubbo] AlbumenJ commented on issue #10188: throw InterruptedException in FailoverClusterInvoker

Posted by GitBox <gi...@apache.org>.
AlbumenJ commented on issue #10188:
URL: https://github.com/apache/dubbo/issues/10188#issuecomment-1171172340

   > > > > 1. 打断重试的这个需求应该是我们需要支持的,只是实现的方式需要考虑下
   > > > > 2. 是否可以在 catch 异常的时候判断当前线程是否是已经被打断的,以此来确定是否需要把报错外发
   > > > 
   > > > 
   > > > 写了一个简单的代码模拟下:
   > > > ```java
   > > >     public static void main(String[] args) throws InterruptedException {
   > > >         ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(1, 1, 0, TimeUnit.SECONDS, new LinkedBlockingQueue<>());
   > > > 
   > > >         Future<?> submit = threadPoolExecutor.submit(() -> {
   > > >             System.out.println("before: " + Thread.currentThread().isInterrupted());
   > > >             dubboInvoke();
   > > >             System.out.println("end: " + Thread.currentThread().isInterrupted());
   > > >         });
   > > >         Thread.sleep(1000);
   > > >         submit.cancel(true);
   > > >     }
   > > > 
   > > > 
   > > >     static void dubboInvoke() {
   > > >         try {
   > > >             interruptError();
   > > >         } catch (Exception e) {
   > > >             //retry invoke
   > > >         }
   > > >     }
   > > > 
   > > >     static void interruptError() throws Exception {
   > > >         try {
   > > >             Thread.sleep(5000);
   > > >             System.out.println("wake up");
   > > >         } catch (Exception e) {
   > > >             //contains interrupt exception(RpcException)
   > > >             throw e;
   > > >         }
   > > >     }
   > > > ```
   > > > 
   > > > 
   > > >     
   > > >       
   > > >     
   > > > 
   > > >       
   > > >     
   > > > 
   > > >     
   > > >   
   > > > 控制台输出信息:
   > > > ```java
   > > > before: false
   > > > end: false
   > > > ```
   > > > 
   > > > 
   > > >     
   > > >       
   > > >     
   > > > 
   > > >       
   > > >     
   > > > 
   > > >     
   > > >   
   > > > invoke产生的InterruptException没有被抛出, 外层通过 Thread.currentThread().isInterrupted() 方法是感知不到的
   > > 
   > > 
   > > 这里应该在 catch 异常的时候将线程的 isInterrupted 状态置上去,如果目前 Dubbo 没有做的话也需要完善下
   > 
   > 看了下源代码是没有做个操作的,所以写了这个pr #10164 , 我觉得核心是用户主动打断产生的异常, 不应该被重试(即使设置了重试次数)
   
   #10164 的问题是 InterruptedException.class 这个异常可能是服务端抛出来的异常(即是业务异常),不一定是客户端的异常。所以直接判断 cause 为 InterruptedException 是有问题的。


-- 
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: notifications-unsubscribe@dubbo.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@dubbo.apache.org
For additional commands, e-mail: notifications-help@dubbo.apache.org


[GitHub] [dubbo] happytimor closed issue #10188: throw InterruptedException in FailoverClusterInvoker

Posted by GitBox <gi...@apache.org>.
happytimor closed issue #10188: throw InterruptedException in FailoverClusterInvoker
URL: https://github.com/apache/dubbo/issues/10188


-- 
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: notifications-unsubscribe@dubbo.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@dubbo.apache.org
For additional commands, e-mail: notifications-help@dubbo.apache.org


[GitHub] [dubbo] AlbumenJ commented on issue #10188: throw InterruptedException in FailoverClusterInvoker

Posted by GitBox <gi...@apache.org>.
AlbumenJ commented on issue #10188:
URL: https://github.com/apache/dubbo/issues/10188#issuecomment-1171892788

   @happytimor 从 isInterrupted 状态 + InterruptedException.class 理论上是可以判断的,你可以试试


-- 
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: notifications-unsubscribe@dubbo.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@dubbo.apache.org
For additional commands, e-mail: notifications-help@dubbo.apache.org


[GitHub] [dubbo] AlbumenJ commented on issue #10188: throw InterruptedException in FailoverClusterInvoker

Posted by GitBox <gi...@apache.org>.
AlbumenJ commented on issue #10188:
URL: https://github.com/apache/dubbo/issues/10188#issuecomment-1169445354

   > > 1. 打断重试的这个需求应该是我们需要支持的,只是实现的方式需要考虑下
   > > 2. 是否可以在 catch 异常的时候判断当前线程是否是已经被打断的,以此来确定是否需要把报错外发
   > 
   > 写了一个简单的代码模拟下:
   > 
   > ```java
   >     public static void main(String[] args) throws InterruptedException {
   >         ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(1, 1, 0, TimeUnit.SECONDS, new LinkedBlockingQueue<>());
   > 
   >         Future<?> submit = threadPoolExecutor.submit(() -> {
   >             System.out.println("before: " + Thread.currentThread().isInterrupted());
   >             dubboInvoke();
   >             System.out.println("end: " + Thread.currentThread().isInterrupted());
   >         });
   >         Thread.sleep(1000);
   >         submit.cancel(true);
   >     }
   > 
   > 
   >     static void dubboInvoke() {
   >         try {
   >             interruptError();
   >         } catch (Exception e) {
   >             //retry invoke
   >         }
   >     }
   > 
   >     static void interruptError() throws Exception {
   >         try {
   >             Thread.sleep(5000);
   >             System.out.println("wake up");
   >         } catch (Exception e) {
   >             //contains interrupt exception(RpcException)
   >             throw e;
   >         }
   >     }
   > ```
   > 
   > 控制台输出信息:
   > 
   > ```java
   > before: false
   > end: false
   > ```
   > 
   > invoke产生的InterruptException没有被抛出, 外层通过 Thread.currentThread().isInterrupted() 方法是感知不到的
   
   这里应该在 catch 异常的时候将线程的 isInterrupted 状态置上去,如果目前 Dubbo 没有做的话也需要完善下


-- 
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: notifications-unsubscribe@dubbo.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@dubbo.apache.org
For additional commands, e-mail: notifications-help@dubbo.apache.org


[GitHub] [dubbo] AlbumenJ commented on issue #10188: throw InterruptedException in FailoverClusterInvoker

Posted by GitBox <gi...@apache.org>.
AlbumenJ commented on issue #10188:
URL: https://github.com/apache/dubbo/issues/10188#issuecomment-1168639306

   1. 打断重试的这个需求应该是我们需要支持的,只是实现的方式需要考虑下
   2. 是否可以在 catch 异常的时候判断当前线程是否是已经被打断的,以此来确定是否需要把报错外发


-- 
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: notifications-unsubscribe@dubbo.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@dubbo.apache.org
For additional commands, e-mail: notifications-help@dubbo.apache.org


[GitHub] [dubbo] happytimor commented on issue #10188: throw InterruptedException in FailoverClusterInvoker

Posted by GitBox <gi...@apache.org>.
happytimor commented on issue #10188:
URL: https://github.com/apache/dubbo/issues/10188#issuecomment-1178773212

   https://github.com/apache/dubbo/pull/10164 have a look @AlbumenJ 
   只需要打断当前线程就好了, 重试的时候,会在 asyncResult.get(Integer.MAX_VALUE, TimeUnit.MILLISECONDS); 方法里面被LinkedBlockingQueue.take()方法打断


-- 
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: notifications-unsubscribe@dubbo.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@dubbo.apache.org
For additional commands, e-mail: notifications-help@dubbo.apache.org