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

Roman Krüger updated OOZIE-2400:
--------------------------------
    Description: 
When running a java action and a spark action via an oozie workflow xml, the 
xml contains multiple namespaces (e.g. uri:oozie:workflow:0.5 and 
uri:oozie:spark-action:0.1).
Thus the elements need to be prefixed by the namespace prefix. But when running 
this workflow, the configuration parser throws the exception "*JA009: bad conf 
file: top-level element not <configuration>*".

The bug is located in class org.apache.oozie.util.XConfiguration in methods 
"parseDocument(Document doc)" and "processNodes(Element root)". The xml tags 
here are retrieved via "getTagName()", (which gets the full tag name) and 
compared against string constants like "configuration". So this fails in case 
the tag contains a namespace prefix and it seems there is no workaround!

Here is an easy fix for this. All calls of "getTagName()" in these 2 methods 
can be replaced by "getLocalName()".


  was:
When running a java action and a spark action via an oozie workflow xml, the 
xml contains multiple namespaces (e.g. uri:oozie:workflow:0.5 and 
uri:oozie:spark-action:0.1).
Thus the elements need to be prefixed by the namespace prefix. But when running 
this workflow, the configuration parser throws the exception "*JA009: bad conf 
file: top-level element not <configuration>*".

The bug is located in class org.apache.oozie.util.XConfiguration in methods 
"parseDocument(Document doc)" and "processNodes(Element root)". The xml tags 
here are retrieved via "getTagName" and compared against prefix-less strings 
(like "configuration"). This fails if the tag contains a namespace prefix and 
it seems there is no workaround!

Here is an easy fix for this. All calls of "getTagName()" in these 2 methods 
can be replaced by "getLocalName()".



> Workflow xml configuration parser cannot deal with namespace prefix
> -------------------------------------------------------------------
>
>                 Key: OOZIE-2400
>                 URL: https://issues.apache.org/jira/browse/OOZIE-2400
>             Project: Oozie
>          Issue Type: Bug
>          Components: core
>    Affects Versions: trunk, 4.1.0, 4.2.0, 4.3.0
>         Environment: Oracle Linux 6.6, Oozie 4.1.0, Cloudera CDH 5.4.2
>            Reporter: Roman Krüger
>            Priority: Critical
>              Labels: easyfix
>             Fix For: trunk, 4.1.0, 4.2.0, 4.3.0
>
>   Original Estimate: 2h
>  Remaining Estimate: 2h
>
> When running a java action and a spark action via an oozie workflow xml, the 
> xml contains multiple namespaces (e.g. uri:oozie:workflow:0.5 and 
> uri:oozie:spark-action:0.1).
> Thus the elements need to be prefixed by the namespace prefix. But when 
> running this workflow, the configuration parser throws the exception "*JA009: 
> bad conf file: top-level element not <configuration>*".
> The bug is located in class org.apache.oozie.util.XConfiguration in methods 
> "parseDocument(Document doc)" and "processNodes(Element root)". The xml tags 
> here are retrieved via "getTagName()", (which gets the full tag name) and 
> compared against string constants like "configuration". So this fails in case 
> the tag contains a namespace prefix and it seems there is no workaround!
> Here is an easy fix for this. All calls of "getTagName()" in these 2 methods 
> can be replaced by "getLocalName()".



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

Reply via email to