Re: Automatically compact databases from time to time (as a background process)

2012-03-05 Thread IntensiveH2
Thanks for the analyse. In the log file related to the DB with the issue, I found : INFO | jvm 1| 2012/02/05 19:12:14 | 2012/02/05 19:12:14 ERROR [aseWorkerThread-cockpitDB] mserver.H2Listener - [DATABASE] exceptionThrown sql=UPDATE MCTASK SET

Re: Automatically compact databases from time to time (as a background process)

2012-03-02 Thread Thomas Mueller
Hi, I added TRACE_LEVEL_FILE=3 during shutdown compact and added result in attachment. This will not really help much. It shows the database shrunk, that's it. It doesn't say why the database was big. Could you send me (or upload somewhere) the large database, or run the Recover tool on a

Re: Automatically compact databases from time to time (as a background process)

2012-03-02 Thread Thomas Mueller
Hi, I have downloaded the file now and ran the Recover tool. The database file is 3 GB, and the cockpit.h2.sql file is 9 GB. The end (tail) of the .h2.sql script is: Statistics -- page count: 1552048, free: 24350 -- page data bytes: head 486669, empty 15198569, rows 8567178 (38% full)

Re: Automatically compact databases from time to time (as a background process)

2012-02-28 Thread Noel Grandin
Hi OK, so it turns out my original idea was a bad one. Because of the way the locking works, it is not possible to display that information in the sessions table. However, using JMX works. The attached patch correctly display ongoing transactions using the H2 JMX facility. See the unit-test

Re: Automatically compact databases from time to time (as a background process)

2012-02-27 Thread IntensiveH2
Any news regarding my issue? The last status was: - command compact works but closes all current connection - I tried TRANSACTION_TIMEOUT = 33554432 but I have issue. - I tried code with TRANSACTION_START but WHERE TRANSACTION_START IS NOT NULL returns nothing. On 23 fév, 10:56, IntensiveH2

Re: Automatically compact databases from time to time (as a background process)

2012-02-23 Thread IntensiveH2
Hi, I tried your proposal but I have the issue below (with public long transactionTimeout = 33554432): INFO | jvm 1| 2012/02/23 08:54:21 | WrapperManager Error: Error in WrapperListener.start callback. java.lang.StackOverflowError INFO | jvm 1| 2012/02/23 08:54:21 | WrapperManager

Re: Automatically compact databases from time to time (as a background process)

2012-02-23 Thread IntensiveH2
Hi, I tested the compact command. I have no issue regarding corruption but I need time to perform additional validations. But compact command closed all opened connection and if you have a pool of connection, it's a problem The error message is: org.h2.jdbc.JdbcSQLException: Database is already

Re: Automatically compact databases from time to time (as a background process)

2012-02-21 Thread IntensiveH2
Also, another information. I added DEFRAG_ALWAYS=TRUE and now when I shutdow compact the database, I have the following error: first time java.lang.RuntimeException: Undo entry not written at org.h2.message.DbException.throwInternalError(DbException.java: 228) at

Re: Automatically compact databases from time to time (as a background process)

2012-02-20 Thread Noel Grandin
Hi In order to monitor for bad transactions, how about we add a TRANSACTION_START column to the SESSIONS meta-table? Regards, Noel Grandin On 2012-02-18 09:27, Thomas Mueller wrote: Hi, Can I add some debug settings on customer side? There are two options: - Use the trace options to

Re: Automatically compact databases from time to time (as a background process)

2012-02-20 Thread IntensiveH2
It should be useful to add this kind of information as JMX operation (like list sessions). On 20 fév, 10:59, Noel Grandin noelgran...@gmail.com wrote: Hi In order to monitor for bad transactions, how about we add a TRANSACTION_START column to the SESSIONS meta-table? Regards, Noel Grandin

Re: Automatically compact databases from time to time (as a background process)

