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.

Reply via email to