You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@nifi.apache.org by Boris Tyukin <bo...@boristyukin.com> on 2018/05/22 19:32:47 UTC

InvokeScriptedProcessor from a shared folder

Hello,

I created a custom groovy processor and saved it in a file. That file was
placed on NFS share and I pointed NiFi's InvokeScriptedProcessor to it.

When I started a processor, I got a weird error that it failed custom
validation.

If I copy that file out of NFS to a local directory, it works fine.

It seems that NiFi is trying to obtain a file lock or something that NFS
does not support.

Can someone shed some light on this? We were hoping to keep scripted
processors on NFS so they accessible from all the nodes and also deployed
to a single place.

Thanks,
Boris

Re: InvokeScriptedProcessor from a shared folder

Posted by Boris Tyukin <bo...@boristyukin.com>.
awesome!!! you guys rock! here is a virtual hug :)

╰(*´︶`*)╯

My teammate said because Matt is in Orlando, we can give him a real hug! :)

thanks a lot, this was driving us crazy.

Boris

On Wed, May 23, 2018 at 9:56 AM, Matt Burgess <ma...@apache.org> wrote:

> Boris,
>
> Bryan found the bug, we were setting the results object to null in one
> place instead of an empty collection. I've written up NIFI-5230 [1] to
> cover it, and issued a PR [2] to fix it.
>
> Regards,
> Matt
>
> [1] https://issues.apache.org/jira/browse/NIFI-5230
> [2] https://github.com/apache/nifi/pull/2734
>
> On Tue, May 22, 2018 at 5:00 PM, Boris Tyukin <bo...@boristyukin.com>
> wrote:
> > Hi Bryan,
> >
> > yes, here is the trace:
> >
> > 2018-05-22 16:00:49,339 WARN [NiFi Web Server-805]
> > o.a.n.controller.StandardProcessorNode Failed during validation
> > java.lang.NullPointerException: null
> >     at
> > org.apache.nifi.processors.script.InvokeScriptedProcessor.
> customValidate(InvokeScriptedProcessor.java:476)
> >     at
> > org.apache.nifi.components.AbstractConfigurableComponent.validate(
> AbstractConfigurableComponent.java:126)
> >     at
> > org.apache.nifi.controller.AbstractConfiguredComponent.validate(
> AbstractConfiguredComponent.java:363)
> >     at
> > org.apache.nifi.controller.StandardProcessorNode.isValid(
> StandardProcessorNode.java:995)
> >     at
> > org.apache.nifi.groups.StandardProcessGroup.getCounts(
> StandardProcessGroup.java:300)
> >     at
> > org.apache.nifi.groups.StandardProcessGroup.getCounts(
> StandardProcessGroup.java:334)
> >     at
> > org.apache.nifi.groups.StandardProcessGroup.getCounts(
> StandardProcessGroup.java:334)
> >     at
> > org.apache.nifi.web.controller.ControllerFacade.getControllerStatus(
> ControllerFacade.java:583)
> >     at
> > org.apache.nifi.web.controller.ControllerFacade$$
> FastClassBySpringCGLIB$$5a42ba54.invoke(<generated>)
> >     at
> > org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
> >     at
> > org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.
> invokeJoinpoint(CglibAopProxy.java:738)
> >     at
> > org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(
> ReflectiveMethodInvocation.java:157)
> >     at
> > org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(
> ExposeInvocationInterceptor.java:92)
> >     at
> > org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(
> ReflectiveMethodInvocation.java:179)
> >     at
> > org.springframework.aop.framework.CglibAopProxy$
> DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:673)
> >     at
> > org.apache.nifi.web.controller.ControllerFacade$$EnhancerBySpringCGLIB$$
> e1de9216.getControllerStatus(<generated>)
> >     at
> > org.apache.nifi.web.StandardNiFiServiceFacade.getControllerStatus(
> StandardNiFiServiceFacade.java:2712)
> >     at
> > org.apache.nifi.web.StandardNiFiServiceFacade$$FastClassBySpringCGLIB$$
> 358780e0.invoke(<generated>)
> >     at
> > org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
> >     at
> > org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.
> invokeJoinpoint(CglibAopProxy.java:738)
> >     at
> > org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(
> ReflectiveMethodInvocation.java:157)
> >     at
> > org.springframework.aop.aspectj.MethodInvocationProceedingJoin
> Point.proceed(MethodInvocationProceedingJoinPoint.java:85)
> >     at
> > org.apache.nifi.web.NiFiServiceFacadeLock.proceedWithReadLock(
> NiFiServiceFacadeLock.java:155)
> >     at
> > org.apache.nifi.web.NiFiServiceFacadeLock.getLock(
> NiFiServiceFacadeLock.java:120)
> >     at sun.reflect.GeneratedMethodAccessor333.invoke(Unknown Source)
> >     at
> > sun.reflect.DelegatingMethodAccessorImpl.invoke(
> DelegatingMethodAccessorImpl.java:43)
> >     at java.lang.reflect.Method.invoke(Method.java:498)
> >     at
> > org.springframework.aop.aspectj.AbstractAspectJAdvice.
> invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:629)
> >     at
> > org.springframework.aop.aspectj.AbstractAspectJAdvice.
> invokeAdviceMethod(AbstractAspectJAdvice.java:618)
> >     at
> > org.springframework.aop.aspectj.AspectJAroundAdvice.
> invoke(AspectJAroundAdvice.java:70)
> >     at
> > org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(
> ReflectiveMethodInvocation.java:179)
> >     at
> > org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(
> ExposeInvocationInterceptor.java:92)
> >     at
> > org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(
> ReflectiveMethodInvocation.java:179)
> >     at
> > org.springframework.aop.framework.CglibAopProxy$
> DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:673)
> >     at
> > org.apache.nifi.web.StandardNiFiServiceFacade$$EnhancerBySpringCGLIB$$
> 6298ded6.getControllerStatus(<generated>)
> >     at
> > org.apache.nifi.web.api.FlowResource.getControllerStatus(
> FlowResource.java:862)
> >     at sun.reflect.GeneratedMethodAccessor384.invoke(Unknown Source)
> >     at
> > sun.reflect.DelegatingMethodAccessorImpl.invoke(
> DelegatingMethodAccessorImpl.java:43)
> >     at java.lang.reflect.Method.invoke(Method.java:498)
> >     at
> > org.glassfish.jersey.server.model.internal.
> ResourceMethodInvocationHandlerFactory.lambda$static$0(
> ResourceMethodInvocationHandlerFactory.java:76)
> >     at
> > org.glassfish.jersey.server.model.internal.
> AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDisp
> atcher.java:148)
> >     at
> > org.glassfish.jersey.server.model.internal.
> AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDisp
> atcher.java:191)
> >     at
> > org.glassfish.jersey.server.model.internal.
> JavaResourceMethodDispatcherProvider$ResponseOutInvoker.doDispatch(
> JavaResourceMethodDispatcherProvider.java:200)
> >     at
> > org.glassfish.jersey.server.model.internal.
> AbstractJavaResourceMethodDispatcher.dispatch(
> AbstractJavaResourceMethodDispatcher.java:103)
> >     at
> > org.glassfish.jersey.server.model.ResourceMethodInvoker.
> invoke(ResourceMethodInvoker.java:493)
> >     at
> > org.glassfish.jersey.server.model.ResourceMethodInvoker.
> apply(ResourceMethodInvoker.java:415)
> >     at
> > org.glassfish.jersey.server.model.ResourceMethodInvoker.
> apply(ResourceMethodInvoker.java:104)
> >     at
> > org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:277)
> >     at org.glassfish.jersey.internal.Errors$1.call(Errors.java:272)
> >     at org.glassfish.jersey.internal.Errors$1.call(Errors.java:268)
> >     at org.glassfish.jersey.internal.Errors.process(Errors.java:316)
> >     at org.glassfish.jersey.internal.Errors.process(Errors.java:298)
> >     at org.glassfish.jersey.internal.Errors.process(Errors.java:268)
> >     at
> > org.glassfish.jersey.process.internal.RequestScope.
> runInScope(RequestScope.java:289)
> >     at
> > org.glassfish.jersey.server.ServerRuntime.process(
> ServerRuntime.java:256)
> >     at
> > org.glassfish.jersey.server.ApplicationHandler.handle(
> ApplicationHandler.java:703)
> >     at
> > org.glassfish.jersey.servlet.WebComponent.serviceImpl(
> WebComponent.java:416)
> >     at
> > org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:370)
> >     at
> > org.glassfish.jersey.servlet.ServletContainer.service(
> ServletContainer.java:389)
> >     at
> > org.glassfish.jersey.servlet.ServletContainer.service(
> ServletContainer.java:342)
> >     at
> > org.glassfish.jersey.servlet.ServletContainer.service(
> ServletContainer.java:229)
> >     at
> > org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:841)
> >     at
> > org.eclipse.jetty.servlet.ServletHandler$CachedChain.
> doFilter(ServletHandler.java:1634)
> >     at
> > org.apache.nifi.web.filter.RequestLogger.doFilter(RequestLogger.java:66)
> >     at
> > org.eclipse.jetty.servlet.ServletHandler$CachedChain.
> doFilter(ServletHandler.java:1621)
> >     at
> > org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:317)
> >     at
> > org.springframework.security.web.access.intercept.
> FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:127)
> >     at
> > org.springframework.security.web.access.intercept.
> FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:91)
> >     at
> > org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:331)
> >     at
> > org.springframework.security.web.session.SessionManagementFilter.
> doFilter(SessionManagementFilter.java:137)
> >     at
> > org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:331)
> >     at
> > org.springframework.security.web.authentication.
> AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.
> java:111)
> >     at
> > org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:331)
> >     at
> > org.apache.nifi.web.security.NiFiAuthenticationFilter.doFilter(
> NiFiAuthenticationFilter.java:60)
> >     at
> > org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:331)
> >     at
> > org.apache.nifi.web.security.NiFiAuthenticationFilter.doFilter(
> NiFiAuthenticationFilter.java:60)
> >     at
> > org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:331)
> >     at
> > org.apache.nifi.web.security.NiFiAuthenticationFilter.authenticate(
> NiFiAuthenticationFilter.java:84)
> >     at
> > org.apache.nifi.web.security.NiFiAuthenticationFilter.doFilter(
> NiFiAuthenticationFilter.java:58)
> >     at
> > org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:331)
> >     at
> > org.apache.nifi.web.security.NiFiAuthenticationFilter.authenticate(
> NiFiAuthenticationFilter.java:84)
> >     at
> > org.apache.nifi.web.security.NiFiAuthenticationFilter.doFilter(
> NiFiAuthenticationFilter.java:58)
> >     at
> > org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:331)
> >     at
> > org.springframework.security.web.FilterChainProxy.doFilterInternal(
> FilterChainProxy.java:214)
> >     at
> > org.springframework.security.web.FilterChainProxy.doFilter(
> FilterChainProxy.java:177)
> >     at
> > org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(
> DelegatingFilterProxy.java:346)
> >     at
> > org.springframework.web.filter.DelegatingFilterProxy.doFilter(
> DelegatingFilterProxy.java:262)
> >     at
> > org.eclipse.jetty.servlet.ServletHandler$CachedChain.
> doFilter(ServletHandler.java:1621)
> >     at org.apache.nifi.web.filter.TimerFilter.doFilter(
> TimerFilter.java:51)
> >     at
> > org.eclipse.jetty.servlet.ServletHandler$CachedChain.
> doFilter(ServletHandler.java:1613)
> >     at
> > org.apache.nifi.web.server.JettyServer$2.doFilter(JettyServer.java:981)
> >     at
> > org.eclipse.jetty.servlet.ServletHandler$CachedChain.
> doFilter(ServletHandler.java:1621)
> >     at
> > org.eclipse.jetty.servlet.ServletHandler.doHandle(
> ServletHandler.java:541)
> >     at
> > org.eclipse.jetty.server.handler.ScopedHandler.handle(
> ScopedHandler.java:143)
> >     at
> > org.eclipse.jetty.security.SecurityHandler.handle(
> SecurityHandler.java:548)
> >     at
> > org.eclipse.jetty.server.handler.HandlerWrapper.handle(
> HandlerWrapper.java:132)
> >     at
> > org.eclipse.jetty.server.handler.ScopedHandler.
> nextHandle(ScopedHandler.java:190)
> >     at
> > org.eclipse.jetty.server.session.SessionHandler.
> doHandle(SessionHandler.java:1593)
> >     at
> > org.eclipse.jetty.server.handler.ScopedHandler.
> nextHandle(ScopedHandler.java:188)
> >     at
> > org.eclipse.jetty.server.handler.ContextHandler.
> doHandle(ContextHandler.java:1239)
> >     at
> > org.eclipse.jetty.server.handler.ScopedHandler.
> nextScope(ScopedHandler.java:168)
> >     at
> > org.eclipse.jetty.servlet.ServletHandler.doScope(
> ServletHandler.java:481)
> >     at
> > org.eclipse.jetty.server.session.SessionHandler.
> doScope(SessionHandler.java:1562)
> >     at
> > org.eclipse.jetty.server.handler.ScopedHandler.
> nextScope(ScopedHandler.java:166)
> >     at
> > org.eclipse.jetty.server.handler.ContextHandler.
> doScope(ContextHandler.java:1141)
> >     at
> > org.eclipse.jetty.server.handler.ScopedHandler.handle(
> ScopedHandler.java:141)
> >     at
> > org.eclipse.jetty.server.handler.HandlerCollection.
> handle(HandlerCollection.java:118)
> >     at
> > org.eclipse.jetty.server.handler.gzip.GzipHandler.
> handle(GzipHandler.java:561)
> >     at
> > org.eclipse.jetty.server.handler.HandlerList.handle(HandlerList.java:52)
> >     at
> > org.eclipse.jetty.server.handler.HandlerWrapper.handle(
> HandlerWrapper.java:132)
> >     at org.eclipse.jetty.server.Server.handle(Server.java:564)
> >     at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:320)
> >     at
> > org.eclipse.jetty.server.HttpConnection.onFillable(
> HttpConnection.java:251)
> >     at
> > org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(
> AbstractConnection.java:279)
> >     at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:110)
> >     at
> > org.eclipse.jetty.io.ssl.SslConnection.onFillable(
> SslConnection.java:258)
> >     at
> > org.eclipse.jetty.io.ssl.SslConnection$3.succeeded(
> SslConnection.java:147)
> >     at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:110)
> >     at org.eclipse.jetty.io.ChannelEndPoint$2.run(
> ChannelEndPoint.java:124)
> >     at
> > org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(
> QueuedThreadPool.java:672)
> >     at
> > org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(
> QueuedThreadPool.java:590)
> >     at java.lang.Thread.run(Thread.java:748)
> > 2018-05-22 16:00:53,830 WARN [NiFi Web Server-793]
> > o.a.n.controller.StandardProcessorNode Failed during validation
> > java.lang.NullPointerException: null
> >     at
> > org.apache.nifi.processors.script.InvokeScriptedProcessor.
> customValidate(InvokeScriptedProcessor.java:476)
> >     at
> > org.apache.nifi.components.AbstractConfigurableComponent.validate(
> AbstractConfigurableComponent.java:126)
> >     at
> > org.apache.nifi.controller.AbstractConfiguredComponent.validate(
> AbstractConfiguredComponent.java:363)
> >     at
> > org.apache.nifi.controller.StandardProcessorNode.isValid(
> StandardProcessorNode.java:995)
> >     at
> > org.apache.nifi.controller.FlowController.getProcessorStatus(
> FlowController.java:3210)
> >     at
> > org.apache.nifi.controller.FlowController.getGroupStatus(
> FlowController.java:2800)
> >
> >
> > On Tue, May 22, 2018 at 4:41 PM, Bryan Bende <bb...@gmail.com> wrote:
> >>
> >> Is there a stacktrace in nifi-app.log at the time you got the validation
> >> error?
> >>
> >> On Tue, May 22, 2018 at 4:35 PM, Boris Tyukin <bo...@boristyukin.com>
> >> wrote:
> >> > I tried both along with nifi restart.
> >> >
> >> > it kinda works now. But this is CRAZY. If someone can explain this, I
> >> > would
> >> > give a hug :)
> >> >
> >> > My steps:
> >> >
> >> > 1. Drop new InvokeScriptedProcessor on canvas. Open properties and
> point
> >> > it
> >> > to my groovy file on NFS. Pick Groovy as a lang. Hit Apply
> >> > 2. Go back in the processor properties to populate my custom
> properties.
> >> > Hit
> >> > apply
> >> > --> Error bulletin popup - cannot validate bla bla
> >> >
> >> > 3. Open properties again. change path to groovy script to 1234. Apply
> >> >>> obviously error message that script does not exist
> >> >
> >> > 4. Open properties again and change path BACK to NFS path from step 1.
> >> > This
> >> > is exactly the same file/path. Hit Apply
> >> >>> All works now, no errors
> >> >
> >> > After NiFi restart processor still works, no errors. But if I start
> over
> >> > from step 1, I have to repeat all steps again.
> >> >
> >> > On Tue, May 22, 2018 at 4:22 PM, Shawn Weeks <
> sweeks@weeksconsulting.us>
> >> > wrote:
> >> >>
> >> >> Were you disabling the processor or just stopping it? I've found with
> >> >> the
> >> >> scripted processors they will get in an odd state and that's the only
> >> >> way to
> >> >> reset it.
> >> >>
> >> >>
> >> >> Shawn
> >> >>
> >> >> ________________________________
> >> >> From: Boris Tyukin <bo...@boristyukin.com>
> >> >> Sent: Tuesday, May 22, 2018 3:07:36 PM
> >> >> To: users@nifi.apache.org
> >> >> Subject: Re: InvokeScriptedProcessor from a shared folder
> >> >>
> >> >> well it works now...after I recreated processor 3 times and was
> >> >> changing
> >> >> parameters back and forth and now that error is gone.
> >> >>
> >> >> we did not change permissions on nfs or file so not sure why nifi did
> >> >> not
> >> >> like it at first.
> >> >>
> >> >> On Tue, May 22, 2018 at 3:32 PM, Boris Tyukin <boris@boristyukin.com
> >
> >> >> wrote:
> >> >>
> >> >> Hello,
> >> >>
> >> >> I created a custom groovy processor and saved it in a file. That file
> >> >> was
> >> >> placed on NFS share and I pointed NiFi's InvokeScriptedProcessor to
> it.
> >> >>
> >> >> When I started a processor, I got a weird error that it failed custom
> >> >> validation.
> >> >>
> >> >> If I copy that file out of NFS to a local directory, it works fine.
> >> >>
> >> >> It seems that NiFi is trying to obtain a file lock or something that
> >> >> NFS
> >> >> does not support.
> >> >>
> >> >> Can someone shed some light on this? We were hoping to keep scripted
> >> >> processors on NFS so they accessible from all the nodes and also
> >> >> deployed to
> >> >> a single place.
> >> >>
> >> >> Thanks,
> >> >> Boris
> >> >>
> >> >>
> >> >
> >
> >
>

Re: InvokeScriptedProcessor from a shared folder

Posted by Matt Burgess <ma...@apache.org>.
Boris,

Bryan found the bug, we were setting the results object to null in one
place instead of an empty collection. I've written up NIFI-5230 [1] to
cover it, and issued a PR [2] to fix it.

Regards,
Matt

[1] https://issues.apache.org/jira/browse/NIFI-5230
[2] https://github.com/apache/nifi/pull/2734

On Tue, May 22, 2018 at 5:00 PM, Boris Tyukin <bo...@boristyukin.com> wrote:
> Hi Bryan,
>
> yes, here is the trace:
>
> 2018-05-22 16:00:49,339 WARN [NiFi Web Server-805]
> o.a.n.controller.StandardProcessorNode Failed during validation
> java.lang.NullPointerException: null
>     at
> org.apache.nifi.processors.script.InvokeScriptedProcessor.customValidate(InvokeScriptedProcessor.java:476)
>     at
> org.apache.nifi.components.AbstractConfigurableComponent.validate(AbstractConfigurableComponent.java:126)
>     at
> org.apache.nifi.controller.AbstractConfiguredComponent.validate(AbstractConfiguredComponent.java:363)
>     at
> org.apache.nifi.controller.StandardProcessorNode.isValid(StandardProcessorNode.java:995)
>     at
> org.apache.nifi.groups.StandardProcessGroup.getCounts(StandardProcessGroup.java:300)
>     at
> org.apache.nifi.groups.StandardProcessGroup.getCounts(StandardProcessGroup.java:334)
>     at
> org.apache.nifi.groups.StandardProcessGroup.getCounts(StandardProcessGroup.java:334)
>     at
> org.apache.nifi.web.controller.ControllerFacade.getControllerStatus(ControllerFacade.java:583)
>     at
> org.apache.nifi.web.controller.ControllerFacade$$FastClassBySpringCGLIB$$5a42ba54.invoke(<generated>)
>     at
> org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
>     at
> org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:738)
>     at
> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
>     at
> org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92)
>     at
> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
>     at
> org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:673)
>     at
> org.apache.nifi.web.controller.ControllerFacade$$EnhancerBySpringCGLIB$$e1de9216.getControllerStatus(<generated>)
>     at
> org.apache.nifi.web.StandardNiFiServiceFacade.getControllerStatus(StandardNiFiServiceFacade.java:2712)
>     at
> org.apache.nifi.web.StandardNiFiServiceFacade$$FastClassBySpringCGLIB$$358780e0.invoke(<generated>)
>     at
> org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
>     at
> org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:738)
>     at
> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
>     at
> org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:85)
>     at
> org.apache.nifi.web.NiFiServiceFacadeLock.proceedWithReadLock(NiFiServiceFacadeLock.java:155)
>     at
> org.apache.nifi.web.NiFiServiceFacadeLock.getLock(NiFiServiceFacadeLock.java:120)
>     at sun.reflect.GeneratedMethodAccessor333.invoke(Unknown Source)
>     at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>     at java.lang.reflect.Method.invoke(Method.java:498)
>     at
> org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:629)
>     at
> org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:618)
>     at
> org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:70)
>     at
> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
>     at
> org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92)
>     at
> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
>     at
> org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:673)
>     at
> org.apache.nifi.web.StandardNiFiServiceFacade$$EnhancerBySpringCGLIB$$6298ded6.getControllerStatus(<generated>)
>     at
> org.apache.nifi.web.api.FlowResource.getControllerStatus(FlowResource.java:862)
>     at sun.reflect.GeneratedMethodAccessor384.invoke(Unknown Source)
>     at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>     at java.lang.reflect.Method.invoke(Method.java:498)
>     at
> org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:76)
>     at
> org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:148)
>     at
> org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:191)
>     at
> org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$ResponseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:200)
>     at
> org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:103)
>     at
> org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:493)
>     at
> org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:415)
>     at
> org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:104)
>     at
> org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:277)
>     at org.glassfish.jersey.internal.Errors$1.call(Errors.java:272)
>     at org.glassfish.jersey.internal.Errors$1.call(Errors.java:268)
>     at org.glassfish.jersey.internal.Errors.process(Errors.java:316)
>     at org.glassfish.jersey.internal.Errors.process(Errors.java:298)
>     at org.glassfish.jersey.internal.Errors.process(Errors.java:268)
>     at
> org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:289)
>     at
> org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:256)
>     at
> org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:703)
>     at
> org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:416)
>     at
> org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:370)
>     at
> org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:389)
>     at
> org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:342)
>     at
> org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:229)
>     at
> org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:841)
>     at
> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1634)
>     at
> org.apache.nifi.web.filter.RequestLogger.doFilter(RequestLogger.java:66)
>     at
> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1621)
>     at
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:317)
>     at
> org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:127)
>     at
> org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:91)
>     at
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
>     at
> org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:137)
>     at
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
>     at
> org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:111)
>     at
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
>     at
> org.apache.nifi.web.security.NiFiAuthenticationFilter.doFilter(NiFiAuthenticationFilter.java:60)
>     at
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
>     at
> org.apache.nifi.web.security.NiFiAuthenticationFilter.doFilter(NiFiAuthenticationFilter.java:60)
>     at
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
>     at
> org.apache.nifi.web.security.NiFiAuthenticationFilter.authenticate(NiFiAuthenticationFilter.java:84)
>     at
> org.apache.nifi.web.security.NiFiAuthenticationFilter.doFilter(NiFiAuthenticationFilter.java:58)
>     at
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
>     at
> org.apache.nifi.web.security.NiFiAuthenticationFilter.authenticate(NiFiAuthenticationFilter.java:84)
>     at
> org.apache.nifi.web.security.NiFiAuthenticationFilter.doFilter(NiFiAuthenticationFilter.java:58)
>     at
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
>     at
> org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:214)
>     at
> org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:177)
>     at
> org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)
>     at
> org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:262)
>     at
> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1621)
>     at org.apache.nifi.web.filter.TimerFilter.doFilter(TimerFilter.java:51)
>     at
> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1613)
>     at
> org.apache.nifi.web.server.JettyServer$2.doFilter(JettyServer.java:981)
>     at
> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1621)
>     at
> org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:541)
>     at
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
>     at
> org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)
>     at
> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
>     at
> org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:190)
>     at
> org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1593)
>     at
> org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:188)
>     at
> org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1239)
>     at
> org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:168)
>     at
> org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:481)
>     at
> org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1562)
>     at
> org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:166)
>     at
> org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1141)
>     at
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
>     at
> org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:118)
>     at
> org.eclipse.jetty.server.handler.gzip.GzipHandler.handle(GzipHandler.java:561)
>     at
> org.eclipse.jetty.server.handler.HandlerList.handle(HandlerList.java:52)
>     at
> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
>     at org.eclipse.jetty.server.Server.handle(Server.java:564)
>     at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:320)
>     at
> org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:251)
>     at
> org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:279)
>     at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:110)
>     at
> org.eclipse.jetty.io.ssl.SslConnection.onFillable(SslConnection.java:258)
>     at
> org.eclipse.jetty.io.ssl.SslConnection$3.succeeded(SslConnection.java:147)
>     at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:110)
>     at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:124)
>     at
> org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:672)
>     at
> org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:590)
>     at java.lang.Thread.run(Thread.java:748)
> 2018-05-22 16:00:53,830 WARN [NiFi Web Server-793]
> o.a.n.controller.StandardProcessorNode Failed during validation
> java.lang.NullPointerException: null
>     at
> org.apache.nifi.processors.script.InvokeScriptedProcessor.customValidate(InvokeScriptedProcessor.java:476)
>     at
> org.apache.nifi.components.AbstractConfigurableComponent.validate(AbstractConfigurableComponent.java:126)
>     at
> org.apache.nifi.controller.AbstractConfiguredComponent.validate(AbstractConfiguredComponent.java:363)
>     at
> org.apache.nifi.controller.StandardProcessorNode.isValid(StandardProcessorNode.java:995)
>     at
> org.apache.nifi.controller.FlowController.getProcessorStatus(FlowController.java:3210)
>     at
> org.apache.nifi.controller.FlowController.getGroupStatus(FlowController.java:2800)
>
>
> On Tue, May 22, 2018 at 4:41 PM, Bryan Bende <bb...@gmail.com> wrote:
>>
>> Is there a stacktrace in nifi-app.log at the time you got the validation
>> error?
>>
>> On Tue, May 22, 2018 at 4:35 PM, Boris Tyukin <bo...@boristyukin.com>
>> wrote:
>> > I tried both along with nifi restart.
>> >
>> > it kinda works now. But this is CRAZY. If someone can explain this, I
>> > would
>> > give a hug :)
>> >
>> > My steps:
>> >
>> > 1. Drop new InvokeScriptedProcessor on canvas. Open properties and point
>> > it
>> > to my groovy file on NFS. Pick Groovy as a lang. Hit Apply
>> > 2. Go back in the processor properties to populate my custom properties.
>> > Hit
>> > apply
>> > --> Error bulletin popup - cannot validate bla bla
>> >
>> > 3. Open properties again. change path to groovy script to 1234. Apply
>> >>> obviously error message that script does not exist
>> >
>> > 4. Open properties again and change path BACK to NFS path from step 1.
>> > This
>> > is exactly the same file/path. Hit Apply
>> >>> All works now, no errors
>> >
>> > After NiFi restart processor still works, no errors. But if I start over
>> > from step 1, I have to repeat all steps again.
>> >
>> > On Tue, May 22, 2018 at 4:22 PM, Shawn Weeks <sw...@weeksconsulting.us>
>> > wrote:
>> >>
>> >> Were you disabling the processor or just stopping it? I've found with
>> >> the
>> >> scripted processors they will get in an odd state and that's the only
>> >> way to
>> >> reset it.
>> >>
>> >>
>> >> Shawn
>> >>
>> >> ________________________________
>> >> From: Boris Tyukin <bo...@boristyukin.com>
>> >> Sent: Tuesday, May 22, 2018 3:07:36 PM
>> >> To: users@nifi.apache.org
>> >> Subject: Re: InvokeScriptedProcessor from a shared folder
>> >>
>> >> well it works now...after I recreated processor 3 times and was
>> >> changing
>> >> parameters back and forth and now that error is gone.
>> >>
>> >> we did not change permissions on nfs or file so not sure why nifi did
>> >> not
>> >> like it at first.
>> >>
>> >> On Tue, May 22, 2018 at 3:32 PM, Boris Tyukin <bo...@boristyukin.com>
>> >> wrote:
>> >>
>> >> Hello,
>> >>
>> >> I created a custom groovy processor and saved it in a file. That file
>> >> was
>> >> placed on NFS share and I pointed NiFi's InvokeScriptedProcessor to it.
>> >>
>> >> When I started a processor, I got a weird error that it failed custom
>> >> validation.
>> >>
>> >> If I copy that file out of NFS to a local directory, it works fine.
>> >>
>> >> It seems that NiFi is trying to obtain a file lock or something that
>> >> NFS
>> >> does not support.
>> >>
>> >> Can someone shed some light on this? We were hoping to keep scripted
>> >> processors on NFS so they accessible from all the nodes and also
>> >> deployed to
>> >> a single place.
>> >>
>> >> Thanks,
>> >> Boris
>> >>
>> >>
>> >
>
>

Re: InvokeScriptedProcessor from a shared folder

Posted by Boris Tyukin <bo...@boristyukin.com>.
Hi Bryan,

yes, here is the trace:

2018-05-22 16:00:49,339 WARN [NiFi Web Server-805]
o.a.n.controller.StandardProcessorNode
Failed during validation
java.lang.NullPointerException: null
    at org.apache.nifi.processors.script.InvokeScriptedProcessor.
customValidate(InvokeScriptedProcessor.java:476)
    at org.apache.nifi.components.AbstractConfigurableComponent.validate(
AbstractConfigurableComponent.java:126)
    at org.apache.nifi.controller.AbstractConfiguredComponent.validate(
AbstractConfiguredComponent.java:363)
    at org.apache.nifi.controller.StandardProcessorNode.isValid(
StandardProcessorNode.java:995)
    at org.apache.nifi.groups.StandardProcessGroup.getCounts(
StandardProcessGroup.java:300)
    at org.apache.nifi.groups.StandardProcessGroup.getCounts(
StandardProcessGroup.java:334)
    at org.apache.nifi.groups.StandardProcessGroup.getCounts(
StandardProcessGroup.java:334)
    at org.apache.nifi.web.controller.ControllerFacade.getControllerStatus(
ControllerFacade.java:583)
    at org.apache.nifi.web.controller.ControllerFacade$$
FastClassBySpringCGLIB$$5a42ba54.invoke(<generated>)
    at org.springframework.cglib.proxy.MethodProxy.invoke(
MethodProxy.java:204)
    at org.springframework.aop.framework.CglibAopProxy$
CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:738)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(
ReflectiveMethodInvocation.java:157)
    at org.springframework.aop.interceptor.ExposeInvocationInterceptor.
invoke(ExposeInvocationInterceptor.java:92)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(
ReflectiveMethodInvocation.java:179)
    at org.springframework.aop.framework.CglibAopProxy$
DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:673)
    at org.apache.nifi.web.controller.ControllerFacade$$
EnhancerBySpringCGLIB$$e1de9216.getControllerStatus(<generated>)
    at org.apache.nifi.web.StandardNiFiServiceFacade.getControllerStatus(
StandardNiFiServiceFacade.java:2712)
    at org.apache.nifi.web.StandardNiFiServiceFacade$$
FastClassBySpringCGLIB$$358780e0.invoke(<generated>)
    at org.springframework.cglib.proxy.MethodProxy.invoke(
MethodProxy.java:204)
    at org.springframework.aop.framework.CglibAopProxy$
CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:738)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(
ReflectiveMethodInvocation.java:157)
    at org.springframework.aop.aspectj.MethodInvocationProceedingJoin
Point.proceed(MethodInvocationProceedingJoinPoint.java:85)
    at org.apache.nifi.web.NiFiServiceFacadeLock.proceedWithReadLock(
NiFiServiceFacadeLock.java:155)
    at org.apache.nifi.web.NiFiServiceFacadeLock.getLock(
NiFiServiceFacadeLock.java:120)
    at sun.reflect.GeneratedMethodAccessor333.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(
DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.springframework.aop.aspectj.AbstractAspectJAdvice.
invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:629)
    at org.springframework.aop.aspectj.AbstractAspectJAdvice.
invokeAdviceMethod(AbstractAspectJAdvice.java:618)
    at org.springframework.aop.aspectj.AspectJAroundAdvice.
invoke(AspectJAroundAdvice.java:70)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(
ReflectiveMethodInvocation.java:179)
    at org.springframework.aop.interceptor.ExposeInvocationInterceptor.
invoke(ExposeInvocationInterceptor.java:92)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(
ReflectiveMethodInvocation.java:179)
    at org.springframework.aop.framework.CglibAopProxy$
DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:673)
    at org.apache.nifi.web.StandardNiFiServiceFacade$$
EnhancerBySpringCGLIB$$6298ded6.getControllerStatus(<generated>)
    at org.apache.nifi.web.api.FlowResource.getControllerStatus(
FlowResource.java:862)
    at sun.reflect.GeneratedMethodAccessor384.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(
DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.glassfish.jersey.server.model.internal.
ResourceMethodInvocationHandlerFactory.lambda$static$0(
ResourceMethodInvocationHandlerFactory.java:76)
    at org.glassfish.jersey.server.model.internal.
AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDisp
atcher.java:148)
    at org.glassfish.jersey.server.model.internal.
AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDisp
atcher.java:191)
    at org.glassfish.jersey.server.model.internal.
JavaResourceMethodDispatcherProvider$ResponseOutInvoker.doDispatch(
JavaResourceMethodDispatcherProvider.java:200)
    at org.glassfish.jersey.server.model.internal.
AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDisp
atcher.java:103)
    at org.glassfish.jersey.server.model.ResourceMethodInvoker.
invoke(ResourceMethodInvoker.java:493)
    at org.glassfish.jersey.server.model.ResourceMethodInvoker.
apply(ResourceMethodInvoker.java:415)
    at org.glassfish.jersey.server.model.ResourceMethodInvoker.
apply(ResourceMethodInvoker.java:104)
    at org.glassfish.jersey.server.ServerRuntime$1.run(
ServerRuntime.java:277)
    at org.glassfish.jersey.internal.Errors$1.call(Errors.java:272)
    at org.glassfish.jersey.internal.Errors$1.call(Errors.java:268)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:316)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:298)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:268)
    at org.glassfish.jersey.process.internal.RequestScope.
runInScope(RequestScope.java:289)
    at org.glassfish.jersey.server.ServerRuntime.process(
ServerRuntime.java:256)
    at org.glassfish.jersey.server.ApplicationHandler.handle(
ApplicationHandler.java:703)
    at org.glassfish.jersey.servlet.WebComponent.serviceImpl(
WebComponent.java:416)
    at org.glassfish.jersey.servlet.WebComponent.service(
WebComponent.java:370)
    at org.glassfish.jersey.servlet.ServletContainer.service(
ServletContainer.java:389)
    at org.glassfish.jersey.servlet.ServletContainer.service(
ServletContainer.java:342)
    at org.glassfish.jersey.servlet.ServletContainer.service(
ServletContainer.java:229)
    at org.eclipse.jetty.servlet.ServletHolder.handle(
ServletHolder.java:841)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.
doFilter(ServletHandler.java:1634)
    at org.apache.nifi.web.filter.RequestLogger.doFilter(
RequestLogger.java:66)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.
doFilter(ServletHandler.java:1621)
    at org.springframework.security.web.FilterChainProxy$
VirtualFilterChain.doFilter(FilterChainProxy.java:317)
    at org.springframework.security.web.access.intercept.
FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:127)
    at org.springframework.security.web.access.intercept.
FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:91)
    at org.springframework.security.web.FilterChainProxy$
VirtualFilterChain.doFilter(FilterChainProxy.java:331)
    at org.springframework.security.web.session.SessionManagementFilter.
doFilter(SessionManagementFilter.java:137)
    at org.springframework.security.web.FilterChainProxy$
VirtualFilterChain.doFilter(FilterChainProxy.java:331)
    at org.springframework.security.web.authentication.
AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.
java:111)
    at org.springframework.security.web.FilterChainProxy$
VirtualFilterChain.doFilter(FilterChainProxy.java:331)
    at org.apache.nifi.web.security.NiFiAuthenticationFilter.doFilter(
NiFiAuthenticationFilter.java:60)
    at org.springframework.security.web.FilterChainProxy$
VirtualFilterChain.doFilter(FilterChainProxy.java:331)
    at org.apache.nifi.web.security.NiFiAuthenticationFilter.doFilter(
NiFiAuthenticationFilter.java:60)
    at org.springframework.security.web.FilterChainProxy$
VirtualFilterChain.doFilter(FilterChainProxy.java:331)
    at org.apache.nifi.web.security.NiFiAuthenticationFilter.authenticate(
NiFiAuthenticationFilter.java:84)
    at org.apache.nifi.web.security.NiFiAuthenticationFilter.doFilter(
NiFiAuthenticationFilter.java:58)
    at org.springframework.security.web.FilterChainProxy$
VirtualFilterChain.doFilter(FilterChainProxy.java:331)
    at org.apache.nifi.web.security.NiFiAuthenticationFilter.authenticate(
NiFiAuthenticationFilter.java:84)
    at org.apache.nifi.web.security.NiFiAuthenticationFilter.doFilter(
NiFiAuthenticationFilter.java:58)
    at org.springframework.security.web.FilterChainProxy$
VirtualFilterChain.doFilter(FilterChainProxy.java:331)
    at org.springframework.security.web.FilterChainProxy.doFilterInternal(
FilterChainProxy.java:214)
    at org.springframework.security.web.FilterChainProxy.doFilter(
FilterChainProxy.java:177)
    at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(
DelegatingFilterProxy.java:346)
    at org.springframework.web.filter.DelegatingFilterProxy.doFilter(
DelegatingFilterProxy.java:262)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.
doFilter(ServletHandler.java:1621)
    at org.apache.nifi.web.filter.TimerFilter.doFilter(TimerFilter.java:51)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.
doFilter(ServletHandler.java:1613)
    at org.apache.nifi.web.server.JettyServer$2.doFilter(
JettyServer.java:981)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.
doFilter(ServletHandler.java:1621)
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(
ServletHandler.java:541)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(
ScopedHandler.java:143)
    at org.eclipse.jetty.security.SecurityHandler.handle(
SecurityHandler.java:548)
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(
HandlerWrapper.java:132)
    at org.eclipse.jetty.server.handler.ScopedHandler.
nextHandle(ScopedHandler.java:190)
    at org.eclipse.jetty.server.session.SessionHandler.
doHandle(SessionHandler.java:1593)
    at org.eclipse.jetty.server.handler.ScopedHandler.
nextHandle(ScopedHandler.java:188)
    at org.eclipse.jetty.server.handler.ContextHandler.
doHandle(ContextHandler.java:1239)
    at org.eclipse.jetty.server.handler.ScopedHandler.
nextScope(ScopedHandler.java:168)
    at org.eclipse.jetty.servlet.ServletHandler.doScope(
ServletHandler.java:481)
    at org.eclipse.jetty.server.session.SessionHandler.
doScope(SessionHandler.java:1562)
    at org.eclipse.jetty.server.handler.ScopedHandler.
nextScope(ScopedHandler.java:166)
    at org.eclipse.jetty.server.handler.ContextHandler.
doScope(ContextHandler.java:1141)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(
ScopedHandler.java:141)
    at org.eclipse.jetty.server.handler.HandlerCollection.
handle(HandlerCollection.java:118)
    at org.eclipse.jetty.server.handler.gzip.GzipHandler.
handle(GzipHandler.java:561)
    at org.eclipse.jetty.server.handler.HandlerList.handle(
HandlerList.java:52)
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(
HandlerWrapper.java:132)
    at org.eclipse.jetty.server.Server.handle(Server.java:564)
    at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:320)
    at org.eclipse.jetty.server.HttpConnection.onFillable(
HttpConnection.java:251)
    at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(
AbstractConnection.java:279)
    at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:110)
    at org.eclipse.jetty.io.ssl.SslConnection.onFillable(
SslConnection.java:258)
    at org.eclipse.jetty.io.ssl.SslConnection$3.succeeded(
SslConnection.java:147)
    at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:110)
    at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:124)
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(
QueuedThreadPool.java:672)
    at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(
QueuedThreadPool.java:590)
    at java.lang.Thread.run(Thread.java:748)
2018-05-22 16:00:53,830 WARN [NiFi Web Server-793]
o.a.n.controller.StandardProcessorNode
Failed during validation
java.lang.NullPointerException: null
    at org.apache.nifi.processors.script.InvokeScriptedProcessor.
customValidate(InvokeScriptedProcessor.java:476)
    at org.apache.nifi.components.AbstractConfigurableComponent.validate(
AbstractConfigurableComponent.java:126)
    at org.apache.nifi.controller.AbstractConfiguredComponent.validate(
AbstractConfiguredComponent.java:363)
    at org.apache.nifi.controller.StandardProcessorNode.isValid(
StandardProcessorNode.java:995)
    at org.apache.nifi.controller.FlowController.getProcessorStatus(
FlowController.java:3210)
    at org.apache.nifi.controller.FlowController.getGroupStatus(
FlowController.java:2800)


On Tue, May 22, 2018 at 4:41 PM, Bryan Bende <bb...@gmail.com> wrote:

> Is there a stacktrace in nifi-app.log at the time you got the validation
> error?
>
> On Tue, May 22, 2018 at 4:35 PM, Boris Tyukin <bo...@boristyukin.com>
> wrote:
> > I tried both along with nifi restart.
> >
> > it kinda works now. But this is CRAZY. If someone can explain this, I
> would
> > give a hug :)
> >
> > My steps:
> >
> > 1. Drop new InvokeScriptedProcessor on canvas. Open properties and point
> it
> > to my groovy file on NFS. Pick Groovy as a lang. Hit Apply
> > 2. Go back in the processor properties to populate my custom properties.
> Hit
> > apply
> > --> Error bulletin popup - cannot validate bla bla
> >
> > 3. Open properties again. change path to groovy script to 1234. Apply
> >>> obviously error message that script does not exist
> >
> > 4. Open properties again and change path BACK to NFS path from step 1.
> This
> > is exactly the same file/path. Hit Apply
> >>> All works now, no errors
> >
> > After NiFi restart processor still works, no errors. But if I start over
> > from step 1, I have to repeat all steps again.
> >
> > On Tue, May 22, 2018 at 4:22 PM, Shawn Weeks <sw...@weeksconsulting.us>
> > wrote:
> >>
> >> Were you disabling the processor or just stopping it? I've found with
> the
> >> scripted processors they will get in an odd state and that's the only
> way to
> >> reset it.
> >>
> >>
> >> Shawn
> >>
> >> ________________________________
> >> From: Boris Tyukin <bo...@boristyukin.com>
> >> Sent: Tuesday, May 22, 2018 3:07:36 PM
> >> To: users@nifi.apache.org
> >> Subject: Re: InvokeScriptedProcessor from a shared folder
> >>
> >> well it works now...after I recreated processor 3 times and was changing
> >> parameters back and forth and now that error is gone.
> >>
> >> we did not change permissions on nfs or file so not sure why nifi did
> not
> >> like it at first.
> >>
> >> On Tue, May 22, 2018 at 3:32 PM, Boris Tyukin <bo...@boristyukin.com>
> >> wrote:
> >>
> >> Hello,
> >>
> >> I created a custom groovy processor and saved it in a file. That file
> was
> >> placed on NFS share and I pointed NiFi's InvokeScriptedProcessor to it.
> >>
> >> When I started a processor, I got a weird error that it failed custom
> >> validation.
> >>
> >> If I copy that file out of NFS to a local directory, it works fine.
> >>
> >> It seems that NiFi is trying to obtain a file lock or something that NFS
> >> does not support.
> >>
> >> Can someone shed some light on this? We were hoping to keep scripted
> >> processors on NFS so they accessible from all the nodes and also
> deployed to
> >> a single place.
> >>
> >> Thanks,
> >> Boris
> >>
> >>
> >
>

Re: InvokeScriptedProcessor from a shared folder

Posted by Bryan Bende <bb...@gmail.com>.
Is there a stacktrace in nifi-app.log at the time you got the validation error?

On Tue, May 22, 2018 at 4:35 PM, Boris Tyukin <bo...@boristyukin.com> wrote:
> I tried both along with nifi restart.
>
> it kinda works now. But this is CRAZY. If someone can explain this, I would
> give a hug :)
>
> My steps:
>
> 1. Drop new InvokeScriptedProcessor on canvas. Open properties and point it
> to my groovy file on NFS. Pick Groovy as a lang. Hit Apply
> 2. Go back in the processor properties to populate my custom properties. Hit
> apply
> --> Error bulletin popup - cannot validate bla bla
>
> 3. Open properties again. change path to groovy script to 1234. Apply
>>> obviously error message that script does not exist
>
> 4. Open properties again and change path BACK to NFS path from step 1. This
> is exactly the same file/path. Hit Apply
>>> All works now, no errors
>
> After NiFi restart processor still works, no errors. But if I start over
> from step 1, I have to repeat all steps again.
>
> On Tue, May 22, 2018 at 4:22 PM, Shawn Weeks <sw...@weeksconsulting.us>
> wrote:
>>
>> Were you disabling the processor or just stopping it? I've found with the
>> scripted processors they will get in an odd state and that's the only way to
>> reset it.
>>
>>
>> Shawn
>>
>> ________________________________
>> From: Boris Tyukin <bo...@boristyukin.com>
>> Sent: Tuesday, May 22, 2018 3:07:36 PM
>> To: users@nifi.apache.org
>> Subject: Re: InvokeScriptedProcessor from a shared folder
>>
>> well it works now...after I recreated processor 3 times and was changing
>> parameters back and forth and now that error is gone.
>>
>> we did not change permissions on nfs or file so not sure why nifi did not
>> like it at first.
>>
>> On Tue, May 22, 2018 at 3:32 PM, Boris Tyukin <bo...@boristyukin.com>
>> wrote:
>>
>> Hello,
>>
>> I created a custom groovy processor and saved it in a file. That file was
>> placed on NFS share and I pointed NiFi's InvokeScriptedProcessor to it.
>>
>> When I started a processor, I got a weird error that it failed custom
>> validation.
>>
>> If I copy that file out of NFS to a local directory, it works fine.
>>
>> It seems that NiFi is trying to obtain a file lock or something that NFS
>> does not support.
>>
>> Can someone shed some light on this? We were hoping to keep scripted
>> processors on NFS so they accessible from all the nodes and also deployed to
>> a single place.
>>
>> Thanks,
>> Boris
>>
>>
>

Re: InvokeScriptedProcessor from a shared folder

Posted by Boris Tyukin <bo...@boristyukin.com>.
I tried both along with nifi restart.

it kinda works now. But this is CRAZY. If someone can explain this, I would
give a hug :)

My steps:

1. Drop new InvokeScriptedProcessor on canvas. Open properties and point it
to my groovy file on NFS. Pick Groovy as a lang. Hit Apply
2. Go back in the processor properties to populate my custom properties.
Hit apply
--> Error bulletin popup - cannot validate bla bla

3. Open properties again. change path to groovy script to 1234. Apply
>> obviously error message that script does not exist

4. Open properties again and change path BACK to NFS path from step 1. This
is exactly the same file/path. Hit Apply
>> All works now, no errors

After NiFi restart processor still works, no errors. But if I start over
from step 1, I have to repeat all steps again.

On Tue, May 22, 2018 at 4:22 PM, Shawn Weeks <sw...@weeksconsulting.us>
wrote:

> Were you disabling the processor or just stopping it? I've found with the
> scripted processors they will get in an odd state and that's the only way
> to reset it.
>
>
> Shawn
> ------------------------------
> *From:* Boris Tyukin <bo...@boristyukin.com>
> *Sent:* Tuesday, May 22, 2018 3:07:36 PM
> *To:* users@nifi.apache.org
> *Subject:* Re: InvokeScriptedProcessor from a shared folder
>
> well it works now...after I recreated processor 3 times and was changing
> parameters back and forth and now that error is gone.
>
> we did not change permissions on nfs or file so not sure why nifi did not
> like it at first.
>
> On Tue, May 22, 2018 at 3:32 PM, Boris Tyukin <bo...@boristyukin.com>
> wrote:
>
> Hello,
>
> I created a custom groovy processor and saved it in a file. That file was
> placed on NFS share and I pointed NiFi's InvokeScriptedProcessor to it.
>
> When I started a processor, I got a weird error that it failed custom
> validation.
>
> If I copy that file out of NFS to a local directory, it works fine.
>
> It seems that NiFi is trying to obtain a file lock or something that NFS
> does not support.
>
> Can someone shed some light on this? We were hoping to keep scripted
> processors on NFS so they accessible from all the nodes and also deployed
> to a single place.
>
> Thanks,
> Boris
>
>
>

Re: InvokeScriptedProcessor from a shared folder

Posted by Shawn Weeks <sw...@weeksconsulting.us>.
Were you disabling the processor or just stopping it? I've found with the scripted processors they will get in an odd state and that's the only way to reset it.


Shawn

________________________________
From: Boris Tyukin <bo...@boristyukin.com>
Sent: Tuesday, May 22, 2018 3:07:36 PM
To: users@nifi.apache.org
Subject: Re: InvokeScriptedProcessor from a shared folder

well it works now...after I recreated processor 3 times and was changing parameters back and forth and now that error is gone.

we did not change permissions on nfs or file so not sure why nifi did not like it at first.

On Tue, May 22, 2018 at 3:32 PM, Boris Tyukin <bo...@boristyukin.com>> wrote:
Hello,

I created a custom groovy processor and saved it in a file. That file was placed on NFS share and I pointed NiFi's InvokeScriptedProcessor to it.

When I started a processor, I got a weird error that it failed custom validation.

If I copy that file out of NFS to a local directory, it works fine.

It seems that NiFi is trying to obtain a file lock or something that NFS does not support.

Can someone shed some light on this? We were hoping to keep scripted processors on NFS so they accessible from all the nodes and also deployed to a single place.

Thanks,
Boris


Re: InvokeScriptedProcessor from a shared folder

Posted by Boris Tyukin <bo...@boristyukin.com>.
well it works now...after I recreated processor 3 times and was changing
parameters back and forth and now that error is gone.

we did not change permissions on nfs or file so not sure why nifi did not
like it at first.

On Tue, May 22, 2018 at 3:32 PM, Boris Tyukin <bo...@boristyukin.com> wrote:

> Hello,
>
> I created a custom groovy processor and saved it in a file. That file was
> placed on NFS share and I pointed NiFi's InvokeScriptedProcessor to it.
>
> When I started a processor, I got a weird error that it failed custom
> validation.
>
> If I copy that file out of NFS to a local directory, it works fine.
>
> It seems that NiFi is trying to obtain a file lock or something that NFS
> does not support.
>
> Can someone shed some light on this? We were hoping to keep scripted
> processors on NFS so they accessible from all the nodes and also deployed
> to a single place.
>
> Thanks,
> Boris
>