sismics / docs

Lightweight document management system packed with all the features you can expect from big expensive solutions
https://teedy.io
GNU General Public License v2.0
1.98k stars 489 forks source link

Help Recovering files in "storage" #743

Open unxplained opened 11 months ago

unxplained commented 11 months ago

Hi,

For some reason my database is corrupted (was using H2 for the past few years, didn't know I should have switched to postgres). I do have the files in the "storage" folder.

I was wondering how I could recover the original files?

logs here

25 Nov 2023 03:36:07,789 INFO com.sismics.util.jpa.EMF.getEntityManagerProperties(EMF.java:82) Configuring EntityManager from environment parameters 
25 Nov 2023 03:36:43,067 WARN com.mchange.v2.log.slf4j.Slf4jMLog$Slf4jMLogger$WarnLogger.log(Slf4jMLog.java:223) com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@75400485 -- Acquisition Attempt Failed!!! Clearing pending acquires. While trying to acquire a needed new resource, we failed to succeed more than the maximum number of allowed acquisition attempts (30). Last acquisition attempt exception:  
org.h2.jdbc.JdbcSQLNonTransientConnectionException: File corrupted while reading record: null. Possible solution: use the recovery tool [90030-199]
    at org.h2.message.DbException.getJdbcSQLException(DbException.java:617)
    at org.h2.message.DbException.getJdbcSQLException(DbException.java:427)
    at org.h2.message.DbException.get(DbException.java:194)
    at org.h2.mvstore.db.MVTableEngine$Store.convertIllegalStateException(MVTableEngine.java:205)
    at org.h2.mvstore.db.MVTableEngine$Store.open(MVTableEngine.java:173)
    at org.h2.mvstore.db.MVTableEngine.init(MVTableEngine.java:95)
    at org.h2.engine.Database.getPageStore(Database.java:2739)
    at org.h2.engine.Database.open(Database.java:769)
    at org.h2.engine.Database.openDatabase(Database.java:319)
    at org.h2.engine.Database.<init>(Database.java:313)
    at org.h2.engine.Engine.openSession(Engine.java:69)
    at org.h2.engine.Engine.openSession(Engine.java:201)
    at org.h2.engine.Engine.createSessionAndValidate(Engine.java:178)
    at org.h2.engine.Engine.createSession(Engine.java:161)
    at org.h2.engine.Engine.createSession(Engine.java:31)
    at org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java:336)
    at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:169)
    at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:148)
    at org.h2.Driver.connect(Driver.java:69)
    at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:175)
    at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:220)
    at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:206)
    at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:203)
    at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1176)
    at com.mchange.v2.resourcepool.BasicResourcePool.doAcquireAndDecrementPendingAcquiresWithinLockOnSuccess(BasicResourcePool.java:1163)
    at com.mchange.v2.resourcepool.BasicResourcePool.access$700(BasicResourcePool.java:44)
    at com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask.run(BasicResourcePool.java:1908)
    at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:696)
Caused by: java.lang.IllegalStateException: File corrupted in chunk 51255587, expected page length 4..4096, got 1664301110 [1.4.199/6]
    at org.h2.mvstore.DataUtils.newIllegalStateException(DataUtils.java:883)
    at org.h2.mvstore.MVStore.readBufferForPage(MVStore.java:1055)
    at org.h2.mvstore.MVStore.readPage(MVStore.java:2186)
    at org.h2.mvstore.MVMap.readPage(MVMap.java:554)
    at org.h2.mvstore.Page$NonLeaf.getChildPage(Page.java:1086)
    at org.h2.mvstore.Cursor.hasNext(Cursor.java:53)
    at org.h2.mvstore.MVStore.readStoreHeader(MVStore.java:793)
    at org.h2.mvstore.MVStore.<init>(MVStore.java:401)
    at org.h2.mvstore.MVStore$Builder.open(MVStore.java:3343)
    at org.h2.mvstore.db.MVTableEngine$Store.open(MVTableEngine.java:162)
    ... 23 more
