[
https://issues.apache.org/jira/browse/ODE-1012?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14248550#comment-14248550
]
Igor Vorobiov commented on ODE-1012:
------------------------------------
1) As I mentioned above the problem happens when we call
scheduleMapSerializableRunnable.
This method calls following methods sequence:
{code}
org.apache.ode.scheduler.simple.SimpleScheduler.scheduleMapSerializableRunnable()
=>
schedulePersistedJob() => _db.insertJob() + addTodoOnCommit() => enqueue(Job)
=>
runJob(job) => _exec.submit(new RunJob(job, _jobProcessor))
{code}
As we can see *_jobProcessor* is used to run *ProcessCleanUpRunnable*. But as I
understand for runnable we should use *_polledRunnableProcessor*.
My fix is adding check for job processor type depends on DetailsExt:
{code:title=org.apache.ode.scheduler.simple.SimpleScheduler.java|borderStyle=solid}
protected void runJob(final Job job) {
if (job.detail.getDetailsExt().get("runnable") != null) {
_exec.submit(new RunJob(job, _polledRunnableProcessor));
} else {
_exec.submit(new RunJob(job, _jobProcessor));
}
}
{code}
2) Other problem related to *ClassCastException: java.lang.Long cannot be cast
to java.lang.String* is caused by incorrect casting Long to String in:
{code:title=org.apache.ode.scheduler.simple.JdbcDelegate.java|borderStyle=solid}
public List<Job> dequeueImmediate(String nodeId, long maxtime, int
maxjobs) throws DatabaseException {
....
if (detailsExt.get("pid") != null) {
details.processId = (String) detailsExt.get("pid");
}
....
}
{code}
((DeferredProcessInstanceCleanable)proc).getId() returns Long so when this
value is taken from db it is Long. Solution is call toString for retrieved from
db value:
*details.processId = detailsExt.get("pid").toString();*
> Error in the ode log under hibernate
> ------------------------------------
>
> Key: ODE-1012
> URL: https://issues.apache.org/jira/browse/ODE-1012
> Project: ODE
> Issue Type: Bug
> Components: Deployment
> Affects Versions: 1.3.5, 1.3.6
> Environment: - Windows 7
> - Apache ODE 1.3.6
> - Microsoft® SQL Server® 2008 R2 SP2 - Express Edition
> Reporter: Igor Vorobiov
> Priority: Minor
> Fix For: 1.3.7, 1.4
>
> Attachments: ODE.log, ODESchema.sql, ODE_with_Bitronix_tx.log,
> ode-axis2.properties
>
>
> There is still the problem in ode under hibernate which was mentioned in:
> http://apache-ode.996305.n3.nabble.com/problem-with-ode-under-hibernate-td16241.html#none
> Steps to reproduce:
> 1) setup ODE under hibernate and point it to external sql server
> DB(ode-axis2.properties and ODE schema creation script are attached);
> 2) deploy HelloWorld2 (copy to ode\WEB-INF\processes with name HelloWorld2-1
> or deploy it by web UI);
> 3) redeploy HelloWorld2 (copy to ode\WEB-INF\processes with name
> HelloWorld2-2 or deploy it by web UI);
> Expected: no errors in the log.
> Actual: following error in the log:
> [2013-12-22 21:12:55,010] [ERROR] [org.apache.ode.bpel.engine.BpelEngineImpl]
> - Scheduled job failed; jobDetail=JobDetails( instanceId: null mexId: null
> processId: null type: null channel: nul
> l correlatorId: null correlationKeySet: null retryCount: null inMem: null
> detailsExt:
> {runnable=org.apache.ode.bpel.engine.ProcessCleanUpRunnable@615c1ae3, pid=1})
>
> java.lang.IllegalArgumentException: id to load is required for loading
>
>
> at org.hibernate.event.LoadEvent.<init>(LoadEvent.java:51)
>
>
> at org.hibernate.event.LoadEvent.<init>(LoadEvent.java:33)
>
>
> at org.hibernate.impl.SessionImpl.get(SessionImpl.java:812)
>
>
> at org.hibernate.impl.SessionImpl.get(SessionImpl.java:808)
>
>
> at
> org.apache.ode.daohib.bpel.BpelDAOConnectionImpl._getInstance(BpelDAOConnectionImpl.java:201)
>
>
> at
> org.apache.ode.daohib.bpel.BpelDAOConnectionImpl.getInstance(BpelDAOConnectionImpl.java:145)
>
>
> at
> org.apache.ode.bpel.engine.BpelEngineImpl.onScheduledJob(BpelEngineImpl.java:416)
>
>
> at
> org.apache.ode.bpel.engine.BpelServerImpl.onScheduledJob(BpelServerImpl.java:450)
>
>
> at
> org.apache.ode.scheduler.simple.SimpleScheduler$RunJob$1.call(SimpleScheduler.java:523)
>
>
> at
> org.apache.ode.scheduler.simple.SimpleScheduler$RunJob$1.call(SimpleScheduler.java:517)
>
>
> at
> org.apache.ode.scheduler.simple.SimpleScheduler.execTransaction(SimpleScheduler.java:289)
>
>
> at
> org.apache.ode.scheduler.simple.SimpleScheduler.execTransaction(SimpleScheduler.java:244)
>
>
> at
> org.apache.ode.scheduler.simple.SimpleScheduler$RunJob.call(SimpleScheduler.java:517)
>
>
> at
> org.apache.ode.scheduler.simple.SimpleScheduler$RunJob.call(SimpleScheduler.java:501)
>
>
> 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:662)
> Seems that the error appears when process becomes RETIRED.
> I also attached ODE.log
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)