[
https://issues.apache.org/jira/browse/HTTPCLIENT-2291?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17760735#comment-17760735
]
Lars Uffmann commented on HTTPCLIENT-2291:
------------------------------------------
The proposed fix does work as expected. I could safely remove the workaround
(see below). My Handler can now be used before or after
(Async)HttpRequestRetryExec.
{code:java}
// workaround for HTTPCLIENT-2291
if (scope.execCount.get() == 1) {
meterExecution(request, entityProducer, scope, chain, asyncExecCallback);
} else {
chain.proceed(request, entityProducer, scope, asyncExecCallback);
}{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: [email protected]
For additional commands, e-mail: [email protected]