Good evening. I am in a Jython 2.7.0 environment, using NiFi 1.3.0.

In my script I check for validity in dictionary key values, like so:

                       if (
                                result['application'] in valid_application
                                and result['environment'] in
valid_environment
                                and result['fromComponent'] in valid_from
                                and result['toComponent'] in valid_to
                                and result['messageComponent'] in
valid_messageComponent
                                and result['messageTypeState'] in
valid_messageTypeState
                                and result['messageType'] in
valid_messageType
                        ) :
                                flowFile = session.putAttribute(flowFile,
'isValidMessage', 'True')
                        else :
                                flowFile = session.putAttribute(flowFile,
'isValidMessage', 'False')

I curl an Http POST that populates all the key values. When they are all
there, the script works wonderfully. But when any one has no value in the
incoming json submitted via POST, it throws an error. For example, like so
 , "messageComponent":""

The error thrown and logged by NiFi to nifi-app.log is this:

2017-07-12 01:03:55,578 ERROR [Timer-Driven Process Thread-3]
o.a.nifi.processors.script.ExecuteScript
ExecuteScript[id=61381fb9-1012-115d-2a56-9f9e7fe9f382] Failed to process
session due to org.apache.nifi.processor.exception.ProcessException:
javax.script.ScriptException: KeyError: 'environment' in <script> at line
number 254: {}
org.apache.nifi.processor.exception.ProcessException:
javax.script.ScriptException: KeyError: 'environment' in <script> at line
number 254
        at
org.apache.nifi.processors.script.ExecuteScript.onTrigger(ExecuteScript.java:230)
        at
org.apache.nifi.controller.StandardProcessorNode.onTrigger(StandardProcessorNode.java:1120)
        at
org.apache.nifi.controller.tasks.ContinuallyRunProcessorTask.call(ContinuallyRunProcessorTask.java:147)
        at
org.apache.nifi.controller.tasks.ContinuallyRunProcessorTask.call(ContinuallyRunProcessorTask.java:47)
        at
org.apache.nifi.controller.scheduling.TimerDrivenSchedulingAgent$1.run(TimerDrivenSchedulingAgent.java:132)
        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:1142)
        at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:748)
Caused by: javax.script.ScriptException: KeyError: 'environment' in
<script> at line number 254
        at
org.python.jsr223.PyScriptEngine.scriptException(PyScriptEngine.java:202)
        at org.python.jsr223.PyScriptEngine.eval(PyScriptEngine.java:42)
        at org.python.jsr223.PyScriptEngine.eval(PyScriptEngine.java:31)
        at
javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:264)
        at
org.apache.nifi.script.impl.JythonScriptEngineConfigurator.eval(JythonScriptEngineConfigurator.java:59)
        at
org.apache.nifi.processors.script.ExecuteScript.onTrigger(ExecuteScript.java:220)
        ... 11 common frames omitted
Caused by: org.python.core.PyException: null
        at org.python.core.Py.KeyError(Py.java:249)
        at org.python.core.PyObject.__getitem__(PyObject.java:738)
        at org.python.pycode._pyx15333737.f$0(<script>:245)
        at org.python.pycode._pyx15333737.call_function(<script>)
        at org.python.core.PyTableCode.call(PyTableCode.java:167)
        at org.python.core.PyCode.call(PyCode.java:18)
        at org.python.core.Py.runCode(Py.java:1386)
        at org.python.core.__builtin__.eval(__builtin__.java:497)
        at org.python.core.__builtin__.eval(__builtin__.java:501)
        at
org.python.util.PythonInterpreter.eval(PythonInterpreter.java:259)
        at org.python.jsr223.PyScriptEngine.eval(PyScriptEngine.java:40)
        ... 15 common frames omitted

What can I do to avoid this error, since I am unable to determine why the
empty incoming value is causing it to occur?

Thanks in advance for your help.

Cheers,

Jim

Reply via email to