[ 
https://issues.apache.org/jira/browse/OLINGO-999?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Punith DG updated OLINGO-999:
-----------------------------
    Description: 
I am not able to add more than one request to a batch ChangeSet as the 
BatchManager has PipedOutputStream Writer that's causing thread to get into 
infinite loop.
Check the below sample code in which I'm trying to add requests. 

for loop {
ODataBatchRequest batchRequest = 
client.getBatchRequestFactory().getBatchRequest("serviceRootURI");
BatchManager payloadManager = batchRequest.payloadManager();
ODataChangeset changeset = payloadManager.addChangeset();
ODataEntityCreateRequest<ClientEntity> createRequest = 
client.getCUDRequestFactory()
                                                                                
            .getEntityCreateRequest(new URI("serviceRoot"), clientEntity);
createRequest.setFormat(ContentType.JSON);

changeset.addRequest(createRequest); // here the thread waits in infinite loop 
due to piped streams sync problem.
}

The problem is observed in line "request.batch(req, 
String.valueOf(contentId));" in addRequest() method of ODataChangesetImpl class.
It seems a known issue in Java - 
http://stackoverflow.com/questions/9171632/piped-input-stream-is-getting-locked

  was:
I am not able to add more than one request to a batch ChangeSet as the 
BatchManager has PipedOutputStream Writer that's causing thread to get into 
infinite loop.

Check the below sample code in which I'm trying to add requests. 

for loop {

ODataBatchRequest batchRequest = 
client.getBatchRequestFactory().getBatchRequest("serviceRootURI");
BatchManager payloadManager = batchRequest.payloadManager();
ODataChangeset changeset = payloadManager.addChangeset();

ODataEntityCreateRequest<ClientEntity> createRequest = 
client.getCUDRequestFactory()
                                                                                
            .getEntityCreateRequest(new URI("serviceRoot"), clientEntity);
createRequest.setFormat(ContentType.JSON);

changeset.addRequest(createRequest); // here the thread waits in infinite loop 
due to piped streams sync problem.
}

The problem is observed in line "request.batch(req, 
String.valueOf(contentId));" in addRequest() method of ODataChangesetImpl class.

It seems a known issue in Java - 
http://stackoverflow.com/questions/9171632/piped-input-stream-is-getting-locked


> Cannot add more than one request into ChangSet - thread halts in infinite loop
> ------------------------------------------------------------------------------
>
>                 Key: OLINGO-999
>                 URL: https://issues.apache.org/jira/browse/OLINGO-999
>             Project: Olingo
>          Issue Type: Bug
>          Components: odata4-client, odata4-commons
>    Affects Versions: (Java) V4 4.2.0
>            Reporter: Punith DG
>            Priority: Blocker
>              Labels: batch, changeset, thread-safety
>
> I am not able to add more than one request to a batch ChangeSet as the 
> BatchManager has PipedOutputStream Writer that's causing thread to get into 
> infinite loop.
> Check the below sample code in which I'm trying to add requests. 
> for loop {
> ODataBatchRequest batchRequest = 
> client.getBatchRequestFactory().getBatchRequest("serviceRootURI");
> BatchManager payloadManager = batchRequest.payloadManager();
> ODataChangeset changeset = payloadManager.addChangeset();
> ODataEntityCreateRequest<ClientEntity> createRequest = 
> client.getCUDRequestFactory()
>                                                                               
>               .getEntityCreateRequest(new URI("serviceRoot"), clientEntity);
> createRequest.setFormat(ContentType.JSON);
> changeset.addRequest(createRequest); // here the thread waits in infinite 
> loop due to piped streams sync problem.
> }
> The problem is observed in line "request.batch(req, 
> String.valueOf(contentId));" in addRequest() method of ODataChangesetImpl 
> class.
> It seems a known issue in Java - 
> http://stackoverflow.com/questions/9171632/piped-input-stream-is-getting-locked



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to