Hi, I think I found and fixed this problem now. The fix is in the trunk. I also have a test case to reproduce the issue. From the stack trace it's relatively clear it is the same issue.
Regards, Thomas On Monday, December 22, 2014, pishen tsai <[email protected]> wrote: > Sorry, the exception only happens when closing a connection with a large > amount (114508) of MERGE queries executed, and I couldn't post the test > case for you. > The table only contains three columns as "name VARCHAR PRIMARY KEY, df > INT, category_counts VARCHAR" > This is reproducible in both 1.4.183 and 1.4.184. > > In 1.4.184 I got > org.h2.jdbc.JdbcSQLException: General error: > "java.lang.IllegalStateException: Negative position -1593 [1.4.184/6]" > [50000-184] > at > org.h2.message.DbException.getJdbcSQLException(DbException.java:345) > ~[h2-1.4.184.jar:1.4.184] > at org.h2.message.DbException.get(DbException.java:168) > ~[h2-1.4.184.jar:1.4.184] > at org.h2.message.DbException.convert(DbException.java:295) > ~[h2-1.4.184.jar:1.4.184] > at > org.h2.mvstore.db.MVTableEngine$1.uncaughtException(MVTableEngine.java:93) > ~[h2-1.4.184.jar:1.4.184] > at org.h2.mvstore.MVStore.writeInBackground(MVStore.java:2374) > ~[h2-1.4.184.jar:1.4.184] > Caused by: java.lang.IllegalStateException: Negative position -1593 > [1.4.184/6] > at > org.h2.mvstore.DataUtils.newIllegalStateException(DataUtils.java:773) > ~[h2-1.4.184.jar:1.4.184] > at > org.h2.mvstore.MVStore.readPageChunkReferences(MVStore.java:1267) > ~[h2-1.4.184.jar:1.4.184] > at > org.h2.mvstore.MVStore.collectReferencedChunks(MVStore.java:1245) > ~[h2-1.4.184.jar:1.4.184] > at > org.h2.mvstore.MVStore.collectReferencedChunks(MVStore.java:1249) > ~[h2-1.4.184.jar:1.4.184] > at > org.h2.mvstore.MVStore.collectReferencedChunks(MVStore.java:1249) > ~[h2-1.4.184.jar:1.4.184] > > I'm falling back to 1.4.182 now and I found that the .mv.db file is no > longer that large (around 500M), not sure if I suddenly change anything. > > Regards, > Pishen > > > > > 2014-12-20 16:11 GMT+08:00 Thomas Mueller <[email protected] > <javascript:_e(%7B%7D,'cvml','[email protected]');>>: > >> Hi, >> >> Is this exception reproducible with version 1.4.184, with a fresh >> database? If yes, would it be possible to send me or post a reproducible >> test case? >> >> Regards, >> Thomas >> >> On Wed, Dec 17, 2014 at 5:36 PM, pishen tsai <[email protected] >> <javascript:_e(%7B%7D,'cvml','[email protected]');>> wrote: >>> >>> The .mv.db file is not growing that large (now around 200M) even without >>> re-opening this time. >>> But I got an Exception that I have no idea why... >>> >>> org.h2.jdbc.JdbcSQLException: General error: >>> "java.lang.IllegalStateException: Negative position -1847 [1.4.183/6]" >>> [50000-183] >>> at >>> org.h2.message.DbException.getJdbcSQLException(DbException.java:345) >>> ~[h2-1.4.183.jar:1.4.183] >>> at org.h2.message.DbException.get(DbException.java:168) >>> ~[h2-1.4.183.jar:1.4.183] >>> at org.h2.message.DbException.convert(DbException.java:295) >>> ~[h2-1.4.183.jar:1.4.183] >>> at >>> org.h2.mvstore.db.MVTableEngine$1.uncaughtException(MVTableEngine.java:93) >>> ~[h2-1.4.183.jar:1.4.183] >>> at org.h2.mvstore.MVStore.writeInBackground(MVStore.java:2369) >>> ~[h2-1.4.183.jar:1.4.183] >>> Caused by: java.lang.IllegalStateException: Negative position -1847 >>> [1.4.183/6] >>> at >>> org.h2.mvstore.DataUtils.newIllegalStateException(DataUtils.java:768) >>> ~[h2-1.4.183.jar:1.4.183] >>> at >>> org.h2.mvstore.MVStore.readPageChunkReferences(MVStore.java:1262) >>> ~[h2-1.4.183.jar:1.4.183] >>> at >>> org.h2.mvstore.MVStore.collectReferencedChunks(MVStore.java:1240) >>> ~[h2-1.4.183.jar:1.4.183] >>> at >>> org.h2.mvstore.MVStore.collectReferencedChunks(MVStore.java:1244) >>> ~[h2-1.4.183.jar:1.4.183] >>> at >>> org.h2.mvstore.MVStore.collectReferencedChunks(MVStore.java:1244) >>> ~[h2-1.4.183.jar:1.4.183] >>> >>> Regards, >>> Pishen >>> >>> >>> >>> >>> 2014-12-16 0:13 GMT+08:00 pishen tsai <[email protected] >>> <javascript:_e(%7B%7D,'cvml','[email protected]');>>: >>>> >>>> Thanks, I will try it in days, and will report the result after that. >>>> >>>> Regards, >>>> Pishen >>>> >>>> 2014-12-16 0:09 GMT+08:00 Thomas Mueller <[email protected] >>>> <javascript:_e(%7B%7D,'cvml','[email protected]');>>: >>>>> >>>>> Hi, >>>>> >>>>> Could you try again with the latest version of H2? >>>>> >>>>> (Please not there is a bug that prevents index usage if you use >>>>> auto-increment column; but I think you don't use this, so it shouldn't >>>>> affect you). >>>>> >>>>> Regards, >>>>> Thomas >>>>> >>>>> On Mon, Dec 1, 2014 at 12:18 PM, pishen tsai <[email protected] >>>>> <javascript:_e(%7B%7D,'cvml','[email protected]');>> wrote: >>>>> >>>>>> Hi, >>>>>> >>>>>> I have surveyed a bit and found that h2 need to compact the database >>>>>> when the JDBC connection is closed. >>>>>> Hence I tried to close and reopen the connection every 1000~2000 >>>>>> INSERT/UPDATE. >>>>>> Now the size of .mv.db grows much slower, but the size is still >>>>>> larger than 44M, maybe I have to enlarge the shutdown delay for the DB to >>>>>> compact more. May tried that later. >>>>>> >>>>>> Thanks, >>>>>> pishen >>>>>> >>>>>> Thomas Mueller於 2014年12月1日星期一UTC+8下午2時50分53秒寫道: >>>>>>> >>>>>>> Hi, >>>>>>> >>>>>>> It is a known problem that the .mv.db file grows large, and I'm >>>>>>> working on reducing the file size. However it shouldn't grow _that_ >>>>>>> large. >>>>>>> Could you post your test case please? >>>>>>> >>>>>>> Regards, >>>>>>> Thomas >>>>>>> >>>>>>> On Sunday, November 30, 2014, pishen tsai <[email protected]> wrote: >>>>>>> >>>>>>>> Hello, >>>>>>>> >>>>>>>> I'm using Anorm (in Play framework 2.3.6) to store one table with >>>>>>>> 450000 rows in H2 (1.4.182). >>>>>>>> >>>>>>>> The table is created by "CREATE TABLE terms (name VARCHAR(20) >>>>>>>> PRIMARY KEY, df INT)" >>>>>>>> >>>>>>>> After frequently INSERT and UPDATE all the data into the table, the >>>>>>>> .mv.db file size grows up to 20GB. >>>>>>>> Then, I close the JDBC connection and open it again, and the .mv.db >>>>>>>> file size drop back to 44MB. >>>>>>>> Any idea why the file size can grow and drop so much? I have >>>>>>>> checked the content of table, and the data seems unchanged. >>>>>>>> >>>>>>>> I'm not sure if it's the problem of transaction log, but by >>>>>>>> default, Anorm use JDBC with auto-commit, so each INSERT and UPDATE >>>>>>>> should >>>>>>>> be in one single transaction? >>>>>>>> >>>>>>>> Anorm: https://playframework.com/documentation/2.3.x/ScalaAnorm >>>>>>>> >>>>>>>> Thanks, >>>>>>>> pishen >>>>>>>> >>>>>>>> -- >>>>>>>> You received this message because you are subscribed to the Google >>>>>>>> Groups "H2 Database" group. >>>>>>>> To unsubscribe from this group and stop receiving emails from it, >>>>>>>> send an email to [email protected]. >>>>>>>> To post to this group, send email to [email protected]. >>>>>>>> Visit this group at http://groups.google.com/group/h2-database. >>>>>>>> For more options, visit https://groups.google.com/d/optout. >>>>>>>> >>>>>>> -- >>>>>> You received this message because you are subscribed to the Google >>>>>> Groups "H2 Database" group. >>>>>> To unsubscribe from this group and stop receiving emails from it, >>>>>> send an email to [email protected] >>>>>> <javascript:_e(%7B%7D,'cvml','h2-database%[email protected]');> >>>>>> . >>>>>> To post to this group, send email to [email protected] >>>>>> <javascript:_e(%7B%7D,'cvml','[email protected]');>. >>>>>> Visit this group at http://groups.google.com/group/h2-database. >>>>>> For more options, visit https://groups.google.com/d/optout. >>>>>> >>>>> >>>>> -- >>>>> You received this message because you are subscribed to a topic in the >>>>> Google Groups "H2 Database" group. >>>>> To unsubscribe from this topic, visit >>>>> https://groups.google.com/d/topic/h2-database/dqONbAmK9-M/unsubscribe. >>>>> To unsubscribe from this group and all its topics, send an email to >>>>> [email protected] >>>>> <javascript:_e(%7B%7D,'cvml','h2-database%[email protected]');> >>>>> . >>>>> To post to this group, send email to [email protected] >>>>> <javascript:_e(%7B%7D,'cvml','[email protected]');>. >>>>> Visit this group at http://groups.google.com/group/h2-database. >>>>> For more options, visit https://groups.google.com/d/optout. >>>>> >>>> -- >>> You received this message because you are subscribed to the Google >>> Groups "H2 Database" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to [email protected] >>> <javascript:_e(%7B%7D,'cvml','h2-database%[email protected]');> >>> . >>> To post to this group, send email to [email protected] >>> <javascript:_e(%7B%7D,'cvml','[email protected]');>. >>> Visit this group at http://groups.google.com/group/h2-database. >>> For more options, visit https://groups.google.com/d/optout. >>> >> -- >> You received this message because you are subscribed to a topic in the >> Google Groups "H2 Database" group. >> To unsubscribe from this topic, visit >> https://groups.google.com/d/topic/h2-database/dqONbAmK9-M/unsubscribe. >> To unsubscribe from this group and all its topics, send an email to >> [email protected] >> <javascript:_e(%7B%7D,'cvml','h2-database%[email protected]');> >> . >> To post to this group, send email to [email protected] >> <javascript:_e(%7B%7D,'cvml','[email protected]');>. >> Visit this group at http://groups.google.com/group/h2-database. >> For more options, visit https://groups.google.com/d/optout. >> > > -- > You received this message because you are subscribed to the Google Groups > "H2 Database" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected] > <javascript:_e(%7B%7D,'cvml','h2-database%[email protected]');> > . > To post to this group, send email to [email protected] > <javascript:_e(%7B%7D,'cvml','[email protected]');>. > Visit this group at http://groups.google.com/group/h2-database. > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "H2 Database" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/h2-database. For more options, visit https://groups.google.com/d/optout.
