[
https://issues.apache.org/jira/browse/ODE-638?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Mark Ford updated ODE-638:
--------------------------
Attachment: HelloWorld2-638.zip
I was able to recreate the bug with the attached project. My modifications are
as follows:
1) change default expressionLanguage to XQuery
2) add a property alias without specifying its query language (it should
default to XPath 1.0)
3) deploy
4) invoke process
I must have been mistaken about it failing deployment. Either that or I'm
missing the step to recreate that failure. If you deploy the attached process
and send the test message, you'll get the stacktrace below. Note how XQuery
appears in the stack.
{code}
11:49:16,787 ERROR [JacobVPU] Method "onRequestRcvd" in class
"org.apache.ode.bpel.runtime.PICK$WAITING$2" threw an unexpected exception.
org.apache.ode.bpel.runtime.InvalidProcessException: Process execution
information not available in this context.
at
org.apache.ode.bpel.runtime.PropertyAliasEvaluationContext.getProcessId(PropertyAliasEvaluationContext.java:83)
at
org.apache.ode.bpel.elang.xpath20.runtime.JaxpVariableResolver.resolveVariable(JaxpVariableResolver.java:80)
at
org.apache.ode.bpel.elang.xquery10.runtime.XQuery10ExpressionRuntime.evaluate(XQuery10ExpressionRuntime.java:368)
at
org.apache.ode.bpel.elang.xquery10.runtime.XQuery10ExpressionRuntime.evaluate(XQuery10ExpressionRuntime.java:161)
at
org.apache.ode.bpel.elang.xquery10.runtime.XQuery10ExpressionRuntime.evaluateNode(XQuery10ExpressionRuntime.java:226)
at
org.apache.ode.bpel.runtime.ExpressionLanguageRuntimeRegistry.evaluateNode(ExpressionLanguageRuntimeRegistry.java:84)
at
org.apache.ode.bpel.engine.BpelProcess.extractProperty(BpelProcess.java:344)
at
org.apache.ode.bpel.engine.BpelRuntimeContextImpl.writeProperties(BpelRuntimeContextImpl.java:1173)
at
org.apache.ode.bpel.engine.BpelRuntimeContextImpl.writeVariable(BpelRuntimeContextImpl.java:515)
at
org.apache.ode.bpel.runtime.ScopeFrame.initializeVariable(ScopeFrame.java:237)
at
org.apache.ode.bpel.runtime.ACTIVITY.initializeVariable(ACTIVITY.java:166)
at org.apache.ode.bpel.runtime.PICK.initVariable(PICK.java:256)
at org.apache.ode.bpel.runtime.PICK.access$400(PICK.java:55)
at
org.apache.ode.bpel.runtime.PICK$WAITING$2.onRequestRcvd(PICK.java:302)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at
org.apache.ode.jacob.vpu.JacobVPU$JacobThreadImpl.run(JacobVPU.java:451)
at org.apache.ode.jacob.vpu.JacobVPU.execute(JacobVPU.java:139)
at
org.apache.ode.bpel.engine.BpelRuntimeContextImpl.execute(BpelRuntimeContextImpl.java:960)
at
org.apache.ode.bpel.engine.PartnerLinkMyRoleImpl.invokeNewInstance(PartnerLinkMyRoleImpl.java:208)
at org.apache.ode.bpel.engine.BpelProcess$1.invoke(BpelProcess.java:283)
at
org.apache.ode.bpel.engine.BpelProcess.invokeProcess(BpelProcess.java:238)
at
org.apache.ode.bpel.engine.BpelProcess.invokeProcess(BpelProcess.java:279)
at
org.apache.ode.bpel.engine.BpelProcess.handleJobDetails(BpelProcess.java:426)
at
org.apache.ode.bpel.engine.BpelEngineImpl.onScheduledJob(BpelEngineImpl.java:460)
at
org.apache.ode.bpel.engine.BpelServerImpl.onScheduledJob(BpelServerImpl.java:450)
at
org.apache.ode.scheduler.simple.SimpleScheduler$RunJob$1.call(SimpleScheduler.java:518)
at
org.apache.ode.scheduler.simple.SimpleScheduler$RunJob$1.call(SimpleScheduler.java:513)
at
org.apache.ode.scheduler.simple.SimpleScheduler.execTransaction(SimpleScheduler.java:284)
at
org.apache.ode.scheduler.simple.SimpleScheduler.execTransaction(SimpleScheduler.java:239)
at
org.apache.ode.scheduler.simple.SimpleScheduler$RunJob.call(SimpleScheduler.java:512)
at
org.apache.ode.scheduler.simple.SimpleScheduler$RunJob.call(SimpleScheduler.java:496)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:680)
11:49:16,788 ERROR [BpelEngineImpl] Scheduled job failed; jobDetail=JobDetails(
instanceId: null mexId: hqejbhcnphr5wo9webe1nq processId:
{http://ode/bpel/unit-test}HelloWorld2-10 type: INVOKE_INTERNAL channel: null
correlatorId: null correlationKeySet: null retryCount: null inMem: false
detailsExt: {})
java.lang.RuntimeException:
org.apache.ode.bpel.runtime.InvalidProcessException: Process execution
information not available in this context.
at
org.apache.ode.jacob.vpu.JacobVPU$JacobThreadImpl.run(JacobVPU.java:464)
at org.apache.ode.jacob.vpu.JacobVPU.execute(JacobVPU.java:139)
at
org.apache.ode.bpel.engine.BpelRuntimeContextImpl.execute(BpelRuntimeContextImpl.java:960)
at
org.apache.ode.bpel.engine.PartnerLinkMyRoleImpl.invokeNewInstance(PartnerLinkMyRoleImpl.java:208)
at org.apache.ode.bpel.engine.BpelProcess$1.invoke(BpelProcess.java:283)
at
org.apache.ode.bpel.engine.BpelProcess.invokeProcess(BpelProcess.java:238)
at
org.apache.ode.bpel.engine.BpelProcess.invokeProcess(BpelProcess.java:279)
at
org.apache.ode.bpel.engine.BpelProcess.handleJobDetails(BpelProcess.java:426)
at
org.apache.ode.bpel.engine.BpelEngineImpl.onScheduledJob(BpelEngineImpl.java:460)
at
org.apache.ode.bpel.engine.BpelServerImpl.onScheduledJob(BpelServerImpl.java:450)
at
org.apache.ode.scheduler.simple.SimpleScheduler$RunJob$1.call(SimpleScheduler.java:518)
at
org.apache.ode.scheduler.simple.SimpleScheduler$RunJob$1.call(SimpleScheduler.java:513)
at
org.apache.ode.scheduler.simple.SimpleScheduler.execTransaction(SimpleScheduler.java:284)
at
org.apache.ode.scheduler.simple.SimpleScheduler.execTransaction(SimpleScheduler.java:239)
at
org.apache.ode.scheduler.simple.SimpleScheduler$RunJob.call(SimpleScheduler.java:512)
at
org.apache.ode.scheduler.simple.SimpleScheduler$RunJob.call(SimpleScheduler.java:496)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:680)
Caused by: org.apache.ode.bpel.runtime.InvalidProcessException: Process
execution information not available in this context.
at
org.apache.ode.bpel.runtime.PropertyAliasEvaluationContext.getProcessId(PropertyAliasEvaluationContext.java:83)
at
org.apache.ode.bpel.elang.xpath20.runtime.JaxpVariableResolver.resolveVariable(JaxpVariableResolver.java:80)
at
org.apache.ode.bpel.elang.xquery10.runtime.XQuery10ExpressionRuntime.evaluate(XQuery10ExpressionRuntime.java:368)
at
org.apache.ode.bpel.elang.xquery10.runtime.XQuery10ExpressionRuntime.evaluate(XQuery10ExpressionRuntime.java:161)
at
org.apache.ode.bpel.elang.xquery10.runtime.XQuery10ExpressionRuntime.evaluateNode(XQuery10ExpressionRuntime.java:226)
at
org.apache.ode.bpel.runtime.ExpressionLanguageRuntimeRegistry.evaluateNode(ExpressionLanguageRuntimeRegistry.java:84)
at
org.apache.ode.bpel.engine.BpelProcess.extractProperty(BpelProcess.java:344)
at
org.apache.ode.bpel.engine.BpelRuntimeContextImpl.writeProperties(BpelRuntimeContextImpl.java:1173)
at
org.apache.ode.bpel.engine.BpelRuntimeContextImpl.writeVariable(BpelRuntimeContextImpl.java:515)
at
org.apache.ode.bpel.runtime.ScopeFrame.initializeVariable(ScopeFrame.java:237)
at
org.apache.ode.bpel.runtime.ACTIVITY.initializeVariable(ACTIVITY.java:166)
at org.apache.ode.bpel.runtime.PICK.initVariable(PICK.java:256)
at org.apache.ode.bpel.runtime.PICK.access$400(PICK.java:55)
at
org.apache.ode.bpel.runtime.PICK$WAITING$2.onRequestRcvd(PICK.java:302)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at
org.apache.ode.jacob.vpu.JacobVPU$JacobThreadImpl.run(JacobVPU.java:451)
... 20 more
{code}
> Incorrect default expression language for property aliases
> ----------------------------------------------------------
>
> Key: ODE-638
> URL: https://issues.apache.org/jira/browse/ODE-638
> Project: ODE
> Issue Type: Bug
> Components: BPEL Compilation/Parsing
> Affects Versions: 1.3.2
> Reporter: Mark Ford
> Assignee: Karthick Sankarachary
> Fix For: 1.4
>
> Attachments: HelloWorld2-638.zip
>
>
> If a property alias does not define a query language then the default should
> be XPath 1.0 as per the WS-BPEL 2.0 spec. BpelCompiler.compile(PropertyAlias)
> uses the same compileExpr(Expression) call as other expressions so the
> default language becomes whatever the default is for the process definition
> or XPath 1.0 if not defined.
> I found this problem by setting a default expression to XQuery in my process
> def. This results in an error at execution since the XQuery compiler inserts
> a variable declaration for $ode:pid which doesn't resolve in the property
> alias context.
> One workaround is to add the queryLanguage attribute to each propertyAlias.
> Another workaround is to not define a default expression language for the
> process.
> Time permitting, I'll add a test case or patch at some point.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.