Crashplan 3.8.2010: Fix “CrashPlan PRO Server failed to initialize – error 4001” on Linux

For any reason my Linux CrashPlan PRO Server (version 3.8.2010) crashed. The CrashPlan manager web user interface shows the error

CrashPlan PRO Server failed to initialize – error 4001

After restarting the CrashPlan PRO Server the log (/var/log/proserver/com_backup42_app.log.0) shows the following error:

[...]
org.h2.jdbc.JdbcSQLException: File corrupted while reading record: "index not found 286". Possible solution: use the recovery tool [90030-131]
        at org.h2.message.DbException.getJdbcSQLException(DbException.java:316)
        at org.h2.message.DbException.get(DbException.java:167)
        at org.h2.message.DbException.get(DbException.java:144)
        at org.h2.store.PageStore.getPage(PageStore.java:502)
        at org.h2.index.PageDataIndex.getPage(PageDataIndex.java:212)
        at org.h2.index.PageDataNode.getLastKey(PageDataNode.java:221)
        at org.h2.index.PageDataNode.getLastKey(PageDataNode.java:221)
        at org.h2.index.PageDataIndex.<init>(PageDataIndex.java:74)
        at org.h2.table.TableData.<init>(TableData.java:78)
        at org.h2.store.PageStore.addMeta(PageStore.java:1313)
        at org.h2.store.PageStore.readMetaData(PageStore.java:1240)
        at org.h2.store.PageStore.recover(PageStore.java:1046)
        at org.h2.store.PageStore.openExisting(PageStore.java:301)
        at org.h2.store.PageStore.open(PageStore.java:259)
        at org.h2.engine.Database.getPageStore(Database.java:2014)
        at org.h2.engine.Database.open(Database.java:527)
        at org.h2.engine.Database.openDatabase(Database.java:203)
        at org.h2.engine.Database.<init>(Database.java:198)
        at org.h2.engine.Engine.openSession(Engine.java:56)
        at org.h2.engine.Engine.openSession(Engine.java:141)
        at org.h2.engine.Engine.getSession(Engine.java:120)
        at org.h2.engine.Session.createSession(Session.java:119)
        at org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java:235)
        at org.h2.engine.SessionRemote.createSession(SessionRemote.java:213)
        at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:110)
        at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:94)
        at org.h2.Driver.connect(Driver.java:58)
        at java.sql.DriverManager.getConnection(DriverManager.java:582)
        at java.sql.DriverManager.getConnection(DriverManager.java:185)
        at com.backup42.server.DbVerifierForH2.getConnection(DbVerifierForH2.java:92)
        at com.backup42.server.DbVerifierForH2.verifyDb(DbVerifierForH2.java:33)
        at com.backup42.main.CPServer.main(CPServer.java:361)
[...]

Fortunately the CrashPlan PRO server frequently creates dumps of its internal database and I was able to restore the server’s database from such a dump with CrashPlan’s restore_database.sh script (see CrashPlan Pro support).

The location of the database dumps could be found in /var/log/proserver/app.log:

[...]
DBDumpDir   = /var/opt/proserver/dumps
[...]

To restore the database execute the restore_database.sh and pass a dump file as argument:

/opt/proserver/bin/restore_database.sh /var/opt/proserver/dumps/proserver-db_[...].sql.gz

This script shuts down the CrashPlan PRO server before restoring the database and restarts the server after the restore is completed.

After the CrashPlan server is up and running again the CrashPlan manager web user interface shows the message

Your PRO Server is running from a newly imported database. The old database has been preserved within: /opt/proserver/db.bak
This message will be displayed until that backup directory is manually moved to a safe location or deleted.

Leave a comment

Your email address will not be published. Required fields are marked *

*