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

Pierre Villard updated NIFI-1732:
---------------------------------
    Attachment: NIFI-1732.xml

Template to reproduce the issue.
Found a solution, will submit a PR shortly.

> HandleHttpRequest should allow user to configure jetty timeout
> --------------------------------------------------------------
>
>                 Key: NIFI-1732
>                 URL: https://issues.apache.org/jira/browse/NIFI-1732
>             Project: Apache NiFi
>          Issue Type: Improvement
>          Components: Extensions
>            Reporter: Mark Payne
>            Assignee: Pierre Villard
>              Labels: beginner, newbie
>         Attachments: NIFI-1732.xml
>
>
> The following e-mail was received on the dev mailing list and points out an 
> issue in the HandleHttpRequest, which is that the user cannot configure the 
> jetty timeout. As a result, requests that take longer than 30 seconds timeout 
> causing some problems:
> {quote}
> Hi Nifi Team,
> I've been experimenting with the HandleHttpRequest/Response processors in 
> Nifi 0.5.1, and have noticed an issue that I've not been able to resolve. I'm 
> hoping that I'm simply missing a configuration item, but I've been unable to 
> find the solution.
> The scenario is this: HandleHttpRequest --> Long Processing (> 30 seconds) 
> --> HandleHttpResponse. It appears that the jetty server backing the 
> HandleHttpRequest has a built in idle time timeout of 30000 ms (see 
> jetty-server/src/main/java/org/eclipse/jetty/server/AbstractConnector.java 
> _idleTimeout value). In my test flow, 30 seconds after a HTTP requests comes 
> in, a second request comes into the flow. It has the same information, except 
> the http.context.identifier and the FlowFile UUID has changed, and the 
> http.dispatcher.type has changed from REQUEST to ERROR. From my online 
> research 
> (http://stackoverflow.com/questions/30786939/jetty-replay-request-on-timeout?),
>  this re-request with a type of error comes in after jetty determines that a 
> request has timed out.
> This would not normally be a big deal. I was able to RouteOnAttribute and 
> capture all ERROR requests without responding. However, those requests are 
> never cleared from the StandardHttpContextMap. I've tested this by setting 
> the number of requests allowed by the StandardHttpContextMap to 4, and done 4 
> of my long Request/Response tests. Each request is correctly responded to 
> eventually in my test, but because they take over 30 seconds each also 
> generates an ERROR request that is stored in the StandardHttpContextMap. If I 
> then leave the system alone for much longer than the Request Timeout 
> parameter in the StandardHttpContextMap and then attempt a request, I get a 
> 503 response saying that the queue is full and no requests are allowed. No 
> requests are allowed at all until I delete and recreate the Map.
> It seems unlikely to me that no one has attempted to use these processors in 
> this fashion. However, looking through the unit test for this processor it 
> seems like no where was a timeout tested over 30 seconds, so I thought it 
> worth a conversation.
> So finally, is there a configuration item to extend the jetty server's idle 
> timeout? Or is there a better way to ensure that the bogus requests don't get 
> stuck permanently in the StandardHttpContextMap? I appreciate any pointers 
> you can give.
> Thanks,
> Luke Coder
> BIT Systems
> CACI - NCS
> 941-907-8803 x705
> 6851 Professional Pkwy W
> Sarasota, FL 34240
> {quote}



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

Reply via email to