掲示板

Clustering and quartz

thumbnail
14年前 に Lancelot Six によって更新されました。

Clustering and quartz

New Member 投稿: 12 参加年月日: 09/06/16 最新の投稿
Hi,

I'm using Liferay in a clustered environement, and I'm getting the following error from quarts:

14:20:26,243 ERROR [JobStoreTX:3794] MisfireHandler: Error handling misfires: Couldn't retrieve trigger: Champ '' inconnu dans field list
org.quartz.JobPersistenceException: Couldn't retrieve trigger: Champ '' inconnu dans field list [See nested exception: com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: Champ '' inconnu dans field list]
        at org.quartz.impl.jdbcjobstore.JobStoreSupport.retrieveTrigger(JobStoreSupport.java:1508)
        at org.quartz.impl.jdbcjobstore.JobStoreSupport.recoverMisfiredJobs(JobStoreSupport.java:891)
        at org.quartz.impl.jdbcjobstore.JobStoreSupport.doRecoverMisfires(JobStoreSupport.java:3029)
        at org.quartz.impl.jdbcjobstore.JobStoreSupport$MisfireHandler.manage(JobStoreSupport.java:3789)
        at org.quartz.impl.jdbcjobstore.JobStoreSupport$MisfireHandler.run(JobStoreSupport.java:3809)
Caused by: com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: Champ '' inconnu dans field list
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:936)
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2985)
        at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1631)
        at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1723)
        at com.mysql.jdbc.Connection.execSQL(Connection.java:3256)
        at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1313)
        at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1448)
        at com.mysql.jdbc.BlobFromLocator.length(BlobFromLocator.java:332)
        at com.mysql.jdbc.BlobFromLocator$LocatorInputStream.<init>(BlobFromLocator.java:574)
        at com.mysql.jdbc.BlobFromLocator.getBinaryStream(BlobFromLocator.java:178)
        at org.quartz.impl.jdbcjobstore.StdJDBCDelegate.getJobDetailFromBlob(StdJDBCDelegate.java:3556)
        at org.quartz.impl.jdbcjobstore.StdJDBCDelegate.getMapFromProperties(StdJDBCDelegate.java:928)
        at org.quartz.impl.jdbcjobstore.StdJDBCDelegate.selectTrigger(StdJDBCDelegate.java:2130)
        at com.liferay.portal.scheduler.quartz.DynamicDriverDelegate.selectTrigger(DynamicDriverDelegate.java:474)
        at org.quartz.impl.jdbcjobstore.JobStoreSupport.retrieveTrigger(JobStoreSupport.java:1490)
        ... 4 more</init>


Here is an extract of my porta-ext.properties:

liferay.home=/home/liferay

jdbc.default.driverClassName=com.mysql.jdbc.Driver
jdbc.default.url=jdbc:mysql://--------/lportal?useUnicode=true&amp;ch........
jdbc.default.username=---------
jdbc.default.password=---------

## Document library configuration
dl.hook.file.system.root.dir=/JR/data/document_library
dl.hook.impl=com.liferay.documentlibrary.util.AdvancedFileSystemHook

## Cache configuration                                                           
ehcache.single.vm.config.location=/ehcache/liferay-single-vm.xml
ehcache.multi.vm.config.location=/ehcache/liferay-multi-vm-clustered.xml

hibernate.cache.provider_class=net.sf.ehcache.hibernate.EhCacheProvider
net.sf.ehcache.configurationResourceName=/ehcache/hibernate-clustered.xml


## Lucene indexer configuration
lucene.store.type=file

#                                                                                                                                                                                    
# Set the directory where Lucene indexes are stored. This is only referenced
# if Lucene stores indexes in the file system.
# -- Ne pas utiliser car utilisation du jdbc
lucene.dir=/JR/data/lucene/

index.on.startup=false

#web.server.display.node=true
org.quartz.jobStore.isClustered=true


company.security.auth.type=screenName

#
#import des utilisaterus du ldap
#
ldap.base.provider.url=---------
ldap.base.dn=----------
ldap.security.principal=---------
ldap.security.credentials=---------
ldap.auth.enabled=true
ldap.auth.required=true
ldap.auth.method=bind
ldap.user.mappings=---------
ldap.group.mappings=---------
ldap.import.enabled=true
ldap.export.enabled=false
ldap.import.on.startup=true
ldap.import.interval=1440
ldap.auth.search.filter=(ENTPersonLogin=@screen_name@)
ldap.import.user.search.filter=(objectClass=ENTPerson)
ldap.import.group.search.filter=(objectClass=groupOfNames)

