Ronny Bremer created OLINGO-760:
-----------------------------------

             Summary: DELETE request through ODataServlet does never finish
                 Key: OLINGO-760
                 URL: https://issues.apache.org/jira/browse/OLINGO-760
             Project: Olingo
          Issue Type: Bug
    Affects Versions: V2 2.0.4
         Environment: WildFly 9.0.1 final
            Reporter: Ronny Bremer


I am using the ODataServlet, which extends HttpServlet and overrides "service" 
to handle the various OData requests.
All GET/PUT/PATCH/MERGE operations work flawlessly, however, when it comes to 
DELETE we observe the following behaviour:

Client sends a delete request to the servlet, like this:

DELETE /myear/OData2Service.svc/Tests('124') HTTP/1.1
Host: loaclhost:8080
Connection: keep-alive
Accept: application/json, text/javascript, */*; q=0.01
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_4) AppleWebKit/537.36 
(KHTML, like Gecko) Chrome/44.0.2403.130 Safari/537.36
Content-Type: application/json
Accept-Encoding: gzip, deflate, sdch
Accept-Language: en-US,de;q=0.8,en-US;q=0.6,en;q=0.4

WildFly dispatches the request to our ODataServlet and it processes it inside 
the "service" method. Eventually my deleteEntity handler gets called and I do 
the magic in my data model.
According to the OData v2 standard I should return 204 (NO_CONTENT) on success, 
so my final line of code looks like:
return ODataResponse.status(HttpStatusCodes.NO_CONTENT).build();
which will return control to the ODataServlet.

At that moment WildFly is answering to the client with the following headers:
HTTP/1.1 204 No Content
DataServiceVersion: 2.0
X-Powered-By: Undertow/1
Server: WildFly/9
Date: Thu, 13 Aug 2015 08:09:09 GMT
Connection: keep-alive
Content-Length: 0

So everything seems in order. But somehow the server has not fully handled the 
request, because any other request following on that connection will just 
"hang". So I can send new requests to WildFly but they will never get passed 
into the ODataServlet.service method.

To me this might be a bug inside the "service" method of the ODataServlet, 
possibly not returning the right info or enough info for WildFly to return 
control back to the client.

BTW: it doesn't matter if the next request is valid or not, even just putting 
in "garbage" (which should lead to an "HTTP/1.1 400 Bad Request" answer, will 
be ignored by WildFly.

Is there any way to track this down further?

Thank you for your time,

Ronny



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

Reply via email to