RE: java.lang.IllegalStateException: AsyncContext completed and/or Request lifecycle recycled ???

2019-05-24 Thread William Gosse
Is there any I can do to prevent this exception?

From: Peter Turcsanyi 
Sent: Friday, May 24, 2019 3:16 PM
To: users@nifi.apache.org
Subject: Re: java.lang.IllegalStateException: AsyncContext completed and/or 
Request lifecycle recycled ???

[CAUTION: This email originated from outside of Kodak Alaris. Do not click 
links or open attachments unless you recognize the sender and know the content 
is safe.]

The request has a timeout configured on HttpContextMap. If there is some delay 
in the flow and the response is being processed around the expiration time, it 
can happen that the clean-up mechanism in HttpContextMap closes the expired 
request and sends 503 response to the client (while the response thread is 
still processing). You get this error when the response processor tries to 
complete the AsyncContext but it is already completed (AsyncContext is the 
context that wraps the asynchronous request / reponse).
It is a kind of race condition between the response processor and the clean-up 
threads. Recently I was thinking about adding some synchronisation logic for 
these threads, but in the end I decided not to do so because the examples I 
found ([1], [2]) do not handle it. The exception seems to me harmless, it just 
signs that there was a race condition.

[1] 
https://www.logicbig.com/tutorials/java-ee-tutorial/java-servlet/servlet-async.html
[2] 
https://www.journaldev.com/2008/async-servlet-example

On Fri, May 24, 2019 at 5:59 PM William Gosse 
mailto:william.go...@aifoundry.com>> wrote:
Does anyone know what this exception is about:

2019-05-23 19:09:07,102 ERROR [Timer-Driven Process Thread-2] 
o.a.n.p.standard.HandleHttpResponse 
HandleHttpResponse[id=d7b2feb7-4a1e-38c8-07b9-e3d9448bc92b] Failed to complete 
HTTP Transaction for 
StandardFlowFileRecord[uuid=423f4435-95ed-43fa-b03d-d1798a40f21e,claim=StandardContentClaim
 [resourceClaim=StandardResourceClaim[id=1558638515089-4, container=default, 
section=4], offset=127, length=129],offset=0,name=1500212603.pdf,size=129] due 
to java.lang.IllegalStateException: AsyncContext completed and/or Request 
lifecycle recycled: java.lang.IllegalStateException: AsyncContext completed 
and/or Request lifecycle recycled
java.lang.IllegalStateException: AsyncContext completed and/or Request 
lifecycle recycled
at 
org.eclipse.jetty.server.AsyncContextState.state(AsyncContextState.java:54)
at 
org.eclipse.jetty.server.AsyncContextState.complete(AsyncContextState.java:99)
at 
org.apache.nifi.http.StandardHttpContextMap.complete(StandardHttpContextMap.java:142)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at 
org.apache.nifi.controller.service.StandardControllerServiceInvocationHandler.invoke(StandardControllerServiceInvocationHandler.java:87)
at com.sun.proxy.$Proxy87.complete(Unknown Source)
at 
org.apache.nifi.processors.standard.HandleHttpResponse.onTrigger(HandleHttpResponse.java:184)
at 
org.apache.nifi.processor.AbstractProcessor.onTrigger(AbstractProcessor.java:27)
at 
org.apache.nifi.controller.StandardProcessorNode.onTrigger(StandardProcessorNode.java:1162)
at 
org.apache.nifi.controller.tasks.ConnectableTask.invoke(ConnectableTask.java:209)
at 
org.apache.nifi.controller.scheduling.TimerDrivenSchedulingAgent$1.run(TimerDrivenSchedulingAgent.java:117)
at org.apache.nifi.engine.FlowEngine$2.run(FlowEngine.java:110)
at 
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
at 
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
at 
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)


Re: java.lang.IllegalStateException: AsyncContext completed and/or Request lifecycle recycled ???

2019-05-24 Thread Peter Turcsanyi
The request has a timeout configured on HttpContextMap. If there is some
delay in the flow and the response is being processed around the expiration
time, it can happen that the clean-up mechanism in HttpContextMap closes
the expired request and sends 503 response to the client (while the
response thread is still processing). You get this error when the response
processor tries to complete the AsyncContext but it is already completed
(AsyncContext is the context that wraps the asynchronous request / reponse).
It is a kind of race condition between the response processor and the
clean-up threads. Recently I was thinking about adding some synchronisation
logic for these threads, but in the end I decided not to do so because the
examples I found ([1], [2]) do not handle it. The exception seems to me
harmless, it just signs that there was a race condition.

[1]
https://www.logicbig.com/tutorials/java-ee-tutorial/java-servlet/servlet-async.html
[2] https://www.journaldev.com/2008/async-servlet-example