2012-02-20 Thread IntensiveH2
For information My connection string is: jdbc:h2:file:D:\ProductDev\cockpitconsole\build\projects\mserver\dist \h2\cockpit \cockpit;MVCC=TRUE;AUTOCOMMIT=OFF;LOCK_MODE=3;LOG=2;CACHE_TYPE=SOFT_LRU I change also some settings like: statement.execute(set WRITE_DELAY 0); statement.execute(SET

Re: Automatically compact databases from time to time (as a background process)

2012-02-20 Thread Noel Grandin
Make sure you can build and test the H2 source code locally, and I'll make you a patch tomorrow for displaying the transaction start time in the SESSIONS table. Then you can log the output of that table regularly to see who the culprit is. On Mon, Feb 20, 2012 at 18:16, IntensiveH2

Re: Automatically compact databases from time to time (as a background process)

2012-02-20 Thread IntensiveH2
Please, can you send me directly the jar file also. I don't have the build environment yet. On 20 fév, 17:25, Noel Grandin noelgran...@gmail.com wrote: Make sure you can build and test the H2 source code locally, and I'll make you a patch tomorrow for displaying the transaction start time in

Re: Automatically compact databases from time to time (as a background process)

2012-02-20 Thread Thomas Mueller
Hi, If you want, I have some code that could be used as a starting point. It's work in progress. Warning: I havent test it; I didn't run it at all. It could be completely wrong, and possibly corrupt the database. Also, the term TRANSACTION_TIMEOUT is misleading and has to be changed (it should

Re: Automatically compact databases from time to time (as a background process)

2012-02-17 Thread Thomas Mueller
Hi, Can I add some debug settings on customer side? There are two options: - Use the trace options to analyze the JDBC method calls (append ;TRACE_LEVEL_FILE=3 to the database URL) - Use the Recover tool to find out if there are uncommitted transactions in the (large) database file (or a copy

Re: Automatically compact databases from time to time (as a background process)

2012-02-16 Thread Wolfgang Pedot
I have a related question: Triggered by this request I tried what happens if I execute shutdown compact but do not close my connection-pool as well and as one could have expected the database was reopened at the first query after the shutdown without a problem. I also tried starting a new

Re: Automatically compact databases from time to time (as a background process)

2012-02-16 Thread IntensiveH2
Hi, It is possible, based on this huge DB, to see if some transaction are not commited (I have the DB of 12GB)? Can I add some debug settings on customer side? Thanks. On 16 fév, 10:44, Thomas Mueller thomas.tom.muel...@gmail.com wrote: Hi, I would first analyze why it grows so much.

Automatically compact databases from time to time (as a background process)

2012-02-15 Thread IntensiveH2
Hi, I use H2 in a commercial product and I have an issue regarding the size of the DB (with a customer). Currently the DB size is 12 GB and after a shutdown compact/restart the new size is 800 MB When you start connection on DB (12 GB) it took around 70 minutes to start (on solaris) before to

Re: Automatically compact databases from time to time (as a background process)

2012-02-15 Thread Noel Grandin
Not sure what Thomas' plans are, but what I can suggest is that you set this setting to a nice large number -Dh2.maxCompactTime=6 And reboot your application on a regular basis. See here http://www.h2database.com/html/grammar.html#shutdown which sets the maximum time to compact the database

Re: Automatically compact databases from time to time (as a background process)

2012-02-15 Thread Noel Grandin
If you want to look at it yourself, the relevant code is in org.h2.store.PageStore#compact(int) On 2012-02-15 11:51, IntensiveH2 wrote: Thanks for the quick answer but currently it's not possible to reboot my application on a regular basis because my application must ensure scheduling,

Re: Automatically compact databases from time to time (as a background process)

2012-02-15 Thread Noel Grandin
Hi I had a quick bash at implementing this by taking an exclusive lock on the DB and re-using the existing compacting code. So I added a COMPACT command. But the unit test I added indicates that I'm corrupting the database somehow. Patch attached - Thomas, perhaps you have an idea?

Re: Automatically compact databases from time to time (as a background process)

2012-02-15 Thread IntensiveH2
Hi Thanks for your patch but customer is on production and I must to have a robust solution. Could you send me a jar file instead of a patch file (It's more easy and especially faster for me to validate it). When do you have a reliable solution (related to your previous comment that I'm