Quartz + Spring - java.lang.reflect.UndeclaredThrowableExce
От: Аноним  
Дата: 16.03.10 20:25
Оценка:
использую Quartz 1.7.3 в связке со Spring. Создал тестовый Job и Trigger.

org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreCMT

запустил в тестовом режиме приложение. Время от времени получаю следующий exception:

21:03:20,109 ERROR SimpleThreadPool:557 - Error while executing the Runnable: 
java.lang.reflect.UndeclaredThrowableException
    at $Proxy17.rollback(Unknown Source)
    at org.quartz.impl.jdbcjobstore.JobStoreSupport.rollbackConnection(JobStoreSupport.java:3583)
    at org.quartz.impl.jdbcjobstore.JobStoreSupport.executeInNonManagedTXLock(JobStoreSupport.java:3749)
    at org.quartz.impl.jdbcjobstore.JobStoreSupport.executeInNonManagedTXLock(JobStoreSupport.java:3704)
    at org.quartz.impl.jdbcjobstore.JobStoreSupport.triggeredJobComplete(JobStoreSupport.java:2953)
    at org.quartz.core.QuartzScheduler.notifyJobStoreJobComplete(QuartzScheduler.java:1708)
    at org.quartz.core.JobRunShell.run(JobRunShell.java:270)
    at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:546)
Caused by: java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.quartz.impl.jdbcjobstore.AttributeRestoringConnectionInvocationHandler.invoke(AttributeRestoringConnectionInvocationHandler.java:71)
    ... 8 more
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Can't call rollback when autocommit=true
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
    at com.mysql.jdbc.Util.getInstance(Util.java:381)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:984)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:926)
    at com.mysql.jdbc.ConnectionImpl.rollback(ConnectionImpl.java:4741)
    at org.enhydra.jdbc.core.CoreConnection.rollback(CoreConnection.java:223)
    at org.enhydra.jdbc.standard.StandardXAConnectionHandle.rollback(StandardXAConnectionHandle.java:137)



с чем это может быть связано и почему при огромном количестве нормальных вызовов он все-таки время от времени вываливается ?
Re: Quartz + Spring - java.lang.reflect.UndeclaredThrowable
От: Blazkowicz Россия  
Дата: 16.03.10 20:50
Оценка:
Здравствуйте, Аноним, Вы писали:

В данном случае ключевая ошибка вот эта:
А>
А>Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Can't call rollback when autocommit=true
А>



А>с чем это может быть связано и почему при огромном количестве нормальных вызовов он все-таки время от времени вываливается ?

Похоже что именно под нагрузкой возникает какое-то исключение, которого здесь нет. Я бы поковырял исходники в этих строках:
at org.quartz.impl.jdbcjobstore.JobStoreSupport.rollbackConnection(JobStoreSupport.java:3583)
    at org.quartz.impl.jdbcjobstore.JobStoreSupport.executeInNonManagedTXLock(JobStoreSupport.java:3749)
    at org.quartz.impl.jdbcjobstore.JobStoreSupport.executeInNonManagedTXLock(JobStoreSupport.java:3704)
    at org.quartz.impl.jdbcjobstore.JobStoreSupport.triggeredJobComplete(JobStoreSupport.java:2953)

Это позволит выяснить причину вызова rollback. Ну, и вообще надо подумать может имеет смысл транзакции завести вместо автокоммита?
Re[2]: Quartz + Spring - java.lang.reflect.UndeclaredThrowa
От: Аноним  
Дата: 16.03.10 21:34
Оценка:
Здравствуйте, Blazkowicz, Вы писали:

B>Это позволит выяснить причину вызова rollback. Ну, и вообще надо подумать может имеет смысл транзакции завести вместо автокоммита?


а где можно настроить — использовать ли автокомит или транзакции в Quartz ?
Re[3]: Quartz + Spring - java.lang.reflect.UndeclaredThrowa
От: Аноним  
Дата: 17.03.10 13:21
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, Blazkowicz, Вы писали:


B>>Это позволит выяснить причину вызова rollback. Ну, и вообще надо подумать может имеет смысл транзакции завести вместо автокоммита?


А>а где можно настроить — использовать ли автокомит или транзакции в Quartz ?



устанавливал эти свойства

org.quartz.scheduler.wrapJobExecutionInUserTransaction=true
org.quartz.jobStore.dontSetAutoCommitFalse = true/false


ничего не помогает ( Что это может быть ?

Работы под нагрузкой нету как таковой, просто есть последовательно исполняемая задача с

<property name="cronExpression" value="0/5 * * * * ?" />
Re[4]: Quartz + Spring - java.lang.reflect.UndeclaredThrowa
От: Blazkowicz Россия  
Дата: 17.03.10 13:23
Оценка:
Здравствуйте, Аноним, Вы писали:

А>
А>org.quartz.scheduler.wrapJobExecutionInUserTransaction=true
А>org.quartz.jobStore.dontSetAutoCommitFalse = true/false
А>


А>ничего не помогает ( Что это может быть ?

Я бы читал и дебажил исходники кварца.
Re[4]: Quartz + Spring - java.lang.reflect.UndeclaredThrowa
От: Аноним  
Дата: 17.03.10 13:26
Оценка:
забыл уточнить — использую Tomcat 6 + JOTM

приведу еще мой schedulerFactoryBean
    <bean id="schedulerFactoryBean"    class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <property name="transactionManager" ref="transactionManager"/>
        <property name="configLocation" value="classpath:quartz.properties"/>
        <property name="applicationContextSchedulerContextKey" value="applicationContext"/> 
        
        <property name="triggers">
            <list>
                <ref bean="exampleJobDetailTrigger" />
            </list>
        </property>
        <property name="jobFactory" ref="jobFactory" />
    </bean>
Re[5]: Quartz + Spring - java.lang.reflect.UndeclaredThrowa
От: Аноним  
Дата: 17.03.10 22:00
Оценка:
Здравствуйте, Blazkowicz, Вы писали:

B>Здравствуйте, Аноним, Вы писали:


А>>
А>>org.quartz.scheduler.wrapJobExecutionInUserTransaction=true
А>>org.quartz.jobStore.dontSetAutoCommitFalse = true/false
А>>


А>>ничего не помогает ( Что это может быть ?

B>Я бы читал и дебажил исходники кварца.

после двух мучительных дней я переконфигурил проект на Atomikos и проблема исчезла
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.