quartz的一個誤導


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集群的正常運行。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM