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.

Reply via email to