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

endzeit updated NIFI-12704:
---------------------------
    Affects Version/s: 2.0.0-M2

> Record Path function escapeJson raises NPE when given root "/" as argument
> --------------------------------------------------------------------------
>
>                 Key: NIFI-12704
>                 URL: https://issues.apache.org/jira/browse/NIFI-12704
>             Project: Apache NiFi
>          Issue Type: Bug
>          Components: Core Framework
>    Affects Versions: 1.24.0, 2.0.0-M2
>         Environment: Docker, RedHat 8
>            Reporter: Stephen Jeffrey Hindmarch
>            Assignee: endzeit
>            Priority: Minor
>          Time Spent: 10m
>  Remaining Estimate: 0h
>
> My use case is I want to create a field called "original" which is the 
> escaped string of my whole record. This will preserve the original contents 
> of the message before I start trnasforming it.
> My expectation is that I should be able to use an UpdateRecord processor to 
> create the field using RecordPath language.
> What actually happens is that when I use 
> {code:java}
> escapeJson(/)
> {code}
> as the function the result is that the processor throws a Null Pointer 
> Exception (NPE).
> Detail:
> For any input flow file containing JSON records, define an UpdateRecord 
> processor with these settings.
>  * Replacement Value Strategy = Record Path Value
>  * /original = escapeJson(/)
> When the flow file is presented to the processor, the processor generates an 
> NPE.
> For example, I present this record.
> {noformat}
> [{"hello":"world","record":{"key":"one","value":"hello","subrecord":{"key":"two","value":"bob"}},"array":[0,1,2]}]{noformat}
> If the escapeJson function is offered an existing field to escape then it 
> works as expected. Stack trace as follows.
> {noformat}
> 2024-01-31 12:17:15 2024-01-31 12:17:14,741 ERROR [Timer-Driven Process 
> Thread-8] o.a.n.processors.standard.UpdateRecord 
> UpdateRecord[id=5f6b498d-018d-1000-0000-0000323c6b89] Failed to process 
> StandardFlowFileRecord[uuid=2d4a3eab-e752-4117-93d3-3e5515b6f3f8,claim=StandardContentClaim
>  [resourceClaim=StandardResourceClaim[id=1706703050563-1, container=default, 
> section=1], offset=114, 
> length=114],offset=0,name=2d4a3eab-e752-4117-93d3-3e5515b6f3f8,size=114]; 
> will route to failure
> 2024-01-31 12:17:15 
> org.apache.nifi.record.path.exception.RecordPathException: 
> java.lang.NullPointerException
> 2024-01-31 12:17:15     at 
> org.apache.nifi.record.path.RecordPath.compile(RecordPath.java:105)
> 2024-01-31 12:17:15     at 
> com.github.benmanes.caffeine.cache.LocalLoadingCache.lambda$newMappingFunction$2(LocalLoadingCache.java:145)
> 2024-01-31 12:17:15     at 
> com.github.benmanes.caffeine.cache.BoundedLocalCache.lambda$doComputeIfAbsent$14(BoundedLocalCache.java:2406)
> 2024-01-31 12:17:15     at 
> java.base/java.util.concurrent.ConcurrentHashMap.compute(Unknown Source)
> 2024-01-31 12:17:15     at 
> com.github.benmanes.caffeine.cache.BoundedLocalCache.doComputeIfAbsent(BoundedLocalCache.java:2404)
> 2024-01-31 12:17:15     at 
> com.github.benmanes.caffeine.cache.BoundedLocalCache.computeIfAbsent(BoundedLocalCache.java:2387)
> 2024-01-31 12:17:15     at 
> com.github.benmanes.caffeine.cache.LocalCache.computeIfAbsent(LocalCache.java:108)
> 2024-01-31 12:17:15     at 
> com.github.benmanes.caffeine.cache.LocalLoadingCache.get(LocalLoadingCache.java:56)
> 2024-01-31 12:17:15     at 
> org.apache.nifi.record.path.util.RecordPathCache.getCompiled(RecordPathCache.java:34)
> 2024-01-31 12:17:15     at 
> org.apache.nifi.processors.standard.UpdateRecord.process(UpdateRecord.java:166)
> 2024-01-31 12:17:15     at 
> org.apache.nifi.processors.standard.AbstractRecordProcessor$1.process(AbstractRecordProcessor.java:147)
> 2024-01-31 12:17:15     at 
> org.apache.nifi.controller.repository.StandardProcessSession.write(StandardProcessSession.java:3432)
> 2024-01-31 12:17:15     at 
> org.apache.nifi.processors.standard.AbstractRecordProcessor.onTrigger(AbstractRecordProcessor.java:122)
> 2024-01-31 12:17:15     at 
> org.apache.nifi.processor.AbstractProcessor.onTrigger(AbstractProcessor.java:27)
> 2024-01-31 12:17:15     at 
> org.apache.nifi.controller.StandardProcessorNode.onTrigger(StandardProcessorNode.java:1361)
> 2024-01-31 12:17:15     at 
> org.apache.nifi.controller.tasks.ConnectableTask.invoke(ConnectableTask.java:247)
> 2024-01-31 12:17:15     at 
> org.apache.nifi.controller.scheduling.TimerDrivenSchedulingAgent$1.run(TimerDrivenSchedulingAgent.java:102)
> 2024-01-31 12:17:15     at 
> org.apache.nifi.engine.FlowEngine$2.run(FlowEngine.java:110)
> 2024-01-31 12:17:15     at 
> java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
> 2024-01-31 12:17:15     at 
> java.base/java.util.concurrent.FutureTask.runAndReset(Unknown Source)
> 2024-01-31 12:17:15     at 
> java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown
>  Source)
> 2024-01-31 12:17:15     at 
> java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
> 2024-01-31 12:17:15     at 
> java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
> 2024-01-31 12:17:15     at java.base/java.lang.Thread.run(Unknown Source)
> 2024-01-31 12:17:15 Caused by: java.lang.NullPointerException: null
> 2024-01-31 12:17:15     at 
> org.apache.nifi.record.path.paths.RecordPathCompiler.buildPath(RecordPathCompiler.java:131)
> 2024-01-31 12:17:15     at 
> org.apache.nifi.record.path.paths.RecordPathCompiler.getArgPaths(RecordPathCompiler.java:511)
> 2024-01-31 12:17:15     at 
> org.apache.nifi.record.path.paths.RecordPathCompiler.buildPath(RecordPathCompiler.java:328)
> 2024-01-31 12:17:15     at 
> org.apache.nifi.record.path.paths.RecordPathCompiler.compile(RecordPathCompiler.java:100)
> 2024-01-31 12:17:15     at 
> org.apache.nifi.record.path.RecordPath.compile(RecordPath.java:101)
> 2024-01-31 12:17:15     ... 23 common frames omitted{noformat}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to