ode-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Alex Boisvert (JIRA)" <j...@apache.org>
Subject [jira] Created: (ODE-425) SimpleScheduler recovery is O(n) with respect to outstanding jobs
Date Sat, 15 Nov 2008 13:51:52 GMT
SimpleScheduler recovery is O(n) with respect to outstanding jobs
-----------------------------------------------------------------

                 Key: ODE-425
                 URL: https://issues.apache.org/jira/browse/ODE-425
             Project: ODE
          Issue Type: Bug
          Components: BPEL Runtime
    Affects Versions: 1.2
            Reporter: Alex Boisvert
             Fix For: 1.3, 2.0


SimpleScheduler recovery is O(n) with respect to outstanding jobs.   

I recently discovered that during recovery, Ode executes an update statement for every 10
outstanding jobs:

"OdeScheduler" prio=1 tid=0x00002aaab076f530 nid=0x2bc9 runnable [0x00000000441db000..0x00000000441dbe10]
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:129)
at com.mysql.jdbc.util.ReadAheadInputStream.fill(ReadAheadInputStream.java:113)
at com.mysql.jdbc.util.ReadAheadInputStream.readFromUnderlyingStreamIfNecessary(ReadAheadInputStream.java:160)
at com.mysql.jdbc.util.ReadAheadInputStream.read(ReadAheadInputStream.java:188)
- locked <0x00002b786196b278> (a com.mysql.jdbc.util.ReadAheadInputStream)
at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:1910)
at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2304)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2803)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1573)
at com.mysql.jdbc.ServerPreparedStatement.serverExecute(ServerPreparedStatement.java:1169)
- locked <0x00002b786195cc30> (a java.lang.Object)
at com.mysql.jdbc.ServerPreparedStatement.executeInternal(ServerPreparedStatement.java:693)
at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1257)
- locked <0x00002b786195cc30> (a java.lang.Object)
at org.jboss.resource.adapter.jdbc.WrappedPreparedStatement.executeQuery(WrappedPreparedStatement.java:236)
at org.apache.ode.scheduler.simple.JdbcDelegate.dequeueImmediate(JdbcDelegate.java:163)
at org.apache.ode.scheduler.simple.SimpleScheduler$6.call(SimpleScheduler.java:421)
at org.apache.ode.scheduler.simple.SimpleScheduler$6.call(SimpleScheduler.java:420)
at org.apache.ode.scheduler.simple.SimpleScheduler.execTransaction(SimpleScheduler.java:176)
at org.apache.ode.scheduler.simple.SimpleScheduler.doLoadImmediate(SimpleScheduler.java:419)
at org.apache.ode.scheduler.simple.SimpleScheduler.recoverStaleNode(SimpleScheduler.java:499)
at org.apache.ode.scheduler.simple.SimpleScheduler$CheckStaleNodes.run(SimpleScheduler.java:598)
at org.apache.ode.scheduler.simple.SimpleScheduler.runTask(SimpleScheduler.java:400)
at org.apache.ode.scheduler.simple.SchedulerThread.run(SchedulerThread.java:137)
at java.lang.Thread.run(Thread.java:595)

Lovely, except when you have 100,000's outstanding jobs in the database.   This can lead to
very long startup time, and there's no good reason for that.

-- 
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