[ https://issues.apache.org/jira/browse/NIFI-1752?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15235704#comment-15235704 ]
James Wing commented on NIFI-1752: ---------------------------------- The underlying exception, "javax.xml.xpath.XPathFactoryConfigurationException: No XPathFactory implementation found for the object model: http://saxon.sf.net/jaxp/xpath/om" is thrown by XPathValidator while executing on EvaluateXPath.java:436: {code} XPathFactory factory = XPathFactory.newInstance(NamespaceConstant.OBJECT_MODEL_SAXON); {code} >From watching in the debugger, *sometimes* the exception is thrown, but also >*sometimes not* - and validation continues to compile the expression >successfully and validate the property (seen by watching >{{evaluator.compile(input);}} on line 441). One possible explanation would be multi-threading. There are several validation operations in progress at the time the exceptions occur. And the [documentation for XPathFactory|https://docs.oracle.com/javase/7/docs/api/javax/xml/xpath/XPathFactory.html] states that it is not thread safe. bq. The XPathFactory class is not thread-safe. In other words, it is the application's responsibility to ensure that at most one thread is using a XPathFactory object at any given moment. Implementations are encouraged to mark methods as synchronized to protect themselves from broken clients. I made an experimental change to synchronize the creation and use of XPathFactory, and that seems to resolve the issue on my machine. But I'm not sure how multi-threading would relate to changes introduced in 0.6.0. Proving that multi-threading is or is not the actual problem and that a {{synchronize}} block is the right fix is the next step. > EvaluateXPath invalid when starting processor > --------------------------------------------- > > Key: NIFI-1752 > URL: https://issues.apache.org/jira/browse/NIFI-1752 > Project: Apache NiFi > Issue Type: Bug > Components: Extensions > Affects Versions: 0.6.0 > Reporter: Joseph Witt > Fix For: 1.0.0, 0.7.0, 0.6.1 > > > Guillaume Pool: > Hi, > > If anyone could help I would appreciate it: > > After upgrading to 0.6.0 all my EvaluateXMLPath processors report as invalid > with nothing specific reported as the error. > > I use flowfile attribute as the destination, xpath query similar to > /message/address > > Return type auto-detect / string > > Error: > > 2016-04-11 17:37:12,465 INFO [NiFi Web Server-64629] > org.apache.nifi.web.filter.RequestLogger Attempting request for (anonymous) > PUT > http://sv-hdpdf1.hdp.supergrp.net:8443/nifi-api/controller/process-groups/d02a0bbc-c142-37ba-adaa-ee191b98790d/processors/e49acf40-76d1-3b6e-a67d-dc40153605ad > (source ip: 172.27.0.97) > 2016-04-11 17:37:12,474 INFO [NiFi Web Server-64629] > o.a.n.w.a.c.IllegalStateExceptionMapper java.lang.IllegalStateException: > EvaluateXPath[id=e49acf40-76d1-3b6e-a67d-dc40153605ad] is not in a valid > state. Returning Conflict response. > > Reports this even if you drop a new processor in. > James Wing: > I am able to see the same EvaluateXPath issue Guillame Pool reported on NiFi > 0.6.0. I created a template gist at > https://gist.github.com/jvwing/7e7948d8eb5ad3643f38966b4ba3ce2e that > illustrates this for me. You don't even need to run the whole thing, just > try to start the EvaluateXPath processor. I see a pop-up error trying to > start it "EvaluateXPath[id=b481c570-686a-4b6e-859c-9ebe27398fe1] is not in a > valid state". > Trying to troubleshoot this, I attached a debugger and found an > IllegalStateException thrown by StandardProcessorNode.verifyCanStart() on > line 1141. The error text was: > 'address' validated against '/message/address' is invalid because Unable to > initialize XPath engine due to > javax.xml.xpath.XPathFactoryConfigurationException: No XPathFactory > implementation found for the object model: http://saxon.sf.net/jaxp/xpath/om > I haven't figured out what change is the root cause, but the trail seems to > lead into validating the dynamic XPath attribute. -- This message was sent by Atlassian JIRA (v6.3.4#6332)