0
Under review

[2.0.2] Database corruption

lkj 3 years ago updated by Tom 3 years ago 9

Hi,


Following a few days of everything working smoothly, today, everything is unfortunately broken.


Initially, I was able to connect to the admin interface. After entering the admin password, ubooquity seemed to go into a redirection loop.


Some relevant log messages:


20170513 16:25:53 [qtp2898168-6297] ERROR com.ubooquity.data.database.f - Cound not get session token entry for user : UbooquityInternalAdministratorUserName
org.h2.jdbc.JdbcSQLException: The database has been closed [90098-193]
20170513 16:25:53 [qtp2898168-6297] INFO  com.ubooquity.d.a - Admin cookie token invalid or too old. Access Denied. [ip:192.168.1.113]
20170513 16:25:53 [qtp2898168-3451] ERROR com.ubooquity.data.database.f - Cound not get session token entry for user : UbooquityInternalAdministratorUserName
org.h2.jdbc.JdbcSQLException: The database has been closed [90098-193]
20170513 16:26:03 [qtp2898168-6299] ERROR com.ubooquity.data.database.f - Error while creating/updating session in database
org.h2.jdbc.JdbcSQLException: The database has been closed [90098-193]
20170513 16:26:03 [qtp2898168-6299] INFO  com.ubooquity.d.a - Admin successfully logged in
20170513 16:26:03 [qtp2898168-6302] ERROR com.ubooquity.data.database.f - Cound not get session token entry for user : UbooquityInternalAdministratorUserName
org.h2.jdbc.JdbcSQLException: General error: "java.lang.IllegalStateException: File corrupted in chunk 595347, expected page length 4..256, got 1409434955 [1.4.193/6]" [50000-193]
20170513 16:26:03 [qtp2898168-6302] INFO  com.ubooquity.d.a - Admin cookie token invalid or too old. Access Denied. [ip:192.168.1.113]
20170513 16:26:03 [qtp2898168-6298] ERROR com.ubooquity.data.database.f - Cound not get session token entry for user : UbooquityInternalAdministratorUserName
org.h2.jdbc.JdbcSQLException: General error: "java.lang.IllegalStateException: File corrupted in chunk 595347, expected page length 4..256, got 1409434955 [1.4.193/6]" [50000-193]

[much more of this before the server was shut down]


When trying to restart, the following happens:


20170513 16:28:03 [main] INFO  com.ubooquity.Ubooquity - Running with the following parameters - headless: true, libraryport: 2200, adminport: 2202, remoteadmin: true, host: null, debug: false, execdir: /path/to/comics
20170513 16:28:16 [main] ERROR com.ubooquity.data.database.d - Cound not get number of existing tables
org.h2.jdbc.JdbcSQLException: General error: "java.lang.IllegalStateException: File corrupted in chunk 595347, expected page length 4..256, got 1409434955 [1.4.193/6]" [50000-193]
20170513 16:28:16 [main] ERROR com.ubooquity.data.database.d - Could not configure collation strength
org.h2.jdbc.JdbcSQLException: General error: "java.lang.IllegalStateException: File corrupted in chunk 595347, expected page length 4..256, got 1409434955 [1.4.193/6]" [50000-193]
20170513 16:28:16 [main] ERROR com.ubooquity.data.database.c - Could not create COMIC table
org.h2.jdbc.JdbcSQLException: General error: "java.lang.IllegalStateException: File corrupted in chunk 595347, expected page length 4..256, got 1409434955 [1.4.193/6]" [50000-193]
20170513 16:28:16 [main] ERROR com.ubooquity.Ubooquity - Exiting application because of exception
org.h2.jdbc.JdbcSQLException: General error: "java.lang.IllegalStateException: File corrupted in chunk 595347, expected page length 4..256, got 1409434955 [1.4.193/6]" [50000-193]
20170513 16:28:16 [main] ERROR com.ubooquity.Ubooquity - Failed to display error dialog
java.lang.IllegalStateException: Toolkit not initialized


and that's the end of it. As mentioned in the subject, this is ubooquity 2.0.2 running on ubuntu 16.04.2.


thanks.



Having the same issue here. Had to delete and recreate the database to use it again.

Hi,


As above, I also recreated the database when this happened. Everything has been fine since.


Tom, if you want a copy of the corrupt database, let me know - I kept a copy.


thanks


Under review

Thanks for the proposal, but there is nothing I can do against file corruption: this is managed at a level (the database library) that is not run by my code.


As for the root cause, I can only guess the process was killed brutally at some point (power outage perhaps).

No power outages on my end. My servers haven't been turned off in months.

Since my initial comment on this post, I have since had my database become corrupted five or six times. No random power outages to speak of. The machine has been running steadily with only one or two reboots. 

To be clear, I had the non-beta version running flawlessly for a year or more on the same hardware with no database issues. 

Perhaps I've been a bit luckier. I've had a couple of power outages, but everything has been fine on this end. No other corruption since the initial problem.

I'd say so. This is rather frustrating. I love version 2 but may have to regress back to version 1 if this behavior continues.

As I wrote earlier, the database file is entirely managed by the database library used by Ubooquity (H2, which is a very widely used, very robust library).


Now, between Ubooquity 1.10.1 and 2.0.0, I updated the H2 version from 1.4.187 to 1.4.193.

This should not have caused any issue, but funny side effects that happen only on specific setups are always possible.


So I built two special versions of Ubooquity 2.1.0:

So if you're still interested in using Ubooquity 2.x, you can try these versions in case they work better for you.

Of course, I would be interested in knowing the result of your tests. I don't know if it could be enough to pinpoint the cause of your issue, but you never know...