| << Back to previous view | 
                                    
                                [QB-3336] H2 database opening failed with: The database is read only
                
             | 
        |
| Status: | Closed | 
| Project: | QuickBuild | 
| Component/s: | None | 
| Affects Version/s: | None | 
| Fix Version/s: | None | 
| Type: | Bug | Priority: | Major | 
| Reporter: | AlSt | Assigned To: | Steve Luo | 
| Resolution: | Cannot Reproduce | Votes: | 0 | 
| Remaining Estimate: | Unknown | Time Spent: | Unknown | 
| Original Estimate: | Unknown | ||
| Description | 
| 
                com.pmease.quickbuild.plugin.report.engine.exception.DatabaseException: Open database [/opt/quickbuild/buildagent/temp/abstractpublisherdc7149f7-b1f2-4343-95a3-3566f47d6f93/DEFAULT] failed. Database status [No active connections].
 Caused by: com.pmease.quickbuild.plugin.report.engine.exception.DatabaseException: Unable to get connection from database url: jdbc:h2:/opt/quickbuild/buildagent/temp/abstractpublisherdc7149f7-b1f2-4343-95a3-3566f47d6f93/DEFAULT/junit;ACCESS_MODE_DATA=r Caused by: org.h2.jdbc.JdbcSQLException: The database is read only [90097-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.message.DbException.get(DbException.java:138) at org.h2.engine.Database.checkWritingAllowed(Database.java:1784) at org.h2.store.FileStore.checkWritingAllowed(FileStore.java:156) at org.h2.store.FileStore.write(FileStore.java:314) at org.h2.store.PageStore.writePage(PageStore.java:1333) at org.h2.store.PageLog.recover(PageLog.java:298) at org.h2.store.PageStore.recover(PageStore.java:1359) 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:664) at java.sql.DriverManager.getConnection(DriverManager.java:247) The same happens then when trying to open the build overview page, but with a different path: com.pmease.quickbuild.plugin.report.engine.exception.DatabaseException: Open database [/opt/quickbuild/storage/98974/builds/b927/12250927/reports/junit/DEFAULT] 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.getRowsCount(ReportCategory.java:320) at com.pmease.quickbuild.plugin.report.engine.metadata.ReportCategory.getRowsCount(ReportCategory.java:329) at com.pmease.quickbuild.plugin.report.engine.renderer.unprocessed.UnProcessedRenderer.isApplicable(UnProcessedRenderer.java:51) at com.pmease.quickbuild.plugin.report.engine.contribution.web.CategoryBuildTab.getTabs(CategoryBuildTab.java:77) at com.pmease.quickbuild.web.page.build.BuildPage.onInitialize(BuildPage.java:752) at org.apache.wicket.Component.fireInitialize(Component.java:924) at org.apache.wicket.MarkupContainer.internalInitialize(MarkupContainer.java:1002) at org.apache.wicket.Page.internalPrepareForRender(Page.java:278) at org.apache.wicket.Component.render(Component.java:2280) at org.apache.wicket.Page.renderPage(Page.java:1035) at org.apache.wicket.request.handler.render.WebPageRenderer.renderPage(WebPageRenderer.java:105) at org.apache.wicket.request.handler.render.WebPageRenderer.respond(WebPageRenderer.java:182) at org.apache.wicket.request.handler.RenderPageRequestHandler.respond(RenderPageRequestHandler.java:147) at org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor.respond(RequestCycle.java:719) at org.apache.wicket.request.RequestHandlerStack.execute(RequestHandlerStack.java:63) at org.apache.wicket.request.cycle.RequestCycle.processRequest(RequestCycle.java:210) at org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:253) at org.apache.wicket.protocol.http.WicketFilter.processRequest(WicketFilter.java:162) com.pmease.quickbuild.plugin.report.engine.exception.DatabaseException: Unable to get connection from database url: jdbc:h2:/opt/quickbuild/storage/98974/builds/b927/12250927/reports/junit/DEFAULT/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) at com.pmease.quickbuild.plugin.report.engine.metadata.ReportCategory.getRowsCount(ReportCategory.java:320) at com.pmease.quickbuild.plugin.report.engine.metadata.ReportCategory.getRowsCount(ReportCategory.java:329) at com.pmease.quickbuild.plugin.report.engine.renderer.unprocessed.UnProcessedRenderer.isApplicable(UnProcessedRenderer.java:51) at com.pmease.quickbuild.plugin.report.engine.contribution.web.CategoryBuildTab.getTabs(CategoryBuildTab.java:77) at com.pmease.quickbuild.web.page.build.BuildPage.onInitialize(BuildPage.java:752) at org.apache.wicket.Component.fireInitialize(Component.java:924) at org.apache.wicket.MarkupContainer.internalInitialize(MarkupContainer.java:1002) at org.apache.wicket.Page.internalPrepareForRender(Page.java:278) at org.apache.wicket.Component.render(Component.java:2280) at org.apache.wicket.Page.renderPage(Page.java:1035) at org.apache.wicket.request.handler.render.WebPageRenderer.renderPage(WebPageRenderer.java:105) at org.apache.wicket.request.handler.render.WebPageRenderer.respond(WebPageRenderer.java:182) at org.apache.wicket.request.handler.RenderPageRequestHandler.respond(RenderPageRequestHandler.java:147) at org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor.respond(RequestCycle.java:719) at org.apache.wicket.request.RequestHandlerStack.execute(RequestHandlerStack.java:63) at org.apache.wicket.request.cycle.RequestCycle.processRequest(RequestCycle.java:210) at org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:253) at org.apache.wicket.protocol.http.WicketFilter.processRequest(WicketFilter.java:162) I saw in com.pmease.quickbuild.plugin.report.engine/src/com/pmease/quickbuild/plugin/report/engine/datastore/DbStore.java that there is an attempt to workaround this issue. But the code for that is put into a comment. Is there any way to actually get that working everytime?  | 
        
| Comments | 
| Comment by AlSt [ 06/May/19 07:17 AM ] | 
| Do you know if this problem is already fixed in the new QB version? Maybe by using a newer H2 lib version? | 
| Comment by Steve Luo [ 20/May/19 03:17 AM ] | 
| Hi, we still don't know the root cause of this issue and can't reproduce this issue, so we haven't upgraded H2 version. But if you want to try/help with new H2 to see if this error persists, you can tell me and I will help to create a new QuickBuild for you. | 
| Comment by AlSt [ 20/May/19 07:43 AM ] | 
| 
                That's a quite good idea. Next time this happens I'll save the corrupt file and try locally with a newer h2 version.
 I already built QB once via ant, so this is not a problem. I'll come back to you once I have new information.  |