Hi everyone,
I really need your help. Previously we were using GoCD 20.1.0 and we
upgraded to 22.1.0 recently, including database migration. Everthing went
well and the server is running as usual. However, every now and then (no
clue how to reproduce that) the database is locked and errors like these
add up:
Hibernate operation: could not inspect JDBC autocommit mode; SQL [???];
Database may be already in use: null. Possible solutions: close all other
connection(s); use the server mode [90020-200]; nested exception is
org.h2.jdbc.JdbcSQLNonTransientConnectionException: Database may be already
in use: null. Possible solutions: close all other connection(s); use the
server mode [90020-200]
Hibernate operation: could not execute query; SQL [SELECT materials.id FROM
pipelineMaterialRevisions INNER JOIN pipelines ON
pipelineMaterialRevisions.pipelineId = pipelines.id INNER JOIN
modifications on modifications.id = pipelineMaterialRevisions.torevisionId
INNER JOIN materials on modifications.materialId = materials.id WHERE
materials.id = ? AND pipelineMaterialRevisions.toRevisionId >= ? AND
pipelineMaterialRevisions.fromRevisionId <= ? AND pipelines.name = ? GROUP
BY materials.id;]; Database may be already in use: null. Possible
solutions: close all other connection(s); use the server mode [90020-200];
nested exception is org.h2.jdbc.JdbcSQLNonTransientConnectionException:
Database may be already in use: null. Possible solutions: close all other
connection(s); use the server mode [90020-200]
Could not open JDBC Connection for transaction; nested exception is
org.h2.jdbc.JdbcSQLNonTransientConnectionException: Database may be already
in use: null. Possible solutions: close all other connection(s); use the
server mode [90020-200]
Additionally I can see that in the database directory, two traces are
written, the old and the new one. Is that "works as designed"?
[image: trace.png]
Both traces contain stacktraces like this one:
2022-05-19 06:39:25 database: flush
org.h2.message.DbException: General error:
"java.lang.IllegalStateException: The file is locked:
nio:/var/lib/go-server/db/h2db/cruise.mv.db [1.4.200/7]" [50000-200]
at org.h2.message.DbException.get(DbException.java:194)
at org.h2.message.DbException.convert(DbException.java:347)
at
org.h2.mvstore.db.MVTableEngine$1.uncaughtException(MVTableEngine.java:93)
at org.h2.mvstore.MVStore.handleException(MVStore.java:2877)
at org.h2.mvstore.MVStore.panic(MVStore.java:481)
at org.h2.mvstore.MVStore.<init>(MVStore.java:402)
at org.h2.mvstore.MVStore$Builder.open(MVStore.java:3579)
at
org.h2.mvstore.db.MVTableEngine$Store.open(MVTableEngine.java:170)
at org.h2.mvstore.db.MVTableEngine.init(MVTableEngine.java:103)
at org.h2.engine.Database.getPageStore(Database.java:2659)
at org.h2.engine.Database.open(Database.java:675)
at org.h2.engine.Database.openDatabase(Database.java:307)
at org.h2.engine.Database.<init>(Database.java:301)
at org.h2.engine.Engine.openSession(Engine.java:74)
at org.h2.engine.Engine.openSession(Engine.java:192)
at org.h2.engine.Engine.createSessionAndValidate(Engine.java:171)
at org.h2.engine.Engine.createSession(Engine.java:166)
at org.h2.engine.Engine.createSession(Engine.java:29)
at
org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java:340)
at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:173)
at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:152)
at org.h2.Driver.connect(Driver.java:69)
at
org.apache.commons.dbcp2.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:52)
at
org.apache.commons.dbcp2.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:374)
at
org.apache.commons.pool2.impl.GenericObjectPool.create(GenericObjectPool.java:571)
at
org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:298)
at
org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:223)
at
org.apache.commons.dbcp2.PoolingDataSource.getConnection(PoolingDataSource.java:141)
at
org.apache.commons.dbcp2.BasicDataSource.getConnection(BasicDataSource.java:731)
at
org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:111)
at
org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy$TransactionAwareInvocationHandler.invoke(TransactionAwareDataSourceProxy.java:229)
at jdk.proxy3/jdk.proxy3.$Proxy30.prepareStatement(Unknown Source)
at
org.hibernate.jdbc.AbstractBatcher.getPreparedStatement(AbstractBatcher.java:534)
at
org.hibernate.jdbc.AbstractBatcher.getPreparedStatement(AbstractBatcher.java:452)
at
org.hibernate.jdbc.AbstractBatcher.prepareQueryStatement(AbstractBatcher.java:161)
at
org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1700)
at org.hibernate.loader.Loader.doQuery(Loader.java:801)
at
org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:274)
at org.hibernate.loader.Loader.doList(Loader.java:2542)
at
org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2276)
at org.hibernate.loader.Loader.list(Loader.java:2271)
at
org.hibernate.loader.custom.CustomLoader.list(CustomLoader.java:316)
at
org.hibernate.impl.SessionImpl.listCustomQuery(SessionImpl.java:1842)
at
org.hibernate.impl.AbstractSessionImpl.list(AbstractSessionImpl.java:165)
at org.hibernate.impl.SQLQueryImpl.list(SQLQueryImpl.java:157)
at
com.thoughtworks.go.server.persistence.MaterialRepository.lambda$hasPipelineEverRunWith$10(MaterialRepository.java:881)
at
org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:411)
at
org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:342)
at
com.thoughtworks.go.server.persistence.MaterialRepository.hasPipelineEverRunWith(MaterialRepository.java:858)
at
com.thoughtworks.go.server.materials.MaterialChecker.hasPipelineEverRunWith(MaterialChecker.java:100)
at
com.thoughtworks.go.server.scheduling.BuildCauseProducerService.newProduceBuildCause(BuildCauseProducerService.java:186)
at
com.thoughtworks.go.server.scheduling.BuildCauseProducerService.newProduceBuildCause(BuildCauseProducerService.java:148)
at
com.thoughtworks.go.server.scheduling.BuildCauseProducerService.autoSchedulePipeline(BuildCauseProducerService.java:110)
at
com.thoughtworks.go.server.scheduling.ScheduleCheckListener.onMessage(ScheduleCheckListener.java:44)
at
com.thoughtworks.go.server.scheduling.ScheduleCheckListener.onMessage(ScheduleCheckListener.java:24)
at
com.thoughtworks.go.server.messaging.activemq.JMSMessageListenerAdapter.runImpl(JMSMessageListenerAdapter.java:83)
at
com.thoughtworks.go.server.messaging.activemq.JMSMessageListenerAdapter.run(JMSMessageListenerAdapter.java:63)
at java.base/java.lang.Thread.run(Unknown Source)
Caused by: org.h2.jdbc.JdbcSQLNonTransientException: General error:
"java.lang.IllegalStateException: The file is locked:
nio:/var/lib/go-server/db/h2db/cruise.mv.db [1.4.200/7]" [50000-200]
at
org.h2.message.DbException.getJdbcSQLException(DbException.java:505)
at
org.h2.message.DbException.getJdbcSQLException(DbException.java:429)
... 58 more
Caused by: java.lang.IllegalStateException: The file is locked:
nio:/var/lib/go-server/db/h2db/cruise.mv.db [1.4.200/7]
at
org.h2.mvstore.DataUtils.newIllegalStateException(DataUtils.java:950)
at org.h2.mvstore.FileStore.open(FileStore.java:166)
at org.h2.mvstore.MVStore.<init>(MVStore.java:381)
... 52 more
Caused by: java.nio.channels.OverlappingFileLockException
at java.base/sun.nio.ch.FileLockTable.checkList(Unknown Source)
at java.base/sun.nio.ch.FileLockTable.add(Unknown Source)
at java.base/sun.nio.ch.FileChannelImpl.tryLock(Unknown Source)
at org.h2.store.fs.FileNio.tryLock(FilePathNio.java:121)
at java.base/java.nio.channels.FileChannel.tryLock(Unknown Source)
at org.h2.mvstore.FileStore.open(FileStore.java:163)
... 53 more
What's wrong with the installation? Is there any option or setting in H2
that we could change to fix the issue? Is it correct that two trace files
are written? Any idea or help is highly appreciated, otherwise I don't
think we can get rid of the issue without a complete new installation.
Thanks in advance!
Julia
--
You received this message because you are subscribed to the Google Groups
"go-cd" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/go-cd/d86be439-ac77-4737-966b-c56e358b0e0bn%40googlegroups.com.