[ 
https://issues.apache.org/jira/browse/NIFI-730?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14984153#comment-14984153
 ] 

Aldrin Piri commented on NIFI-730:
----------------------------------

Overall code, contrib and build are all good.  Tested both a single instance 
and clustered with various configurations on the queue.

The single instance seemed to be fine regardless of configuration.  There is 
some interesting behavior in terms of statistics where if I proceed to purge a 
queue from one view of the UI and have the UI open in another window, 
initiating another purge from that other window the second window's request 
will not start until the purge in the first UI completes and will not update 
any of the stats in that window until that process begins.

I made a local cluster with a manager and two nodes.  I create a flow 
consisting of a GenerateFlowFile connected to a non-running UpdateAttribute.  
The connection between them had a backpressure of 500k flowfiles.  I did the 
same approach as laid out above with the associated backpressure and this 
resulted in both nodes getting disconnected with stacktraces as shown below:

{code}
015-10-31 16:43:19,200 INFO [NiFi Web Server-123] 
org.apache.nifi.web.filter.RequestLogger Attempting request for (anonymous) GET 
http://localhost:8080/nifi-api/controller/proce
ss-groups/81b0bf63-3127-4eec-830b-28d325d8ce6c/connections/9d12660c-71ad-4895-acae-d0045987b90b/drop-requests/447fbe61-f0ed-3487-b5df-14e96c20251d
 (source ip: 127.0.0.1)
2015-10-31 16:43:19,206 ERROR [NiFi Web Server-123] 
o.a.nifi.web.api.config.ThrowableMapper An unexpected error has occurred: 
java.lang.ArithmeticException: / by zero. Returning
Internal Server Error response.
java.lang.ArithmeticException: / by zero
        at 
org.apache.nifi.web.api.dto.DtoFactory.createDropRequestDTO(DtoFactory.java:332)
 ~[classes/:na]
        at 
org.apache.nifi.web.StandardNiFiServiceFacade.getFlowFileDropRequest(StandardNiFiServiceFacade.java:2107)
 ~[classes/:0.3.1-SNAPSHOT]
        at 
org.apache.nifi.web.StandardNiFiServiceFacade$$FastClassBySpringCGLIB$$358780e0.invoke(<generated>)
 ~[spring-core-4.1.6.RELEASE.jar:0.3.1-SNAPSHOT]
        at 
org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204) 
~[spring-core-4.1.6.RELEASE.jar:4.1.6.RELEASE]
        at 
org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:717)
 ~[spring-aop-4.1.6.RELEASE.jar:4.1.6.RELEASE]
        at 
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
 ~[spring-aop-4.1.6.RELEASE.jar:4.1.6.RELEASE]
        at 
org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:85)
 ~[spring-aop-4.1.6.RELEASE.jar:4.1.6.RELEASE]
        at 
org.apache.nifi.web.NiFiServiceFacadeLock.getLock(NiFiServiceFacadeLock.java:139)
 ~[classes/:0.3.1-SNAPSHOT]
        at sun.reflect.GeneratedMethodAccessor66.invoke(Unknown Source) ~[na:na]
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
 ~[na:1.8.0_60]
        at java.lang.reflect.Method.invoke(Method.java:497) ~[na:1.8.0_60]
        at 
org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:621)
 ~[spring-aop-4.1.6.RELEASE.jar:4.1.6.RELEASE]
        at 
org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:610)
 ~[spring-aop-4.1.6.RELEASE.jar:4.1.6.RELEASE]
        at 
org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:68)
 ~[spring-aop-4.1.6.RELEASE.jar:4.1.6.RELEASE]
        at 
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
 ~[spring-aop-4.1.6.RELEASE.jar:4.1.6.RELEASE]
        at 
org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92)
 ~[spring-aop-4.1.6.RELEASE.jar:4.1.6.RELEASE]
        at 
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
 ~[spring-aop-4.1.6.RELEASE.jar:4.1.6.RELEASE]
        at 
org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:653)
 ~[spring-aop-4.1.6.RELEASE.jar:4.1.6.RELEASE]
        at 
org.apache.nifi.web.StandardNiFiServiceFacade$$EnhancerBySpringCGLIB$$d357524c.getFlowFileDropRequest(<generated>)
 ~[spring-core-4.1.6.RELEASE.jar:0.3.1-SNAPSHOT]
        at 
org.apache.nifi.web.api.ConnectionResource.getDropRequest(ConnectionResource.java:1030)
 ~[classes/:na]
        at 
org.apache.nifi.web.api.ConnectionResource$$FastClassBySpringCGLIB$$b8cd4334.invoke(<generated>)
 ~[spring-core-4.1.6.RELEASE.jar:na]
        at 
org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204) 
~[spring-core-4.1.6.RELEASE.jar:4.1.6.RELEASE]
        at 
org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:717)
 ~[spring-aop-4.1.6.RELEASE.jar:4.1.6.RELEASE]
        at 
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
 ~[spring-aop-4.1.6.RELEASE.jar:4.1.6.RELEASE]
        at 
org.springframework.security.access.intercept.aopalliance.MethodSecurityInterceptor.invoke(MethodSecurityInterceptor.java:64)
 ~[spring-security-core-3.2.7.RELEASE.jar:
3.2.7.RELEASE]
        at 
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
 ~[spring-aop-4.1.6.RELEASE.jar:4.1.6.RELEASE]
        at 
org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:653)
 ~[spring-aop-4.1.6.RELEASE.jar:4.1.6.RELEASE]
        at 
org.apache.nifi.web.api.ConnectionResource$$EnhancerBySpringCGLIB$$155c0ae4.getDropRequest(<generated>)
 ~[spring-core-4.1.6.RELEASE.jar:na]
        at sun.reflect.GeneratedMethodAccessor97.invoke(Unknown Source) ~[na:na]
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
 ~[na:1.8.0_60]
        at java.lang.reflect.Method.invoke(Method.java:497) ~[na:1.8.0_60]
        at 
com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60)
 ~[jersey-server-1.19.jar:1.19]
{code}

> Purge Queue from UI
> -------------------
>
>                 Key: NIFI-730
>                 URL: https://issues.apache.org/jira/browse/NIFI-730
>             Project: Apache NiFi
>          Issue Type: Improvement
>          Components: Core Framework, Core UI
>            Reporter: Brian Ghigiarelli
>            Priority: Minor
>             Fix For: 0.4.0
>
>         Attachments: blocked-ui.dump
>
>
> Making changes to connections between NiFi processors is difficult when data 
> is queued up between those processors. A workaround to this data build up is 
> to stop both processors, reduce/set the FlowFile Expiration of the connection 
> to a low number (e.g., 2 sec), then start the receiving processor to age off 
> the data.
> A more user-friendly solution is to provide a "Purge" or "Delete" context 
> menu option on the queues to remove the data and/or age it off immediately.



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

Reply via email to