ode-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Igor Vorobiov (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (ODE-1012) Error in the ode log under hibernate
Date Tue, 16 Dec 2014 17:45:13 GMT

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

Mime
View raw message