[ https://issues.apache.org/jira/browse/HTTPCLIENT-2291?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17760741#comment-17760741 ]
Lars Uffmann commented on HTTPCLIENT-2291: ------------------------------------------ [~olegk] I think it would be helpful to document the exec chain behaviour in case of a retry. Placing a handler after RETRY will cause a custom handler to be called for each individual retry. Elapsed time will precisely measure the individual http requests, without the imposed delay. {code:java} clientBuilder.addExecInterceptorAfter(ChainElement.RETRY.name(), INTERCEPTOR_NAME, execChainHandler);{code} Adding it before RETRY, a custom handler will see the initial request and the final outcome. Elapsed time will account for any imposed delay. {code:java} clientBuilder.addExecInterceptorFirst(INTERCEPTOR_NAME, execChainHandler);{code} > RetryStrategy: AsyncExecChainHandler and ExecChainHandler behavior should be > identical > -------------------------------------------------------------------------------------- > > Key: HTTPCLIENT-2291 > URL: https://issues.apache.org/jira/browse/HTTPCLIENT-2291 > Project: HttpComponents HttpClient > Issue Type: Bug > Components: HttpClient (async), HttpClient (classic) > Affects Versions: 5.2 > Reporter: Lars Uffmann > Priority: Major > Fix For: 5.3-alpha2 > > > A RetryStrategy is enabled by default in both classic and async. > > If an exec chain handler is placed *after* the retry handler, the behavior > between async and classic is consistent. The behavior of an Async- and a > classic ExecChainHandler placed *before* the (Async)HttpRequestRetryExec is > different when a retry is actually executed. > > In case of a retry, the classic HttpRequestRetryExec will split the exec > chain and proceed with all handlers configured after itself. Any handler > registered before would be called exactly one time with the final outcome of > the last retry attempt. > > The Async version, however, will call any handler registered before itself > with every retry. The order of events is counter intuitive as well. All > closing events will be emitted after the last attempt. > > {*}Workaround{*}: In async, ignore all but the first invocation of a handler > when the handler is placed before the retry handler. > > {*}Expected Bahaviour{*}: Both Async and Classic ExecChainHandler behavior > should be identical. -- This message was sent by Atlassian Jira (v8.20.10#820010) --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@hc.apache.org For additional commands, e-mail: dev-h...@hc.apache.org