scheduler.classes=com.pentila.entSavoie.synchroLdap.ParentOrganizationSchuduler

locale.default.request=false
user.language=fr
user.country=FR


I tried to set the hibernate.show_sql property to true to see the sql statement going on, but as it's using directly jsbc, I can see nothing.
Do any one have an idea of what is going on?
thumbnail
14年前 に Mika Koivisto によって更新されました。

RE: Clustering and quartz

Liferay Legend 投稿: 1519 参加年月日: 06/08/07 最新の投稿
Did you have org.quartz.jobStore.isClustered=true in your portal-ext.properties when you started your Liferay for the first time? If you didn't you'll need to drop the quartz tables from the database and let it generate them again.
12年前 に Mayank Joshi によって更新されました。

RE: Clustering and quartz

New Member 投稿: 5 参加年月日: 12/04/12 最新の投稿
Sorry to be posting against this old thread but I'm stuck up with a similar problem. I'm using Liferay Enterprise 6.00 SP2 with tomcat. MSSQL Server 2008 is my database. Before enabling clustering everything was just about fine. However after setting cluster.link.enabled=true in portal-ext.properties I've been having nightmares with liferay. Following is error log

4:52:18,315 ERROR [PortalJobStore:3826] ClusterManager: Error managing cluster: Failure obtaining db row lock: Line 1: FOR UPDATE clause allowed only for DECLARE CURSOR.
org.quartz.impl.jdbcjobstore.LockException: Failure obtaining db row lock: Line 1: FOR UPDATE clause allowed only for DECLARE CURSOR. [See nested exception: java.sql.SQLException: Line 1: FOR UPDATE clause allowed only for DECLARE CURSOR.]
at org.quartz.impl.jdbcjobstore.StdRowLockSemaphore.executeSQL(StdRowLockSemaphore.java:109)
at org.quartz.impl.jdbcjobstore.DBSemaphore.obtainLock(DBSemaphore.java:112)
at org.quartz.impl.jdbcjobstore.JobStoreSupport.doCheckin(JobStoreSupport.java:3196)
at org.quartz.impl.jdbcjobstore.JobStoreSupport$ClusterManager.manage(JobStoreSupport.java:3820)
at org.quartz.impl.jdbcjobstore.JobStoreSupport$ClusterManager.run(JobStoreSupport.java:3856)
Caused by: java.sql.SQLException: Line 1: FOR UPDATE clause allowed only for DECLARE CURSOR.
at net.sourceforge.jtds.jdbc.SQLDiagnostic.addDiagnostic(SQLDiagnostic.java:368)
at net.sourceforge.jtds.jdbc.TdsCore.tdsErrorToken(TdsCore.java:2820)
at net.sourceforge.jtds.jdbc.TdsCore.nextToken(TdsCore.java:2258)
at net.sourceforge.jtds.jdbc.TdsCore.getMoreResults(TdsCore.java:632)
at net.sourceforge.jtds.jdbc.JtdsStatement.executeSQLQuery(JtdsStatement.java:477)
at net.sourceforge.jtds.jdbc.JtdsPreparedStatement.executeQuery(JtdsPreparedStatement.java:776)
at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeQuery(NewProxyPreparedStatement.java:76)
at org.quartz.impl.jdbcjobstore.StdRowLockSemaphore.executeSQL(StdRowLockSemaphore.java:89)
... 4 more

I googled a bit about the error and found many people suggesting adding following to portal-ext.properties:

org.quartz.jobStore.selectWithLockSQL = SELECT * FROM {0}LOCKS UPDLOCK WHERE LOCK_NAME = ?

However even after addition of these lines my woes aren't ending emoticon

Please help me out as this is really making me go nuts now :'(

-MJ
thumbnail
11年前 に Hitoshi Ozawa によって更新されました。

RE: Clustering and quartz

Liferay Legend 投稿: 7942 参加年月日: 10/03/24 最新の投稿
Sorry to be posting against this old thread


Yes, you won't have been sorry and people may have replied to you if you created a new thread instead of posting to an old thread.