25 Nov 2023 03:36:43,073 WARN com.mchange.v2.log.slf4j.Slf4jMLog$Slf4jMLogger$WarnLogger.log(Slf4jMLog.java:220) Having failed to acquire a resource, com.mchange.v2.resourcepool.BasicResourcePool@1e6cc850 is interrupting all Threads waiting on a resource to check out. Will try again in response to new client requests. 
25 Nov 2023 03:36:43,076 WARN org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:132) HHH000342: Could not obtain connection to query metadata 
java.sql.SQLException: Connections could not be acquired from the underlying database!
    at com.mchange.v2.sql.SqlUtils.toSQLException(SqlUtils.java:118)
    at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutPooledConnection(C3P0PooledConnectionPool.java:692)
    at com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource.getConnection(AbstractPoolBackedDataSource.java:140)
    at org.hibernate.c3p0.internal.C3P0ConnectionProvider.getConnection(C3P0ConnectionProvider.java:72)
    at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator$ConnectionProviderJdbcConnectionAccess.obtainConnection(JdbcEnvironmentInitiator.java:180)
    at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:68)
    at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:35)
    at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.initiateService(StandardServiceRegistryImpl.java:101)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:263)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:237)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:214)
    at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:51)
    at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:107)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:246)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:214)
    at com.sismics.util.jpa.DbOpenHelper.<init>(DbOpenHelper.java:50)
    at com.sismics.util.jpa.EMF$1.<init>(EMF.java:39)
    at com.sismics.util.jpa.EMF.<clinit>(EMF.java:39)
    at com.sismics.docs.core.util.TransactionUtil.handle(TransactionUtil.java:37)
    at com.sismics.util.filter.RequestContextFilter.init(RequestContextFilter.java:65)
    at org.eclipse.jetty.servlet.FilterHolder.initialize(FilterHolder.java:140)
    at org.eclipse.jetty.servlet.ServletHandler.lambda$initialize$0(ServletHandler.java:731)
    at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948)
    at java.base/java.util.stream.Streams$ConcatSpliterator.forEachRemaining(Streams.java:734)
    at java.base/java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:658)
    at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:755)
    at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:379)
    at org.eclipse.jetty.webapp.WebAppContext.startWebapp(WebAppContext.java:1457)
    at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1422)
    at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:911)
    at org.eclipse.jetty.servlet.ServletContextHandler.doStart(ServletContextHandler.java:288)
    at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:524)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73)
    at org.eclipse.jetty.deploy.bindings.StandardStarter.processBinding(StandardStarter.java:46)
    at org.eclipse.jetty.deploy.AppLifeCycle.runBindings(AppLifeCycle.java:188)
    at org.eclipse.jetty.deploy.DeploymentManager.requestAppGoal(DeploymentManager.java:517)
    at org.eclipse.jetty.deploy.DeploymentManager.addApp(DeploymentManager.java:157)
    at org.eclipse.jetty.deploy.providers.ScanningAppProvider.fileAdded(ScanningAppProvider.java:173)
    at org.eclipse.jetty.deploy.providers.WebAppProvider.fileAdded(WebAppProvider.java:447)
    at org.eclipse.jetty.deploy.providers.ScanningAppProvider$1.fileAdded(ScanningAppProvider.java:66)
    at org.eclipse.jetty.util.Scanner.reportAddition(Scanner.java:785)
    at org.eclipse.jetty.util.Scanner.reportDifferences(Scanner.java:754)
    at org.eclipse.jetty.util.Scanner.scan(Scanner.java:641)
    at org.eclipse.jetty.util.Scanner.doStart(Scanner.java:540)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73)
    at org.eclipse.jetty.deploy.providers.ScanningAppProvider.doStart(ScanningAppProvider.java:146)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73)
    at org.eclipse.jetty.deploy.DeploymentManager.startAppProvider(DeploymentManager.java:605)
    at org.eclipse.jetty.deploy.DeploymentManager.doStart(DeploymentManager.java:252)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73)
    at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:169)
    at org.eclipse.jetty.server.Server.start(Server.java:423)
    at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:117)
    at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:97)
    at org.eclipse.jetty.server.Server.doStart(Server.java:387)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73)
    at org.eclipse.jetty.xml.XmlConfiguration.lambda$main$3(XmlConfiguration.java:1907)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at org.eclipse.jetty.xml.XmlConfiguration.main(XmlConfiguration.java:1857)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at org.eclipse.jetty.start.Main.invokeMain(Main.java:218)
    at org.eclipse.jetty.start.Main.start(Main.java:491)
    at org.eclipse.jetty.start.Main.main(Main.java:77)
