ode-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Shammy Chen (JIRA)" <j...@apache.org>
Subject [jira] Issue Comment Edited: (ODE-507) OutstandingRequestManager(ExecutionQueueImpl serialization) failed when ODE loaded in db mode
Date Wed, 11 Feb 2009 08:10:59 GMT

    [ https://issues.apache.org/jira/browse/ODE-507?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12672541#action_12672541
] 

shammychen edited comment on ODE-507 at 2/11/09 12:10 AM:
-----------------------------------------------------------

Strictly speaking, this error is not caused by OutstandRequestManager at all, it is actually
caused by thread execution sequence. Any way, I can reproduce this error quite easily now,see
the attached file OutstandingRequestManager_err_detail.log for reference:)

The way to reproduce this error is as follows:

1)design a process with at least two RECEIVE activities ( the first one to create a new process
instance, the second one to match the newly created instance )

2)modify execute mothod of class BpelRuntimeContextImpl, sleep some time( say 10 seconds )
before this statement
_dao.setExecutionState(bos.toByteArray());
to delay VPU state persistence ( to enlarge thread switch during execution )

3)call the service exposed by the second RECEIVE activity as soon as possible( before VPU
state and pickResponseChannel persistence), so ODE(another thread) get the old process state
from database, the RESPONSE CHANNEL match are sure to fail



      was (Author: shammychen):
    Strictly speaking,t his error is not caused by OutstandRequestManager at all. Any way,
I can reproduce this error quite easily now,see the attached file OutstandingRequestManager_err_detail.log
for reference:)

The way to reproduce this error is as follows:

1)design a process with at least two RECEIVE activities ( the first one to create a new process
instance, the second one to match the newly created instance )

2)modify execute mothod of class BpelRuntimeContextImpl, sleep some time( say 10 seconds )
before this statement
_dao.setExecutionState(bos.toByteArray());
to delay VPU state persistence ( to enlarge thread switch during execution )

3)call the service exposed by the second RECEIVE activity as soon as possible( before VPU
state and pickResponseChannel persistence), so ODE(another thread) get the old process state
from database, the RESPONSE CHANNEL match are sure to fail


  
> OutstandingRequestManager(ExecutionQueueImpl serialization) failed when ODE loaded in
db mode
> ---------------------------------------------------------------------------------------------
>
>                 Key: ODE-507
>                 URL: https://issues.apache.org/jira/browse/ODE-507
>             Project: ODE
>          Issue Type: Bug
>          Components: BPEL Runtime
>    Affects Versions: 1.2
>         Environment: JAVA 5.0+
>            Reporter: Shammy Chen
>            Assignee: Sean Ahn
>         Attachments: bpmdemo3-5.zip, geronimo.log, OutstandingRequestManager_err_detail.log,
VpuOustandingDataTest.java
>
>
> We loaded ODE process in db mode and got INTERNAL ERROR from ODE sometime, see the following
adapted from error log for detail infomation.
> 15:05:51,774 FATAL [OutstandingRequestManager] INTERNAL ERROR: No ENTRY for RESPONSE
CHANNEL 53
> 15:05:51,776 ERROR [BpelEngineImpl] Scheduled job failed; jobDetail={mexid=4611686018427390107,
pid={http://example.com/bpmdemo3/service}service-17, type=INVOKE_INTERNAL}
> java.lang.IllegalArgumentException: INTERNAL ERROR: No ENTRY for RESPONSE CHANNEL 53
> 	at org.apache.ode.bpel.engine.OutstandingRequestManager.associate(OutstandingRequestManager.java:145)
> 	at org.apache.ode.bpel.engine.BpelRuntimeContextImpl.inputMsgMatch(BpelRuntimeContextImpl.java:894)
> 	at org.apache.ode.bpel.engine.PartnerLinkMyRoleImpl.invokeInstance(PartnerLinkMyRoleImpl.java:211)
> 	at org.apache.ode.bpel.engine.BpelProcess.invokeProcess(BpelProcess.java:208)
> 	at org.apache.ode.bpel.engine.BpelProcess.handleWorkEvent(BpelProcess.java:372)
> 	at org.apache.ode.bpel.engine.BpelEngineImpl.onScheduledJob(BpelEngineImpl.java:326)
> 	at org.apache.ode.bpel.engine.BpelServerImpl.onScheduledJob(BpelServerImpl.java:373)
> 	at org.apache.ode.scheduler.simple.SimpleScheduler$4$1.call(SimpleScheduler.java:337)
> 	at org.apache.ode.scheduler.simple.SimpleScheduler$4$1.call(SimpleScheduler.java:336)
> 	at org.apache.ode.scheduler.simple.SimpleScheduler.execTransaction(SimpleScheduler.java:174)
> 	at org.apache.ode.scheduler.simple.SimpleScheduler$4.call(SimpleScheduler.java:335)
> 	at org.apache.ode.scheduler.simple.SimpleScheduler$4.call(SimpleScheduler.java:332)
> 	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:619)
> 15:05:52,798 ERROR [SimpleScheduler] Error while processing transaction, retrying.
> org.apache.ode.bpel.iapi.Scheduler$JobProcessorException: java.lang.IllegalArgumentException:
INTERNAL ERROR: No ENTRY for RESPONSE CHANNEL 53
> 	at org.apache.ode.bpel.engine.BpelEngineImpl.onScheduledJob(BpelEngineImpl.java:336)
> 	at org.apache.ode.bpel.engine.BpelServerImpl.onScheduledJob(BpelServerImpl.java:373)
> 	at org.apache.ode.scheduler.simple.SimpleScheduler$4$1.call(SimpleScheduler.java:337)
> 	at org.apache.ode.scheduler.simple.SimpleScheduler$4$1.call(SimpleScheduler.java:336)
> 	at org.apache.ode.scheduler.simple.SimpleScheduler.execTransaction(SimpleScheduler.java:174)
> 	at org.apache.ode.scheduler.simple.SimpleScheduler$4.call(SimpleScheduler.java:335)
> 	at org.apache.ode.scheduler.simple.SimpleScheduler$4.call(SimpleScheduler.java:332)
> 	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:619)
> Caused by: java.lang.IllegalArgumentException: INTERNAL ERROR: No ENTRY for RESPONSE
CHANNEL 53
> 	at org.apache.ode.bpel.engine.OutstandingRequestManager.associate(OutstandingRequestManager.java:145)
> 	at org.apache.ode.bpel.engine.BpelRuntimeContextImpl.inputMsgMatch(BpelRuntimeContextImpl.java:894)
> 	at org.apache.ode.bpel.engine.PartnerLinkMyRoleImpl.invokeInstance(PartnerLinkMyRoleImpl.java:211)
> 	at org.apache.ode.bpel.engine.BpelProcess.invokeProcess(BpelProcess.java:208)
> 	at org.apache.ode.bpel.engine.BpelProcess.handleWorkEvent(BpelProcess.java:372)
> 	at org.apache.ode.bpel.engine.BpelEngineImpl.onScheduledJob(BpelEngineImpl.java:326)
> 	... 11 more
> I doubted whether it was caused by ExecutionQueueImpl's serialization(not concurrently),
 but when I tested this,  the answer was NO. Maybe it's caused by concurrency.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message