[ https://issues.apache.org/jira/browse/OOZIE-1047?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13506252#comment-13506252 ]
jiezhou commented on OOZIE-1047: -------------------------------- I have run the testcase "TestCoordSubmitXCommand's testBasicSubmit()", if you do the following: ================================================== conf.set("appName", "/@#$%^&*()!"); ...... assertEquals("/@#$%^&*()!-foo", job.getAppName()); ================================================== it runs OK. But if you do this as following: =================================== String appXml = "<coordinator-app name=\"/@#$%^&*()!-foo\" .... ...... assertEquals("/@#$%^&*()!-foo", job.getAppName()); =================================== it will be error. As a result, the '&' can't appear in the xml file directly. > bundle app name does not handle & > --------------------------------- > > Key: OOZIE-1047 > URL: https://issues.apache.org/jira/browse/OOZIE-1047 > Project: Oozie > Issue Type: Bug > Components: bundle > Affects Versions: 3.3.0 > Reporter: michelle chiang > Assignee: Mona Chitnis > Priority: Minor > > coord and workflow can take "/@#$%^&*()!" as app name. > but bundle fails to submit when app name = "/@#$%^&*()!". > client side: > Error: E1310 : E1310: Bundle Job submission Error: [E1301: Could not read the > bundle job definition, [org.jdom.input.JDOMParseException: Error on line 1: > The entity name must immediately follow the '&' in the entity reference.]] > server log: > 2012-11-01 18:59:04,600 ERROR BundleSubmitXCommand:536 - USER[mchiang] > GROUP[users] TOKEN[-] APP[-] JOB[-] ACTION[-] XException, > org.apache.oozie.command.CommandException: E1310: Bundle Job submission > Error: [E1301: Could not read the bundle job definition, > [org.jdom.input.JDOMParseException: Error on line 1: The entity name must > immediately follow the '&' in the entity reference.]] > at > org.apache.oozie.command.bundle.BundleSubmitXCommand.submit(BundleSubmitXCommand.java:183) > at > org.apache.oozie.command.SubmitTransitionXCommand.execute(SubmitTransitionXCommand.java:81) > at > org.apache.oozie.command.SubmitTransitionXCommand.execute(SubmitTransitionXCommand.java:29) > at org.apache.oozie.command.XCommand.call(XCommand.java:277) > at org.apache.oozie.BundleEngine.submitJob(BundleEngine.java:263) > at > org.apache.oozie.servlet.V1JobsServlet.submitBundleJob(V1JobsServlet.java:246) > at > org.apache.oozie.servlet.V1JobsServlet.submitJob(V1JobsServlet.java:86) > at > org.apache.oozie.servlet.BaseJobsServlet.doPost(BaseJobsServlet.java:96) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:637) > at > org.apache.oozie.servlet.JsonRestServlet.service(JsonRestServlet.java:286) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) > at > com.yahoo.oozie.security.authentication.filter.YAuthFilter$2.doFilter(YAuthFilter.java:135) > at > org.apache.hadoop.security.authentication.server.AuthenticationFilter.doFilter(AuthenticationFilter.java:372) > at > com.yahoo.oozie.security.authentication.filter.YAuthFilter.doFilter(YAuthFilter.java:139) > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) > at > yjava.servlet.FilterChainInvoker$ServletFilterChainInvoker.invoke(FilterChainInvoker.java:49) > at yjava.servlet.filter.YHdrsFilter.doFilter(YHdrsFilter.java:68) > at yjava.servlet.filter.YHdrsFilter.doFilter(YHdrsFilter.java:52) > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) > at > yjava.servlet.FilterChainInvoker$ServletFilterChainInvoker.invoke(FilterChainInvoker.java:49) > at yjava.cookie.CookieDataFilter.doFilter(CookieDataFilter.java:447) > at yjava.cookie.CookieDataFilter.doFilter(CookieDataFilter.java:219) > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) > at > yjava.servlet.FilterChainInvoker$ServletFilterChainInvoker.invoke(FilterChainInvoker.java:49) > at > yjava.servlet.filter.DoNotTrackFilter.doFilter(DoNotTrackFilter.java:104) > at > yjava.servlet.filter.DoNotTrackFilter.doFilter(DoNotTrackFilter.java:50) > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) > at > yjava.servlet.FilterChainInvoker$ServletFilterChainInvoker.invoke(FilterChainInvoker.java:49) > at yjava.remote.ip.RemoteIPFilter.doFilter(RemoteIPFilter.java:104) > at yjava.remote.ip.RemoteIPFilter.doFilter(RemoteIPFilter.java:65) > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) > at > yjava.servlet.FilterChainInvoker$ServletFilterChainInvoker.invoke(FilterChainInvoker.java:49) > at > yjava.security.yiv.servlet.InputValidationFilter.doFilter(InputValidationFilter.java:219) > at > yjava.security.yiv.servlet.InputValidationFilter.doFilter(InputValidationFilter.java:143) > 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:102) > at > org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) > at > yjava.tomcat.valves.YahooConnectionValve.invoke(YahooConnectionValve.java:191) > at > org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293) > at > org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859) > at > org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602) > at > org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) > at java.lang.Thread.run(Thread.java:662) > Caused by: org.apache.oozie.command.CommandException: E1301: Could not read > the bundle job definition, [org.jdom.input.JDOMParseException: Error on line > 1: The entity name must immediately follow the '&' in the entity reference.] > at > org.apache.oozie.command.bundle.BundleSubmitXCommand.verifyCoordNameUnique(BundleSubmitXCommand.java:512) > at > org.apache.oozie.command.bundle.BundleSubmitXCommand.submit(BundleSubmitXCommand.java:148) > ... 53 more > Caused by: org.jdom.input.JDOMParseException: Error on line 1: The entity > name must immediately follow the '&' in the entity reference. > at org.jdom.input.SAXBuilder.build(SAXBuilder.java:504) > at org.jdom.input.SAXBuilder.build(SAXBuilder.java:888) > at org.apache.oozie.util.XmlUtils.parseXml(XmlUtils.java:137) > at > org.apache.oozie.command.bundle.BundleSubmitXCommand.verifyCoordNameUnique(BundleSubmitXCommand.java:496) > ... 54 more > Caused by: org.xml.sax.SAXParseException: The entity name must immediately > follow the '&' in the entity reference. > at > org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown > Source) > at org.apache.xerces.util.ErrorHandlerWrapper.fatalError(Unknown > Source) > at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source) > at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source) > at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source) > at org.apache.xerces.impl.XMLScanner.reportFatalError(Unknown Source) > at org.apache.xerces.impl.XMLScanner.scanAttributeValue(Unknown > Source) > at > org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanAttribute(Unknown Source) > at > org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown > Source) > at > org.apache.xerces.impl.XMLNSDocumentScannerImpl$NSContentDispatcher.scanRootElementHook(Unknown > Source) > at > org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown > Source) > at > org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown > Source) > at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) > at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) > at org.apache.xerces.parsers.XMLParser.parse(Unknown Source) > at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source) > at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown > Source) > at org.jdom.input.SAXBuilder.build(SAXBuilder.java:489) > ... 57 more > 2012-11-01 18:59:04,601 WARN V1JobsServlet:542 - USER[mchiang] GROUP[users] > TOKEN[-] APP[-] JOB[-] ACTION[-] URL[POST > http://qa2blue-oozie.blue.ygrid.yahoo.com:4080/oozie/v1/jobs?action=start] > error[E1310], E1310: Bundle Job submission Error: [E1301: Could not read the > bundle job definition, [org.jdom.input.JDOMParseException: Error on line 1: > The entity name must immediately follow the '&' in the entity reference.]] > org.apache.oozie.servlet.XServletException: E1310: Bundle Job submission > Error: [E1301: Could not read the bundle job definition, > [org.jdom.input.JDOMParseException: Error on line 1: The entity name must > immediately follow the '&' in the entity reference.]] > at > org.apache.oozie.servlet.V1JobsServlet.submitBundleJob(V1JobsServlet.java:251) > at > org.apache.oozie.servlet.V1JobsServlet.submitJob(V1JobsServlet.java:86) > at > org.apache.oozie.servlet.BaseJobsServlet.doPost(BaseJobsServlet.java:96) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:637) > at > org.apache.oozie.servlet.JsonRestServlet.service(JsonRestServlet.java:286) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) > at > com.yahoo.oozie.security.authentication.filter.YAuthFilter$2.doFilter(YAuthFilter.java:135) > at > org.apache.hadoop.security.authentication.server.AuthenticationFilter.doFilter(AuthenticationFilter.java:372) > at > com.yahoo.oozie.security.authentication.filter.YAuthFilter.doFilter(YAuthFilter.java:139) > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) > at > yjava.servlet.FilterChainInvoker$ServletFilterChainInvoker.invoke(FilterChainInvoker.java:49) > at yjava.servlet.filter.YHdrsFilter.doFilter(YHdrsFilter.java:68) > at yjava.servlet.filter.YHdrsFilter.doFilter(YHdrsFilter.java:52) > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) > at > yjava.servlet.FilterChainInvoker$ServletFilterChainInvoker.invoke(FilterChainInvoker.java:49) > at yjava.cookie.CookieDataFilter.doFilter(CookieDataFilter.java:447) > at yjava.cookie.CookieDataFilter.doFilter(CookieDataFilter.java:219) > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) > at > yjava.servlet.FilterChainInvoker$ServletFilterChainInvoker.invoke(FilterChainInvoker.java:49) > at > yjava.servlet.filter.DoNotTrackFilter.doFilter(DoNotTrackFilter.java:104) > at > yjava.servlet.filter.DoNotTrackFilter.doFilter(DoNotTrackFilter.java:50) > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) > at > yjava.servlet.FilterChainInvoker$ServletFilterChainInvoker.invoke(FilterChainInvoker.java:49) > at yjava.remote.ip.RemoteIPFilter.doFilter(RemoteIPFilter.java:104) > at yjava.remote.ip.RemoteIPFilter.doFilter(RemoteIPFilter.java:65) > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) > at > yjava.servlet.FilterChainInvoker$ServletFilterChainInvoker.invoke(FilterChainInvoker.java:49) > at > yjava.security.yiv.servlet.InputValidationFilter.doFilter(InputValidationFilter.java:219) > at > yjava.security.yiv.servlet.InputValidationFilter.doFilter(InputValidationFilter.java:143) > 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:102) > at > org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) > at > yjava.tomcat.valves.YahooConnectionValve.invoke(YahooConnectionValve.java:191) > at > org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293) > at > org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859) > at > org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602) > at > org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) > at java.lang.Thread.run(Thread.java:662) > Caused by: org.apache.oozie.BundleEngineException: E1310: Bundle Job > submission Error: [E1301: Could not read the bundle job definition, > [org.jdom.input.JDOMParseException: Error on line 1: The entity name must > immediately follow the '&' in the entity reference.]] > at org.apache.oozie.BundleEngine.submitJob(BundleEngine.java:271) > at > org.apache.oozie.servlet.V1JobsServlet.submitBundleJob(V1JobsServlet.java:246) > ... 48 more > Caused by: org.apache.oozie.command.CommandException: E1310: Bundle Job > submission Error: [E1301: Could not read the bundle job definition, > [org.jdom.input.JDOMParseException: Error on line 1: The entity name must > immediately follow the '&' in the entity reference.]] > at > org.apache.oozie.command.bundle.BundleSubmitXCommand.submit(BundleSubmitXCommand.java:183) > at > org.apache.oozie.command.SubmitTransitionXCommand.execute(SubmitTransitionXCommand.java:81) > at > org.apache.oozie.command.SubmitTransitionXCommand.execute(SubmitTransitionXCommand.java:29) > at org.apache.oozie.command.XCommand.call(XCommand.java:277) > at org.apache.oozie.BundleEngine.submitJob(BundleEngine.java:263) > ... 49 more > Caused by: org.apache.oozie.command.CommandException: E1301: Could not read > the bundle job definition, [org.jdom.input.JDOMParseException: Error on line > 1: The entity name must immediately follow the '&' in the entity reference.] > at > org.apache.oozie.command.bundle.BundleSubmitXCommand.verifyCoordNameUnique(BundleSubmitXCommand.java:512) > at > org.apache.oozie.command.bundle.BundleSubmitXCommand.submit(BundleSubmitXCommand.java:148) > ... 53 more > Caused by: org.jdom.input.JDOMParseException: Error on line 1: The entity > name must immediately follow the '&' in the entity reference. > at org.jdom.input.SAXBuilder.build(SAXBuilder.java:504) > at org.jdom.input.SAXBuilder.build(SAXBuilder.java:888) > at org.apache.oozie.util.XmlUtils.parseXml(XmlUtils.java:137) > at > org.apache.oozie.command.bundle.BundleSubmitXCommand.verifyCoordNameUnique(BundleSubmitXCommand.java:496) > ... 54 more > Caused by: org.xml.sax.SAXParseException: The entity name must immediately > follow the '&' in the entity reference. > at > org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown > Source) > at org.apache.xerces.util.ErrorHandlerWrapper.fatalError(Unknown > Source) > at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source) > at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source) > at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source) > at org.apache.xerces.impl.XMLScanner.reportFatalError(Unknown Source) > at org.apache.xerces.impl.XMLScanner.scanAttributeValue(Unknown > Source) > at > org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanAttribute(Unknown Source) > at > org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown > Source) > at > org.apache.xerces.impl.XMLNSDocumentScannerImpl$NSContentDispatcher.scanRootElementHook(Unknown > Source) > at > org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown > Source) > at > org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown > Source) > at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) > at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) > at org.apache.xerces.parsers.XMLParser.parse(Unknown Source) > at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source) > at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown > Source) > at org.jdom.input.SAXBuilder.build(SAXBuilder.java:489) > ... 57 more -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira