RetryPolicy 重试策略
odps-sdk
使用 TunnelRetryHandler
类用于处理 ODPS Tunnel 服务中的重试策略。
在现实环境中,由于网络原因,服务端限流策略等多种原因,tunnel 服务可能出现多种错误,odps-sdk
力图提供一种通用的重试机制,让用户能够对非客户端问题无感知。
重试策略说明
- 429: 服务器端限流策略,无限指数重试(最大等待时间为64秒)。
- 502, 504: 触发会话重新加载并进行指数重试(1秒到64秒)。
- 5xx: 服务器端错误,进行指数重试(1秒到64秒)。
- 308: 仅用于
UpsertSession
,更新客户端缓存 ip 地址,并进行无限指数重试(最大等待时间为64秒)。 - 其他: 其他错误,通常为客户端问题,使用用户配置的重试逻辑(默认不重试)。
如何配置重试逻辑
目前,tunnel 仅支持配置上述其他错误的重试逻辑,而被配置过的重试逻辑是固定的。(实际上,被配置过的错误都属于用户“本不应当察觉”的错误,可以安全重试)
用户应当实现 RetryPolicy
接口,并通过 Configuration.Builder#withRetryPolicy
方法进行配置。
打印重试日志
由于 odps-sdk
内置了重试逻辑,我们注意到用户在使用 tunnel 时,需要打印重试日志,以便于排查问题。
用户可以通过实现 RetryLogger
接口,并通过 Configuration.Builder#withRetryLogger
方法进行配置。
RetryPolicy 接口
RetryPolicy
接口定义了重试策略的基本方法。