On Fri, May 24, 2019 at 5:59 PM William Gosse 
wrote:

> Does anyone know what this exception is about:
>
> 2019-05-23 19:09:07,102 ERROR [Timer-Driven Process Thread-2]
> o.a.n.p.standard.HandleHttpResponse
> HandleHttpResponse[id=d7b2feb7-4a1e-38c8-07b9-e3d9448bc92b] Failed to
> complete HTTP Transaction for
> StandardFlowFileRecord[uuid=423f4435-95ed-43fa-b03d-d1798a40f21e,claim=StandardContentClaim
> [resourceClaim=StandardResourceClaim[id=1558638515089-4, container=default,
> section=4], offset=127, length=129],offset=0,name=1500212603.pdf,size=129]
> due to java.lang.IllegalStateException: AsyncContext completed and/or
> Request lifecycle recycled: java.lang.IllegalStateException: AsyncContext
> completed and/or Request lifecycle recycled
> java.lang.IllegalStateException: AsyncContext completed and/or Request
> lifecycle recycled
> at
> org.eclipse.jetty.server.AsyncContextState.state(AsyncContextState.java:54)
> at
> org.eclipse.jetty.server.AsyncContextState.complete(AsyncContextState.java:99)
> at
> org.apache.nifi.http.StandardHttpContextMap.complete(StandardHttpContextMap.java:142)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:498)
> at
> org.apache.nifi.controller.service.StandardControllerServiceInvocationHandler.invoke(StandardControllerServiceInvocationHandler.java:87)
> at com.sun.proxy.$Proxy87.complete(Unknown Source)
> at
> org.apache.nifi.processors.standard.HandleHttpResponse.onTrigger(HandleHttpResponse.java:184)
> at
> org.apache.nifi.processor.AbstractProcessor.onTrigger(AbstractProcessor.java:27)
> at
> org.apache.nifi.controller.StandardProcessorNode.onTrigger(StandardProcessorNode.java:1162)
> at
> org.apache.nifi.controller.tasks.ConnectableTask.invoke(ConnectableTask.java:209)
> at
> org.apache.nifi.controller.scheduling.TimerDrivenSchedulingAgent$1.run(TimerDrivenSchedulingAgent.java:117)
> at org.apache.nifi.engine.FlowEngine$2.run(FlowEngine.java:110)
> at
> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
> at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
> at
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
> at
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
> at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
> at java.lang.Thread.run(Thread.java:748)
>


java.lang.IllegalStateException: AsyncContext completed and/or Request lifecycle recycled ???

2019-05-24 Thread William Gosse
Does anyone know what this exception is about:

2019-05-23 19:09:07,102 ERROR [Timer-Driven Process Thread-2] 
o.a.n.p.standard.HandleHttpResponse 
HandleHttpResponse[id=d7b2feb7-4a1e-38c8-07b9-e3d9448bc92b] Failed to complete 
HTTP Transaction for 
StandardFlowFileRecord[uuid=423f4435-95ed-43fa-b03d-d1798a40f21e,claim=StandardContentClaim
 [resourceClaim=StandardResourceClaim[id=1558638515089-4, container=default, 
section=4], offset=127, length=129],offset=0,name=1500212603.pdf,size=129] due 
to java.lang.IllegalStateException: AsyncContext completed and/or Request 
lifecycle recycled: java.lang.IllegalStateException: AsyncContext completed 
and/or Request lifecycle recycled
java.lang.IllegalStateException: AsyncContext completed and/or Request 
lifecycle recycled
at 
org.eclipse.jetty.server.AsyncContextState.state(AsyncContextState.java:54)
at 
org.eclipse.jetty.server.AsyncContextState.complete(AsyncContextState.java:99)
at 
org.apache.nifi.http.StandardHttpContextMap.complete(StandardHttpContextMap.java:142)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at 
org.apache.nifi.controller.service.StandardControllerServiceInvocationHandler.invoke(StandardControllerServiceInvocationHandler.java:87)
at com.sun.proxy.$Proxy87.complete(Unknown Source)
at 
org.apache.nifi.processors.standard.HandleHttpResponse.onTrigger(HandleHttpResponse.java:184)
at 
org.apache.nifi.processor.AbstractProcessor.onTrigger(AbstractProcessor.java:27)
at 
org.apache.nifi.controller.StandardProcessorNode.onTrigger(StandardProcessorNode.java:1162)
at 
org.apache.nifi.controller.tasks.ConnectableTask.invoke(ConnectableTask.java:209)
at 
org.apache.nifi.controller.scheduling.TimerDrivenSchedulingAgent$1.run(TimerDrivenSchedulingAgent.java:117)
at org.apache.nifi.engine.FlowEngine$2.run(FlowEngine.java:110)
at 
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
at 
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
at 
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)