[
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. The
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. The
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. The
> 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)