我的java代码我在ExecutorService上运行了一些挂起的任务,我在30分钟后打断它们。他们都试图寻求数据库连接,我实际上并不认为这是因为没有连接,因为这些是尝试将数据写入数据库的第一个任务。但无论我的问题是为什么他们都没有放弃尝试在30分钟之前获取连接,因为 hibernate.c3p0.acquireRetryAttempts 设置为10,并且retrys之间的默认间隔只有一秒。
堆栈跟踪
org.hibernate.exception.GenericJDBCException: Could not open connection
at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:54)
at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:125)
at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:110)
at org.hibernate.engine.jdbc.internal.LogicalConnectionImpl.obtainConnection(LogicalConnectionImpl.java:304)
at org.hibernate.engine.jdbc.internal.LogicalConnectionImpl.getConnection(LogicalConnectionImpl.java:169)
at org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction.doBegin(JdbcTransaction.java:67)
at org.hibernate.engine.transaction.spi.AbstractTransactionImpl.begin(AbstractTransactionImpl.java:160)
at org.hibernate.internal.SessionImpl.beginTransaction(SessionImpl.java:1392)
at com.jthink.songlayer.hibernate.HibernateUtil.beginTransaction(HibernateUtil.java:145)
at com.jthink.songkong.analyse.acoustid.AcoustId.addToDatabase(AcoustId.java:1052)
at com.jthink.songkong.analyse.acoustid.AcoustId.getListOfRecordingTitlesForAcoustIds(AcoustId.java:1218)
at com.jthink.songkong.analyse.musicbrainz.scoring.MusicBrainzScorer.calculateReleaseScore2(MusicBrainzScorer.java:342)
at com.jthink.songkong.analyse.musicbrainz.scoring.MusicBrainzScorer.calculateReleaseScores(MusicBrainzScorer.java:524)
at com.jthink.songkong.analyse.musicbrainz.scoring.MusicBrainzScorer.calculateBestReleaseScore(MusicBrainzScorer.java:222)
at com.jthink.songkong.analyse.analyser.AbstractMusicBrainzGroupMatcher.scoreAndUpdateWithBestMatch(AbstractMusicBrainzGroupMatcher.java:144)
at com.jthink.songkong.analyse.analyser.AbstractMusicBrainzGroupMatcher.matchSongsToRelease(AbstractMusicBrainzGroupMatcher.java:122)
at com.jthink.songkong.analyse.analyser.AbstractMusicBrainzGroupMatcher.matchSongs(AbstractMusicBrainzGroupMatcher.java:69)
at com.jthink.songkong.analyse.analyser.MusicBrainzSongGroupMatcher.call(MusicBrainzSongGroupMatcher.java:236)
at com.jthink.songkong.analyse.analyser.MusicBrainzSongGroupMatcher1.call(MusicBrainzSongGroupMatcher1.java:69)
at com.jthink.songkong.analyse.analyser.MusicBrainzSongGroupMatcher1.call(MusicBrainzSongGroupMatcher1.java:12)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
休眠配置
Configuration config = new Configuration();
config.setProperty(Environment.DRIVER,"org.h2.Driver");
config.setProperty(Environment.URL,"jdbc:h2:"+Db.DBFOLDER+"/"+Db.DBNAME+";FILE_LOCK=SOCKET;MVCC=TRUE;DB_CLOSE_ON_EXIT=FALSE;CACHE_SIZE=50000");
config.setProperty(Environment.DIALECT,"org.hibernate.dialect.H2Dialect");
config.setProperty("hibernate.connection.username","jaikoz");
config.setProperty("hibernate.connection.password","jaikoz");
config.setProperty("hibernate.c3p0.numHelperThreads","10");
config.setProperty("hibernate.c3p0.min_size","20");
config.setProperty("hibernate.c3p0.max_size","100");
config.setProperty("hibernate.c3p0.timeout","300");
config.setProperty("hibernate.c3p0.maxStatementsPerConnection","50");
config.setProperty("hibernate.c3p0.idle_test_period","3000");
config.setProperty("hibernate.c3p0.acquireRetryAttempts","10");