ode-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From arunjolly <jollya...@gmail.com>
Subject Re: Duplicate channel id: concurrency problem?
Date Tue, 16 Aug 2011 14:17:30 GMT


Hi Lorenzo,

Sorry to tell you that i dont have a solution for your problem, but im
facing the same issue in my application.

I use Apache ODE 1.3.3 BPEL Engine in Servicemix 3.3.1 to run my
application. The issue that iam facing is pretty much the same. When the
application load increases ie the number of requests to the ODE increases,
it starts throwing the 'no such channel' exception and sometimes hangs.

What could be the reason for this ? Is this a known bug ? If yes, what is
the possible solution.

PFB the log grab which  for the exception trace

16 Aug 11 09:02:51,875]Error while processing transaction, retrying in 1s
[16 Aug 11 09:02:51,875]Error while executing transaction
org.apache.ode.bpel.iapi.Scheduler$JobProcessorException:
java.lang.RuntimeException: java.lang.IllegalArgumentException: No such
channel; id=151
        at
org.apache.ode.bpel.engine.BpelEngineImpl.onScheduledJob(BpelEngineImpl.java:452)
        at
org.apache.ode.bpel.engine.BpelServerImpl.onScheduledJob(BpelServerImpl.java:441)
        at
org.apache.ode.scheduler.simple.SimpleScheduler$4$1.call(SimpleScheduler.java:411)
        at
org.apache.ode.scheduler.simple.SimpleScheduler$4$1.call(SimpleScheduler.java:405)
        at
org.apache.ode.scheduler.simple.SimpleScheduler.execTransaction(SimpleScheduler.java:218)
        at
org.apache.ode.scheduler.simple.SimpleScheduler$4.call(SimpleScheduler.java:404)
        at
org.apache.ode.scheduler.simple.SimpleScheduler$4.call(SimpleScheduler.java:401)
        at
java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:269)
        at java.util.concurrent.FutureTask.run(FutureTask.java:123)
        at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
        at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
        at java.lang.Thread.run(Thread.java:595)
Caused by: java.lang.RuntimeException: java.lang.IllegalArgumentException:
No such channel; id=151
        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:875)
        at
org.apache.ode.bpel.engine.BpelProcess.handleWorkEvent(BpelProcess.java:438)
        at
org.apache.ode.bpel.engine.BpelEngineImpl.onScheduledJob(BpelEngineImpl.java:439)
        ... 11 more
Caused by: java.lang.IllegalArgumentException: No such channel; id=151
        at
org.apache.ode.jacob.vpu.ExecutionQueueImpl.findChannelFrame(ExecutionQueueImpl.java:205)
        at
org.apache.ode.jacob.vpu.ExecutionQueueImpl.consumeExport(ExecutionQueueImpl.java:232)
        at
org.apache.ode.jacob.vpu.JacobVPU$JacobThreadImpl.importChannel(JacobVPU.java:369)
        at
org.apache.ode.jacob.JacobObject.importChannel(JacobObject.java:47)
        at
org.apache.ode.bpel.engine.BpelRuntimeContextImpl$6.run(BpelRuntimeContextImpl.java:1003)
        at sun.reflect.GeneratedMethodAccessor117.invoke(Unknown Source)
        at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at
org.apache.ode.jacob.vpu.JacobVPU$JacobThreadImpl.run(JacobVPU.java:451)
        ... 15 more



Any help in solving this will be much apprciated.

Thanks and Regards,
Arun 




