[
https://issues.apache.org/jira/browse/OOZIE-2441?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Robert Kanter updated OOZIE-2441:
---------------------------------
Attachment: OOZIE-2441.001.patch
The code was assuming that {{gData}} was already set (i.e. a {{<global>}}
section existed and was parsed), which isn't the case where there is no global
section. When that happens, there's nothing to propagate from the global
section, so there's no global string to get and set to {{oozie.wf.globalconf}}.
The fix was therefore simple: check if {{gData != null}}.
The patch also adds a unit test.
> SubWorkflow action with propagate-configuration but no global section throws
> NPE on submit
> ------------------------------------------------------------------------------------------
>
> Key: OOZIE-2441
> URL: https://issues.apache.org/jira/browse/OOZIE-2441
> Project: Oozie
> Issue Type: Bug
> Components: action
> Affects Versions: trunk
> Reporter: Robert Kanter
> Assignee: Robert Kanter
> Priority: Blocker
> Fix For: trunk
>
> Attachments: OOZIE-2441.001.patch
>
>
> After OOZIE-2030, if you have a SubWorkflow Action with
> {{<propagate-configuration/>}} and no {{<global>}} section, you'll get an NPE:
> {noformat}
> SERVER[nightly56-1.vpc.cloudera.com] USER[-] GROUP[-] TOKEN[-] APP[-] JOB[-]
> ACTION[-] URL[POST
> http://nightly56-1.vpc.cloudera.com:11000/oozie/v1/jobs?action=dryrun&timezone=America%2FLos_Angeles&user.name=hue&doAs=admin]
> error[E0803], E0803: IO error, null
> org.apache.oozie.servlet.XServletException: E0803: IO error, null
> at
> org.apache.oozie.servlet.V1JobsServlet.submitWorkflowJob(V1JobsServlet.java:197)
> at
> org.apache.oozie.servlet.V1JobsServlet.submitJob(V1JobsServlet.java:92)
> at
> org.apache.oozie.servlet.BaseJobsServlet.doPost(BaseJobsServlet.java:102)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
> at
> org.apache.oozie.servlet.JsonRestServlet.service(JsonRestServlet.java:289)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
> at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
> at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
> at org.apache.oozie.servlet.AuthFilter$2.doFilter(AuthFilter.java:171)
> at
> org.apache.hadoop.security.authentication.server.AuthenticationFilter.doFilter(AuthenticationFilter.java:589)
> at
> org.apache.hadoop.security.authentication.server.AuthenticationFilter.doFilter(AuthenticationFilter.java:552)
> at org.apache.oozie.servlet.AuthFilter.doFilter(AuthFilter.java:176)
> at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
> at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
> at
> org.apache.oozie.servlet.HostnameFilter.doFilter(HostnameFilter.java:86)
> at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
> at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
> at
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
> at
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
> at
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
> at
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
> at
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
> at
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
> at
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861)
> at
> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:620)
> at
> org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
> at java.lang.Thread.run(Thread.java:745)
> Caused by: org.apache.oozie.DagEngineException: E0803: IO error, null
> at org.apache.oozie.DagEngine.dryRunSubmit(DagEngine.java:542)
> at
> org.apache.oozie.servlet.V1JobsServlet.submitWorkflowJob(V1JobsServlet.java:189)
> ... 26 more
> Caused by: org.apache.oozie.command.CommandException: E0803: IO error, null
> at
> org.apache.oozie.command.wf.SubmitXCommand.execute(SubmitXCommand.java:278)
> at
> org.apache.oozie.command.wf.SubmitXCommand.execute(SubmitXCommand.java:76)
> at org.apache.oozie.command.XCommand.call(XCommand.java:286)
> at org.apache.oozie.DagEngine.dryRunSubmit(DagEngine.java:540)
> ... 27 more
> Caused by: java.lang.NullPointerException
> at
> org.apache.oozie.workflow.lite.LiteWorkflowAppParser.getGlobalString(LiteWorkflowAppParser.java:554)
> at
> org.apache.oozie.workflow.lite.LiteWorkflowAppParser.parse(LiteWorkflowAppParser.java:478)
> at
> org.apache.oozie.workflow.lite.LiteWorkflowAppParser.validateAndParse(LiteWorkflowAppParser.java:198)
> at
> org.apache.oozie.workflow.lite.LiteWorkflowLib.parseDef(LiteWorkflowLib.java:57)
> at
> org.apache.oozie.service.LiteWorkflowAppService.parseDef(LiteWorkflowAppService.java:58)
> at
> org.apache.oozie.service.LiteWorkflowAppService.parseDef(LiteWorkflowAppService.java:47)
> at
> org.apache.oozie.command.wf.SubmitXCommand.execute(SubmitXCommand.java:165)
> ... 30 more
> {noformat}
> {code:xml}
> <workflow-app xmlns="uri:oozie:workflow:0.4" name="test-wf">
>
> <start to="a"/>
>
> <action name="a">
> <sub-workflow>
> <app-path>/tmp/foo/</app-path>
> <propagate-configuration/>
> </sub-workflow>
> <ok to="c"/>
> <error to="b"/>
> </action>
> <kill name="b">
> <message>fail</message>
> </kill>
> <end name="c"/>
> </workflow-app>
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)