quartz文檔提到,如果在集群環境下,最好將配置項org.quartz.jobStore.txIsolationLevelSerializable設置為true

問題:
這個選項在mysql下會非常容易出現死鎖問題。
2014-12-29 09:55:28.006 [QuartzScheduler_clusterQuartzSchedular-BJ-YQ-64.2491419487774923_ClusterManager] ERROR o.q.impl.jdbcjobstore.JobStoreTX [U][] - ClusterManager: Error managing cluster: Failure updating scheduler state when checking-in: Deadlock found when trying to get lock; try restarting transaction
這個選項存在意義:
quartz需要提升隔離級別來保障自己的運作,不過,由於各數據庫實現的隔離級別定義都不一樣,所以quartz提供一個設置序列化這樣的隔離級別存在,因為例如oracle中是沒有未提交讀和可重復讀這樣的隔離級別存在。但是由於mysql默認的是可重復讀,比提交讀高了一個級別,所以已經可以滿足quartz集群的正常運行。
