[
https://issues.apache.org/jira/browse/CXF-8895?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Manuel updated CXF-8895:
------------------------
Description:
Hello,
we discovered an issue that causes a deadlock with large payloads which exceeds
the chunk-length (that is used as buffer size for an {{{}PipedInputStream{}}})
when sending a message to a currently offline/not-available server.
Even when setting the {{ConnectionTimeout}} for the HTTPConduit to e.g.,
1000ms, the timeout does not occur. (the {{ReceiveTimeout}} works as expected)
The feature that introduced the new HttpClientHTTPConduit was CXF-8840 in
[Commit|https://github.com/apache/cxf/commit/1e7169c627d6908118f99dc98d774ffb53dd38c6].
What was {*}expected{*}:
Any type of timeout-related exception.
What *actually* happened:
The thread runs into a deadlock.
How to {*}reproduce{*}:
Run {{org.apache.cxf.systest.dispatch.DispatchClientServerTest.testTimeout()}}
and increase the payload of {{resources/GreetMeDocLiteralReq.xml}} (or use the
attachment provided). The test will not terminate after the given timeout, the
rest will run indefinitely.
The {{{}PipedInputStream{}}}'s read method was never called (server offline),
hence the {{{}PipedOutputStream{}}}'s write method can't continue to write the
data.-> Deadlock.
{{Regards,}}
{{Manuel}}
was:
Hello,
we discovered an issue that causes a deadlock with large payloads which exceeds
the chunk-length (that is used as buffer size for an PipedInputStream) when
sending a message to a currently offline/not-available server.
Even when setting the {{ConnectionTimeout}} for the HTTPConduit to e.g.,
1000ms, the timeout does not occur. (the {{ReceiveTimeout}} works as expected)
The feature that introduced the new HttpClientHTTPConduit was CXF-8840 in
[Commit|https://github.com/apache/cxf/commit/1e7169c627d6908118f99dc98d774ffb53dd38c6].
What was {*}expected{*}:
Any type of timeout-related exception.
What *actually* happened:
The thread runs into a deadlock.
How to {*}reproduce{*}:
Run {{org.apache.cxf.systest.dispatch.DispatchClientServerTest.testTimeout()}}
and increase the payload of {{resources/GreetMeDocLiteralReq.xml}} (or use the
attachment provided). The test will not terminate after the given timeout, the
rest will run indefinitely.
The PipedInputStream's read method was never called (server offline), hence the
PipedOutputStream's write method can't continue to write the data.-> Deadlock.
{{Regards,}}
{{Manuel}}
> Deadlock with new HttpClientHTTPConduit using large payloads against offline
> SOAP Server
> ----------------------------------------------------------------------------------------
>
> Key: CXF-8895
> URL: https://issues.apache.org/jira/browse/CXF-8895
> Project: CXF
> Issue Type: Bug
> Affects Versions: 3.6.0, 3.6.1, 3.6.2
> Reporter: Manuel
> Priority: Major
> Attachments: GreetMeDocLiteralReq.xml
>
>
> Hello,
>
> we discovered an issue that causes a deadlock with large payloads which
> exceeds the chunk-length (that is used as buffer size for an
> {{{}PipedInputStream{}}}) when sending a message to a currently
> offline/not-available server.
> Even when setting the {{ConnectionTimeout}} for the HTTPConduit to e.g.,
> 1000ms, the timeout does not occur. (the {{ReceiveTimeout}} works as expected)
> The feature that introduced the new HttpClientHTTPConduit was CXF-8840 in
> [Commit|https://github.com/apache/cxf/commit/1e7169c627d6908118f99dc98d774ffb53dd38c6].
>
> What was {*}expected{*}:
> Any type of timeout-related exception.
>
> What *actually* happened:
> The thread runs into a deadlock.
>
> How to {*}reproduce{*}:
> Run
> {{org.apache.cxf.systest.dispatch.DispatchClientServerTest.testTimeout()}}
> and increase the payload of {{resources/GreetMeDocLiteralReq.xml}} (or use
> the attachment provided). The test will not terminate after the given
> timeout, the rest will run indefinitely.
> The {{{}PipedInputStream{}}}'s read method was never called (server offline),
> hence the {{{}PipedOutputStream{}}}'s write method can't continue to write
> the data.-> Deadlock.
>
> {{Regards,}}
> {{Manuel}}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)