Hi everyone,
we were using GoCD version 20.1.0 previously and did an upgrade to 22.1.0
recently, including the database migration. Everything went fine and
actually the server is running well except for issues with H2 every now and
then. All out of a sudden error messages for every database transaction
occur, like:
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]
Restarting the server helps for a while, but that's no solution for the
issue. Does anyone know how to avoid this issue? Is there any configuration
that could be adapted?
I'm also wondering why - after migration - the database is writing two
traces? Is this the usual behavior?
[image: trace.png]
Both traces contain error messages 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
Any idea or help is highly appreciated. Otherwise I feel like we have to
reinstall the server from scratch.
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/46905462-f53a-422e-8ca9-8729b0983f39n%40googlegroups.com.