lorenzzz wrote:
> 
> Hi,
> I keep finding this error with ode 1.3.5 running inside servicemix 3.3.2,
> with mysql 5.1.54.
> 
> java.lang.IllegalArgumentException: No such channel; id=20
> at
> org.apache.ode.jacob.vpu.ExecutionQueueImpl.findChannelFrame(ExecutionQueueImpl.java:205)
> at
> org.apache.ode.jacob.vpu.ExecutionQueueImpl.consumeExport(ExecutionQueueImpl.java:232)
> at
> org.apache.ode.jacob.vpu.JacobVPU$JacobThreadImpl.importChannel(JacobVPU.java:369)
> at org.apache.ode.jacob.JacobObject.importChannel(JacobObject.java:47)
> at
> org.apache.ode.bpel.engine.BpelRuntimeContextImpl$7.run(BpelRuntimeContextImpl.java:1094)
> at sun.reflect.GeneratedMethodAccessor160.invoke(Unknown Source)
> 
> Inside the ODE_JOBS table I can find a row referencing the channel 20.
> 
> After some debugging I could reproduce, by chance, a situation with to
> different jobs with the same channel id 20. Is this correct?
> Then the first job completed correctly and the other remained stuck
> forever.
> 
> I traced the problema back to ExecutionQueueImpl, line: 124 where
> _objIdCounter is used to assign the channel number.
> From the eclipse debugger stack trace, below, I see that no monitors are
> held inside this method and, on first sight, looks like the _objIdCounter
> variable is "not protected".
> Is this intended?
> 
> If so, is the problem due to running multiple instances of SimpleScheduler
> with a servicemix ThreadPoolExecutor?
> 
> Thread [pool-5-thread-1] (Suspended (breakpoint at line 124 in
> ExecutionQueueImpl))
>     ExecutionQueueImpl.add(CommChannel) line: 124
>     JacobVPU$JacobThreadImpl.newChannel(Class, String, String) line: 350
>     PROCESS(JacobObject).newChannel(Class<T>, String) line: 74
>     PROCESS(JacobObject).newChannel(Class<T>) line: 63
>     PROCESS.run() line: 51
>     NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not
> available [native method]
>     NativeMethodAccessorImpl.invoke(Object, Object[]) line: 39
>     DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25
>     Method.invoke(Object, Object...) line: 592
>     JacobVPU$JacobThreadImpl.run() line: 451
>     JacobVPU.execute() line: 139
>     BpelRuntimeContextImpl.execute() line: 968
>     PartnerLinkMyRoleImpl.invokeNewInstance(MyRoleMessageExchangeImpl,
> PartnerLinkMyRoleImpl$RoutingInfo) line: 208
>     BpelProcess$1.invoke(PartnerLinkMyRoleImpl,
> PartnerLinkMyRoleImpl$RoutingInfo, boolean) line: 283
>     BpelProcess.invokeProcess(MyRoleMessageExchangeImpl,
> BpelProcess$InvokeHandler) line: 238
>     BpelProcess.invokeProcess(MyRoleMessageExchangeImpl) line: 279
>     BpelProcess.handleJobDetails(Scheduler$JobDetails) line: 426
>     BpelEngineImpl.onScheduledJob(Scheduler$JobInfo) line: 460
>     BpelServerImpl.onScheduledJob(Scheduler$JobInfo) line: 450
>     SimpleScheduler$RunJob$1.call() line: 518
>     SimpleScheduler$RunJob$1.call() line: 512
>     SimpleScheduler.execTransaction(Callable<T>, int) line: 284
>     SimpleScheduler.execTransaction(Callable<T>) line: 239
>     SimpleScheduler$RunJob.call() line: 512 [local variables unavailable]
> 
>     SimpleScheduler$RunJob.call() line: 496 [local variables unavailable]
> 
>     FutureTask$Sync.innerRun() line: 269
>     FutureTask<V>.run() line: 123
>     ThreadPoolExecutor$Worker.runTask(Runnable) line: 651
>     ThreadPoolExecutor$Worker.run() line: 676 [local variables
> unavailable]
>     Thread.run() line: 595
> 
> Invoking the bpel process with multiple client threads fill up the
> ode_jobs
> table with "broken" jobs and servicemix stops responding.
> 
> 
> Thanks, for any suggestion.
> 
> Bye
> 
> Lorenzo
> 
> 

-- 
View this message in context: http://old.nabble.com/Duplicate-channel-id%3A-concurrency-problem--tp32203247p32272163.html
Sent from the Apache Ode User mailing list archive at Nabble.com.


Mime
View raw message