Caused by: com.mchange.v2.resourcepool.CannotAcquireResourceException: A ResourcePool could not acquire a resource from its primary factory or source.
    at com.mchange.v2.resourcepool.BasicResourcePool.awaitAvailable(BasicResourcePool.java:1507)
    at com.mchange.v2.resourcepool.BasicResourcePool.prelimCheckoutResource(BasicResourcePool.java:644)
    at com.mchange.v2.resourcepool.BasicResourcePool.checkoutResource(BasicResourcePool.java:554)
    at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutAndMarkConnectionInUse(C3P0PooledConnectionPool.java:758)
    at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutPooledConnection(C3P0PooledConnectionPool.java:685)
    ... 64 more
Caused by: org.h2.jdbc.JdbcSQLNonTransientConnectionException: File corrupted while reading record: null. Possible solution: use the recovery tool [90030-199]
    at org.h2.message.DbException.getJdbcSQLException(DbException.java:617)
    at org.h2.message.DbException.getJdbcSQLException(DbException.java:427)
    at org.h2.message.DbException.get(DbException.java:194)
    at org.h2.mvstore.db.MVTableEngine$Store.convertIllegalStateException(MVTableEngine.java:205)
    at org.h2.mvstore.db.MVTableEngine$Store.open(MVTableEngine.java:173)
    at org.h2.mvstore.db.MVTableEngine.init(MVTableEngine.java:95)
    at org.h2.engine.Database.getPageStore(Database.java:2739)
    at org.h2.engine.Database.open(Database.java:769)
    at org.h2.engine.Database.openDatabase(Database.java:319)
    at org.h2.engine.Database.<init>(Database.java:313)
    at org.h2.engine.Engine.openSession(Engine.java:69)
    at org.h2.engine.Engine.openSession(Engine.java:201)
    at org.h2.engine.Engine.createSessionAndValidate(Engine.java:178)
    at org.h2.engine.Engine.createSession(Engine.java:161)
    at org.h2.engine.Engine.createSession(Engine.java:31)
    at org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java:336)
    at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:169)
    at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:148)
    at org.h2.Driver.connect(Driver.java:69)
    at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:175)
    at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:220)
    at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:206)
    at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:203)
    at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1176)
    at com.mchange.v2.resourcepool.BasicResourcePool.doAcquireAndDecrementPendingAcquiresWithinLockOnSuccess(BasicResourcePool.java:1163)
    at com.mchange.v2.resourcepool.BasicResourcePool.access$700(BasicResourcePool.java:44)
    at com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask.run(BasicResourcePool.java:1908)
    at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:696)
Caused by: java.lang.IllegalStateException: File corrupted in chunk 51255587, expected page length 4..4096, got 1664301110 [1.4.199/6]
    at org.h2.mvstore.DataUtils.newIllegalStateException(DataUtils.java:883)
    at org.h2.mvstore.MVStore.readBufferForPage(MVStore.java:1055)
    at org.h2.mvstore.MVStore.readPage(MVStore.java:2186)
    at org.h2.mvstore.MVMap.readPage(MVMap.java:554)
    at org.h2.mvstore.Page$NonLeaf.getChildPage(Page.java:1086)
    at org.h2.mvstore.Cursor.hasNext(Cursor.java:53)
    at org.h2.mvstore.MVStore.readStoreHeader(MVStore.java:793)
    at org.h2.mvstore.MVStore.<init>(MVStore.java:401)
    at org.h2.mvstore.MVStore$Builder.open(MVStore.java:3343)
    at org.h2.mvstore.db.MVTableEngine$Store.open(MVTableEngine.java:162)
    ... 23 more

Thanks