java - LockException: Failure obtaining db row lock: No operations -


i have working spring application , trying add quartz job scheduling it. i've copy/pasted/modified spring configuration project have working, 1 keeps throwing exception when starting up. i'm using quartz 2.2 , spring 3.2.1. i've included spring configuration , exception stack trace. diagnosing appreciated.

<!-- task scheduling -->     <bean id="emailorganizerlink" class="it.cause.cron.emailorganizerlink" />  <bean id="emailorganizerlinkjob" class="org.springframework.scheduling.quartz.jobdetailfactorybean">     <property name="jobclass" value="it.cause.cron.emailorganizerlinkjob" />     <property name="durability" value="true" /> </bean>  <bean id="emailorganizerlinktrigger" class="org.springframework.scheduling.quartz.crontriggerfactorybean">     <property name="jobdetail" ref="emailorganizerlinkjob" />     <!-- run every morning @ 5am (every minute testing) -->     <property name="cronexpression" value="0 */1 * * * ?" /> </bean>  <bean class="org.springframework.scheduling.quartz.schedulerfactorybean"     lazy-init="false" autowire="no">     <property name="applicationcontextschedulercontextkey" value="applicationcontext" />     <property name="datasource" ref="datasource" />     <property name="transactionmanager" ref="transactionmanager" />     <property name="overwriteexistingjobs" value="true" />     <property name="waitforjobstocompleteonshutdown" value="true" />     <property name="autostartup" value="true" />      <property name="triggers">         <list>             <ref bean="emailorganizerlinktrigger" />         </list>     </property>      <property name="quartzproperties">         <props>             <prop key="org.quartz.scheduler.instancename">causeitbatchscheduler</prop>             <prop key="org.quartz.scheduler.instanceid">auto</prop>             <prop key="org.quartz.jobstore.misfirethreshold">300000</prop>             <prop key="org.quartz.jobstore.class">org.quartz.impl.jdbcjobstore.jobstoretx</prop>             <prop key="org.quartz.jobstore.driverdelegateclass">org.quartz.impl.jdbcjobstore.stdjdbcdelegate</prop>             <prop key="org.quartz.jobstore.tableprefix">qrtz_</prop>             <prop key="org.quartz.jobstore.isclustered">true</prop>             <prop key="org.quartz.threadpool.class">org.quartz.simpl.simplethreadpool</prop>             <prop key="org.quartz.threadpool.threadcount">5</prop>             <prop key="org.quartz.threadpool.threadpriority">5</prop>         </props>     </property>      <property name="schedulercontextasmap">         <map>            <entry key="emailorganizerlink" value-ref="emailorganizerlink" />         </map>     </property>      </bean>   <context:property-placeholder location="classpath:hibernate.properties" />  <bean id="datasource" class="org.springframework.jdbc.datasource.drivermanagerdatasource">     <property name="driverclassname">         <value>${hibernate.connection.driver_class}</value>     </property>     <property name="url">         <value>${hibernate.connection.url}</value>     </property>     <property name="username">         <value>${hibernate.connection.username}</value>     </property>     <property name="password">         <value>${hibernate.connection.password}</value>     </property> </bean>  <bean id="transactionmanager" class="org.springframework.orm.jpa.jpatransactionmanager">     <property name="entitymanagerfactory" ref="entitymanagerfactory" /> </bean>  <bean id="entitymanagerfactory"     class="org.springframework.orm.jpa.localcontainerentitymanagerfactorybean">     <property name="datasource" ref="datasource" />     <property name="persistenceunitname" value="causeit" />     <property name="persistencexmllocation" value="classpath:meta-inf/persistence.xml" />     <property name="jpavendoradapter">         <bean class="org.springframework.orm.jpa.vendor.hibernatejpavendoradapter">             <property name="databaseplatform" value="${hibernate.dialect}" />             <property name="showsql" value="${hibernate.showsql}" />             <property name="generateddl" value="${hibernate.generateddl}" />         </bean>     </property>     <!--     <property name="jpaproperties">         <props>             <prop key="hibernate.ejb.naming_strategy">org.hibernate.cfg.improvednamingstrategy</prop>         </props>     </property>     --> </bean> 
 sep 24, 2013 10:47:41 org.quartz.impl.stdschedulerfactory instantiate info: using default implementation threadexecutor sep 24, 2013 10:47:41 org.quartz.core.schedulersignalerimpl  info: initialized scheduler signaller of type: class org.quartz.core.schedulersignalerimpl sep 24, 2013 10:47:41 org.quartz.core.quartzscheduler  info: quartz scheduler v.2.2.0 created. sep 24, 2013 10:47:42 org.quartz.impl.jdbcjobstore.jobstoresupport initialize info: using db table-based data access locking (synchronization). sep 24, 2013 10:47:42 org.quartz.impl.jdbcjobstore.jobstorecmt initialize info: jobstorecmt initialized. sep 24, 2013 10:47:42 org.quartz.core.quartzscheduler initialize info: scheduler meta-data: quartz scheduler (v2.2.0) 'org.springframework.scheduling.quartz.schedulerfactorybean#0' instanceid 'causeits-macbook-air.local1380034061295'   scheduler class: 'org.quartz.core.quartzscheduler' - running locally.   not started.   in standby mode.   number of jobs executed: 0   using thread pool 'org.quartz.simpl.simplethreadpool' - 5 threads.   using job-store 'org.springframework.scheduling.quartz.localdatasourcejobstore' - supports persistence. , clustered.  sep 24, 2013 10:47:42 org.quartz.impl.stdschedulerfactory instantiate info: quartz scheduler 'org.springframework.scheduling.quartz.schedulerfactorybean#0' initialized externally provided properties instance. sep 24, 2013 10:47:42 org.quartz.impl.stdschedulerfactory instantiate info: quartz scheduler version: 2.2.0 sep 24, 2013 10:47:42 org.quartz.core.quartzscheduler setjobfactory info: jobfactory set to: org.springframework.scheduling.quartz.adaptablejobfactory@3f5756de 2013-09-24 10:47:46,004 [error]: job registration exception overridden rollback exception org.quartz.impl.jdbcjobstore.lockexception: failure obtaining db row lock: no operations allowed after connection closed. [see nested exception: com.mysql.jdbc.exceptions.jdbc4.mysqlnontransientconnectionexception: no operations allowed after connection closed.]     @ org.quartz.impl.jdbcjobstore.stdrowlocksemaphore.executesql(stdrowlocksemaphore.java:157)     @ org.quartz.impl.jdbcjobstore.dbsemaphore.obtainlock(dbsemaphore.java:113)     @ org.quartz.impl.jdbcjobstore.jobstorecmt.executeinlock(jobstorecmt.java:238)     @ org.quartz.impl.jdbcjobstore.jobstoresupport.executeinlock(jobstoresupport.java:3701)     @ org.quartz.impl.jdbcjobstore.jobstoresupport.storejob(jobstoresupport.java:1085)     @ org.quartz.core.quartzscheduler.addjob(quartzscheduler.java:999)     @ org.quartz.core.quartzscheduler.addjob(quartzscheduler.java:988)     @ org.quartz.impl.stdscheduler.addjob(stdscheduler.java:268)     @ org.springframework.scheduling.quartz.scheduleraccessor.addjobtoscheduler(scheduleraccessor.java:342)     @ org.springframework.scheduling.quartz.scheduleraccessor.addtriggertoscheduler(scheduleraccessor.java:365)     @ org.springframework.scheduling.quartz.scheduleraccessor.registerjobsandtriggers(scheduleraccessor.java:303)     @ org.springframework.scheduling.quartz.schedulerfactorybean.afterpropertiesset(schedulerfactorybean.java:511)     @ org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.invokeinitmethods(abstractautowirecapablebeanfactory.java:1545)     @ org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.initializebean(abstractautowirecapablebeanfactory.java:1483)     @ org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.docreatebean(abstractautowirecapablebeanfactory.java:524)     @ org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.createbean(abstractautowirecapablebeanfactory.java:461)     @ org.springframework.beans.factory.support.abstractbeanfactory$1.getobject(abstractbeanfactory.java:295)     @ org.springframework.beans.factory.support.defaultsingletonbeanregistry.getsingleton(defaultsingletonbeanregistry.java:223)     @ org.springframework.beans.factory.support.abstractbeanfactory.dogetbean(abstractbeanfactory.java:292)     @ org.springframework.beans.factory.support.abstractbeanfactory.getbean(abstractbeanfactory.java:194)     @ org.springframework.beans.factory.support.defaultlistablebeanfactory.preinstantiatesingletons(defaultlistablebeanfactory.java:608)     @ org.springframework.context.support.abstractapplicationcontext.finishbeanfactoryinitialization(abstractapplicationcontext.java:932)     @ org.springframework.context.support.abstractapplicationcontext.refresh(abstractapplicationcontext.java:479)     @ org.springframework.web.context.contextloader.configureandrefreshwebapplicationcontext(contextloader.java:389)     @ org.springframework.web.context.contextloader.initwebapplicationcontext(contextloader.java:294)     @ org.springframework.web.context.contextloaderlistener.contextinitialized(contextloaderlistener.java:112)     @ org.apache.catalina.core.standardcontext.listenerstart(standardcontext.java:4939)     @ org.apache.catalina.core.standardcontext.startinternal(standardcontext.java:5434)     @ org.apache.catalina.util.lifecyclebase.start(lifecyclebase.java:150)     @ org.apache.catalina.core.containerbase$startchild.call(containerbase.java:1559)     @ org.apache.catalina.core.containerbase$startchild.call(containerbase.java:1549)     @ java.util.concurrent.futuretask$sync.innerrun(futuretask.java:303)     @ java.util.concurrent.futuretask.run(futuretask.java:138)     @ java.util.concurrent.threadpoolexecutor$worker.runtask(threadpoolexecutor.java:895)     @ java.util.concurrent.threadpoolexecutor$worker.run(threadpoolexecutor.java:918)     @ java.lang.thread.run(thread.java:680) caused by: com.mysql.jdbc.exceptions.jdbc4.mysqlnontransientconnectionexception: no operations allowed after connection closed.     @ sun.reflect.nativeconstructoraccessorimpl.newinstance0(native method)     @ sun.reflect.nativeconstructoraccessorimpl.newinstance(nativeconstructoraccessorimpl.java:39)     @ sun.reflect.delegatingconstructoraccessorimpl.newinstance(delegatingconstructoraccessorimpl.java:27)     @ java.lang.reflect.constructor.newinstance(constructor.java:513)     @ com.mysql.jdbc.util.handlenewinstance(util.java:411)     @ com.mysql.jdbc.util.getinstance(util.java:386)     @ com.mysql.jdbc.sqlerror.createsqlexception(sqlerror.java:1015)     @ com.mysql.jdbc.sqlerror.createsqlexception(sqlerror.java:989)     @ com.mysql.jdbc.sqlerror.createsqlexception(sqlerror.java:975)     @ com.mysql.jdbc.sqlerror.createsqlexception(sqlerror.java:920)     @ com.mysql.jdbc.connectionimpl.throwconnectionclosedexception(connectionimpl.java:1304)     @ com.mysql.jdbc.connectionimpl.checkclosed(connectionimpl.java:1296)     @ com.mysql.jdbc.connectionimpl.preparestatement(connectionimpl.java:4511)     @ com.mysql.jdbc.connectionimpl.preparestatement(connectionimpl.java:4476)     @ sun.reflect.nativemethodaccessorimpl.invoke0(native method)     @ sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:39)     @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:25)     @ java.lang.reflect.method.invoke(method.java:597)     @ org.quartz.impl.jdbcjobstore.attributerestoringconnectioninvocationhandler.invoke(attributerestoringconnectioninvocationhandler.java:73)     @ com.sun.proxy.$proxy68.preparestatement(unknown source)     @ org.quartz.impl.jdbcjobstore.stdrowlocksemaphore.executesql(stdrowlocksemaphore.java:88)     ... 35 more 

in order make 2.2 scheduler work, need enter records in qrtz_lock table particular scheduler name.

insert qrtz_locks values('causeitbatchscheduler', 'trigger_access');  insert qrtz_locks values('causeitbatchscheduler','job_access');  insert qrtz_locks values('causeitbatchscheduler','calendar_access');  insert qrtz_locks values('causeitbatchscheduler','state_access');  insert qrtz_locks values('causeitbatchscheduler','misfire_access'); 

Comments

Popular posts from this blog

c# - How Configure Devart dotConnect for SQLite Code First? -

java - Copying object fields -

c++ - Clear the memory after returning a vector in a function -