This is an automated email from the ASF dual-hosted git repository.

liubao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/servicecomb-docs.git


The following commit(s) were added to refs/heads/master by this push:
     new 83eb06d  add Retry Policy Considerations (#247)
83eb06d is described below

commit 83eb06dd8517ea98e98339321e70e1421f9d41b4
Author: fanjiwang <[email protected]>
AuthorDate: Fri Oct 8 09:36:35 2021 +0800

    add Retry Policy Considerations (#247)
    
    Co-authored-by: fanjiwang <[email protected]>
---
 .../zh_CN/docs/references-handlers/loadbalance.md                  | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git 
a/java-chassis-reference/zh_CN/docs/references-handlers/loadbalance.md 
b/java-chassis-reference/zh_CN/docs/references-handlers/loadbalance.md
index f288936..789d321 100644
--- a/java-chassis-reference/zh_CN/docs/references-handlers/loadbalance.md
+++ b/java-chassis-reference/zh_CN/docs/references-handlers/loadbalance.md
@@ -166,8 +166,11 @@ servicecomb:
 
 retryOnNext表示失败以后,根据负载均衡策略,重新选择一个实例重试(可能选择到同一个实例)。 
retryOnSame表示仍然使用上次失败的实例进行重试。
 
-***注意:*** 并不是所有的异常都会触发重试。缺省的情况,只有网络异常,或者 503 错误码才会触发重试。 详细可以
-参考 `DefaultRetryExtensionsFactory` 的定义。
+**注意事项:**
+
+​     1.并不是所有的异常都会触发重试。缺省的情况,只有网络异常,或者 503 错误码才会触发重试。 详细可以参考 
`DefaultRetryExtensionsFactory` 的定义。
+
+​     2.retry的场景下,对于同步调用, 
同步调用的主线程已经被挂起,无法再主线程中进行重试,重试也不能在网络线程(event-loop)中进行,未被保护的阻塞操作会导致网络线程挂起,因此当前的重试机制会另起一个retry-pool-thread进行重试,因此如果业务在扩展`HttpClientFilter`的时候,如果涉及到通过ThreadLocal获取线程上下文的时候,会存在获取不到的情况,针对这种场景,建议在获取的时候做个判断处理,或者针对涉及ThreadLocal获取线程上下文的业务场景,建议采取通过扩展Handler的机制,进行处理,并保证扩展的Handler在loadbalance之前执行。
 
 ## 自定义
 
负载均衡模块提供的功能已经非常强大,能够通过配置支持大部分应用场景。同时它也提供了强大的扩展能力,包括DiscoveryFilter、ServerListFilterExt、ExtensionsFactory(扩展IRule,RetryHandler等)。loadbalance模块本身包含了每一个扩展的实现,这里不再详细描述如何扩展,只简单描述步骤。开发者可以自行下载ServiceComb源码进行参考。

Reply via email to