<< Back to previous view

[QB-3084] Database failed , Unable to get connection from database url
Created: 23/Nov/17  Updated: 24/Nov/17

Status: Open
Project: QuickBuild
Component/s: None
Affects Version/s: 7.0.28
Fix Version/s: None

Type: Bug Priority: Critical
Reporter: Piotr Jedrys Assigned To: Steve Luo
Resolution: Unresolved Votes: 0
Remaining Estimate: Unknown Time Spent: Unknown
Original Estimate: Unknown
Environment: Linux


 Description   
Recently we got this error with database:

2017-11-23 09:49:07,644 [pool-1-thread-127811] INFO com.pmease.quickbuild.DefaultBuildEngine - Collecting statistics 'JUnit Report'...
2017-11-23 09:49:07,648 [pool-1-thread-127811] INFO com.pmease.quickbuild.plugin.report.engine.generator.GenerateAction - Start generating report 'stats'.
2017-11-23 09:49:07,791 [pool-1-thread-127811] INFO com.pmease.quickbuild.plugin.report.engine.generator.GenerateAction - Finished generating report 'stats' successfully.
2017-11-23 09:49:07,792 [pool-1-thread-127811] INFO com.pmease.quickbuild.plugin.report.engine.generator.GenerateAction - Start generating report 'tests_trends'.
2017-11-23 09:49:07,947 [pool-1-thread-127811] INFO com.pmease.quickbuild.plugin.report.engine.generator.GenerateAction - Finished generating report 'tests_trends' successfully.
2017-11-23 09:49:07,949 [pool-1-thread-127811] INFO com.pmease.quickbuild.plugin.report.engine.generator.GenerateAction - Start generating report 'stats'.
2017-11-23 09:49:08,100 [pool-1-thread-127811] INFO com.pmease.quickbuild.plugin.report.engine.contribution.publisher.StatisticsReportPublisher - Finished collecting statistics data for report 'JUnit Re
port' [configuration: 78163, build: 10030122]
2017-11-23 09:49:08,139 [pool-1-thread-127868] WARN com.pmease.quickbuild.DefaultBuildEngine - Build request for 'root/greenfield/dev/nested-configs-main/1-CI-1' is ignored as there is an identical requ
est in queue.
2017-11-23 09:49:08,162 [pool-1-thread-127811] ERROR com.pmease.quickbuild.DefaultBuildEngine - Error processing build request.
 com.pmease.quickbuild.plugin.report.engine.exception.DatabaseException: Open database [/opt/quickbuild/storage/builds/b122/10030122/reports/junit/Linux unit tests] failed. Database status [No active connections].
        at com.pmease.quickbuild.plugin.report.engine.datastore.DbStore.open(DbStore.java:355)
        at com.pmease.quickbuild.plugin.report.engine.metadata.ReportCategory.loadReport(ReportCategory.java:343)
        at com.pmease.quickbuild.plugin.report.engine.metadata.ReportCategory.loadReport(ReportCategory.java:362)
        at com.pmease.quickbuild.plugin.report.engine.generator.statistics.StatisticsGenerator.loadSourceReport(StatisticsGenerator.java:51)
        at com.pmease.quickbuild.plugin.report.engine.generator.statistics.StatisticsGenerator.doExecute(StatisticsGenerator.java:45)
        at com.pmease.quickbuild.plugin.report.engine.generator.GenerateAction.execute(GenerateAction.java:42)
        at com.pmease.quickbuild.plugin.report.engine.generator.DefaultGenerator.generate(DefaultGenerator.java:37)
        at com.pmease.quickbuild.plugin.report.engine.contribution.publisher.StatisticsReportPublisher.doPublish(StatisticsReportPublisher.java:133)
        at com.pmease.quickbuild.plugin.report.engine.contribution.publisher.StatisticsReportPublisher.collectStatistics(StatisticsReportPublisher.java:111)
        at com.pmease.quickbuild.DefaultBuildEngine.process(DefaultBuildEngine.java:477)
        at com.pmease.quickbuild.DefaultBuildEngine.access$000(DefaultBuildEngine.java:141)
        at com.pmease.quickbuild.DefaultBuildEngine$2.run(DefaultBuildEngine.java:1220)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:622)
        at java.lang.Thread.run(Thread.java:748)
 Caused by: com.pmease.quickbuild.plugin.report.engine.exception.DatabaseException: Unable to get connection from database url: jdbc:h2:/opt/quickbuild/storage/builds/b122/10030122/reports/junit/Linux unit tests/junit;ACCESS_MODE_DATA=r
        at com.pmease.quickbuild.plugin.report.engine.datastore.ConnectionManager.getConnection(ConnectionManager.java:25)
        at com.pmease.quickbuild.plugin.report.engine.datastore.DbStore.getConnection(DbStore.java:384)
        at com.pmease.quickbuild.plugin.report.engine.datastore.DbStore.open(DbStore.java:322)
        ... 14 more
 Caused by: org.h2.jdbc.JdbcSQLException: File corrupted while reading record: "2930 of 2688". Possible solution: use the recovery tool [90030-175]
        at org.h2.message.DbException.getJdbcSQLException(DbException.java:332)
        at org.h2.message.DbException.get(DbException.java:172)
        at org.h2.message.DbException.get(DbException.java:149)
        at org.h2.store.PageStore.readPage(PageStore.java:1288)
        at org.h2.store.PageStore.getPage(PageStore.java:738)
        at org.h2.index.PageDataIndex.getPage(PageDataIndex.java:232)
        at org.h2.index.PageDataNode.getLastKey(PageDataNode.java:213)
        at org.h2.index.PageDataIndex.<init>(PageDataIndex.java:87)
        at org.h2.table.RegularTable.<init>(RegularTable.java:84)
        at org.h2.store.PageStore.addMeta(PageStore.java:1652)
        at org.h2.store.PageStore.readMetaData(PageStore.java:1584)
        at org.h2.store.PageStore.recover(PageStore.java:1370)
        at org.h2.store.PageStore.openExisting(PageStore.java:361)
        at org.h2.store.PageStore.open(PageStore.java:285)
        at org.h2.engine.Database.getPageStore(Database.java:2298)
        at org.h2.engine.Database.open(Database.java:626)
        at org.h2.engine.Database.openDatabase(Database.java:244)
        at org.h2.engine.Database.<init>(Database.java:239)
        at org.h2.engine.Engine.openSession(Engine.java:58)
        at org.h2.engine.Engine.openSession(Engine.java:162)
        at org.h2.engine.Engine.createSessionAndValidate(Engine.java:141)
        at org.h2.engine.Engine.createSession(Engine.java:124)
        at org.h2.engine.Engine.createSession(Engine.java:30)
        at org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java:323)
        at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:105)
        at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:90)
        at org.h2.Driver.connect(Driver.java:73)
        at java.sql.DriverManager.getConnection(DriverManager.java:571)
        at java.sql.DriverManager.getConnection(DriverManager.java:215)
        at com.pmease.quickbuild.plugin.report.engine.datastore.ConnectionManager.getConnection(ConnectionManager.java:23)
        ... 16 more


How can we prevent it from happening and how can we fix it.

max_connections on Mysql is 151
max_used_connections =27
threads_connected=26

so why did it happen?

 Comments   
Comment by Steve Luo [ 24/Nov/17 02:13 PM ]
For some unknown, the report database is corrupted, please delete below directory:
/opt/quickbuild/storage/builds/b122/10030122/reports/junit/Linux unit tests

Comment by Steve Luo [ 24/Nov/17 02:16 PM ]
This is not related to your main database, it is only related to report. Delete the directory can fix, this is caused by our report database (we use h2), and we still don't know the root cause of this error, actually we have tried a lot and can't reproduce it in our lab environment.
Generated at Thu Apr 18 05:33:50 UTC 2024 using JIRA 189.