Details
-
Bug
-
Status: Closed
-
Blocker
-
Resolution: Resolved
-
(Java) V4 4.2.0
-
None
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