[ https://issues.apache.org/jira/browse/OLINGO-1468?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Jonathan Jarvis updated OLINGO-1468: ------------------------------------ Description: When using the OData v4 Client to perform Batch requests with chunked transfer encoding disabled, obtaining the payloadManager() BatchManager causes a block that waits the thread indefinitely on a PipedInputStream. {code:java} ODataClient client = ... client.getOdataClient().getConfiguration().setUseChuncked( false ); ODataBatchRequest br = client.getBatchRequestFactory().getBatchRequest( <baseUrl> ); //Thread waits indefinitely here, and the BatchManager is required to addRequest to the Batch BatchManager bm = br.payloadManager(); {code} The code locks on this IOUtils call because the *input* argument is a *PipedInputStream*: [https://github.com/apache/olingo-odata4/blob/4.7.1-RC01/lib/client-core/src/main/java/org/apache/olingo/client/core/uri/URIUtils.java#L289] called from by: [https://github.com/apache/olingo-odata4/blob/4.7.1-RC01/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/streamed/AbstractODataStreamedRequest.java#L117] I believe the problem could be fixed if chunking disabled would cause the _URIUtils.shouldUseRepeatableHttpBodyEntry_ function to return *true*, thus the IOUtils.copy would not be executed until the Future of AbstractODataStreamedRequest is satisfied. [https://github.com/apache/olingo-odata4/blob/4.7.1-RC01/lib/client-core/src/main/java/org/apache/olingo/client/core/uri/URIUtils.java#L267] was: When using the OData v4 Client to perform requests against a Microsoft Dynamics Instance (which does not support chunked transfer encoding), attempting to create a BatchManager causes a block that waits the thread indefinitely on a PipedInputStream. {code:java} ODataClient client = ... client.getOdataClient().getConfiguration().setUseChuncked( false ); ODataBatchRequest br = client.getBatchRequestFactory().getBatchRequest( <baseUrl> ); //Thread waits indefinitely here, and the BatchManager is required to addRequest to the Batch BatchManager bm = br.payloadManager(); {code} The code locks on this IOUtils call because the *input* argument is a *PipedInputStream*: https://github.com/apache/olingo-odata4/blob/4.7.1-RC01/lib/client-core/src/main/java/org/apache/olingo/client/core/uri/URIUtils.java#L289 called from by: https://github.com/apache/olingo-odata4/blob/4.7.1-RC01/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/streamed/AbstractODataStreamedRequest.java#L117 I believe the problem could be fixed if chunking disabled would cause the _URIUtils.shouldUseRepeatableHttpBodyEntry_ function to return *true*, thus the IOUtils.copy would not be executed until the Future of AbstractODataStreamedRequest is satisfied. https://github.com/apache/olingo-odata4/blob/4.7.1-RC01/lib/client-core/src/main/java/org/apache/olingo/client/core/uri/URIUtils.java#L267 > Batch Requests Block Indefinitely on Batch Request payloadManager() access > when chunking disabled > ------------------------------------------------------------------------------------------------- > > Key: OLINGO-1468 > URL: https://issues.apache.org/jira/browse/OLINGO-1468 > Project: Olingo > Issue Type: Bug > Components: odata4-client > Affects Versions: (Java) V4 4.7.1 > Reporter: Jonathan Jarvis > Priority: Major > > When using the OData v4 Client to perform Batch requests with chunked > transfer encoding disabled, obtaining the payloadManager() BatchManager > causes a block that waits the thread indefinitely on a PipedInputStream. > {code:java} > ODataClient client = ... > client.getOdataClient().getConfiguration().setUseChuncked( false ); > ODataBatchRequest br = client.getBatchRequestFactory().getBatchRequest( > <baseUrl> ); > //Thread waits indefinitely here, and the BatchManager is required to > addRequest to the Batch > BatchManager bm = br.payloadManager(); > {code} > The code locks on this IOUtils call because the *input* argument is a > *PipedInputStream*: > [https://github.com/apache/olingo-odata4/blob/4.7.1-RC01/lib/client-core/src/main/java/org/apache/olingo/client/core/uri/URIUtils.java#L289] > called from by: > [https://github.com/apache/olingo-odata4/blob/4.7.1-RC01/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/streamed/AbstractODataStreamedRequest.java#L117] > I believe the problem could be fixed if chunking disabled would cause the > _URIUtils.shouldUseRepeatableHttpBodyEntry_ function to return *true*, thus > the IOUtils.copy would not be executed until the Future of > AbstractODataStreamedRequest is satisfied. > [https://github.com/apache/olingo-odata4/blob/4.7.1-RC01/lib/client-core/src/main/java/org/apache/olingo/client/core/uri/URIUtils.java#L267] > > -- This message was sent by Atlassian Jira (v8.3.4#803005)