Hi Thomas,

> The default page size is 4096 bytes, did you set it manually to 2048 
bytes?

No, I didn't change it. Do note, that the databases were created with 
1.3.176 and the crashes happened with 1.4.187.

I've reverted to 1.3.176. That stopped the crashes almost immediately, 
although we are still getting a few. These newer crash messages refer to 
4096 bytes. eg:

Caused by: java.lang.ArrayIndexOutOfBoundsException: 4096
        at org.h2.store.Data.writeVarInt(Data.java:1187)
        at org.h2.store.Data.writeValue(Data.java:531)
        at org.h2.index.PageBtreeIndex.writeRow(PageBtreeIndex.java:394)
        at org.h2.index.PageBtreeNode.writeData(PageBtreeNode.java:454)
        at org.h2.index.PageBtreeNode.write(PageBtreeNode.java:427)
        at org.h2.store.PageStore.writeBack(PageStore.java:1047)
        at org.h2.util.CacheLRU.removeOld(CacheLRU.java:216)
        at org.h2.util.CacheLRU.removeOldIfRequired(CacheLRU.java:142)
        at org.h2.util.CacheLRU.put(CacheLRU.java:116)

On Saturday, 9 May 2015 02:12:07 UTC+10, Thomas Mueller wrote:
>
> Hi,
>
> I don't know what the problem could be. There were no changes in this area.
>
> What is strange is: The exception says it is trying to read past the end 
> of a page that is 2048 bytes long. The default page size is 4096 bytes, did 
> you set it manually to 2048 bytes? According to the database URL it doesn't 
> look like.
>
> Regards,
> Thomas
>
>
> On Wednesday, May 6, 2015, Steve McLeod <steve....@gmail.com <javascript:>> 
> wrote:
>
>> Today I released an update for my product, Poker Copilot. Until today, it 
>> used H2 1.3.176. Today's update uses H2 1.4.187, with MV_STORE=false 
>> appended to the database URL. After today's update, we are getting many H2 
>> crash reports on both Windows and OS X. Poker Copilot is a mature product 
>> that has been using H2 for six years, and is used by many people each day; 
>> until this release we were getting infrequent crash reports. It does 
>> initially look like this is a sporadic H2 problem, although I am, of 
>> course, open to the idea that it is caused by my own programming mistakes.
>>
>> On OS X, the database URL is 
>> jdbc:h2:/Users/steve/Library/Application 
>> Support/com.barbarysoftware.pokercopilot/database/pokercopilot;DATABASE_EVENT_LISTENER='com.barbarysoftware.pokercopilot.database.DatabaseListener';COMPRESS_LOB=DEFLATE;MV_STORE=false;CACHE_SIZE=65536
>>
>> The most common crash reports are variants of:
>>
>>  java.lang.ArrayIndexOutOfBoundsException: 2048
>>         at org.h2.store.Data.writeVarLong(Data.java:1254)
>>         at org.h2.store.Data.writeValue(Data.java:523)
>>         at org.h2.index.PageBtreeIndex.writeRow(PageBtreeIndex.java:393)
>>         at org.h2.index.PageBtreeNode.writeData(PageBtreeNode.java:453)
>>         at org.h2.index.PageBtreeNode.write(PageBtreeNode.java:426)
>>         at org.h2.store.PageStore.writeBack(PageStore.java:1046)
>>         at org.h2.util.CacheLRU.removeOld(CacheLRU.java:215)
>>         at org.h2.util.CacheLRU.removeOldIfRequired(CacheLRU.java:141)
>>         at org.h2.util.CacheLRU.put(CacheLRU.java:115)
>>         at org.h2.store.PageStore.getPage(PageStore.java:857)
>>         at org.h2.index.PageDataIndex.getPage(PageDataIndex.java:233)
>>         at org.h2.index.PageDataNode.getRowWithKey(PageDataNode.java:279)
>>         at org.h2.index.PageDataIndex.getRowWithKey(PageDataIndex.
>> java:426)
>>         at org.h2.index.PageDataIndex.getRow(PageDataIndex.java:415)
>>         at org.h2.table.RegularTable.getRow(RegularTable.java:106)
>>         at org.h2.index.PageBtreeIndex.getRow(PageBtreeIndex.java:301)
>>         at org.h2.index.PageBtreeCursor.get(PageBtreeCursor.java:45)
>>         at org.h2.index.IndexCursor.get(IndexCursor.java:260)
>>         at org.h2.table.TableFilter.getValue(TableFilter.java:913)
>>         at org.h2.expression.ExpressionColumn.getValue(
>> ExpressionColumn.java:186)
>>         at org.h2.command.dml.Select.queryFlat(Select.java:580)
>>         at org.h2.command.dml.Select.queryWithoutCache(Select.java:685)
>>         at org.h2.command.dml.Query.query(Query.java:322)
>>         at org.h2.command.dml.Query.query(Query.java:290)
>>         at org.h2.command.dml.Query.query(Query.java:36)
>>         at org.h2.command.CommandContainer.query(
>> CommandContainer.java:90)
>>         at org.h2.command.Command.executeQuery(Command.java:197)
>>         ... 18 more
>>
>> and 
>>
>> Caused by: java.lang.ArrayIndexOutOfBoundsException: 2048
>>         at org.h2.store.Data.writeStringWithoutLength(Data.java:263)
>>         at org.h2.store.Data.writeValue(Data.java:566)
>>         at org.h2.index.PageBtreeIndex.writeRow(PageBtreeIndex.java:393)
>>         at org.h2.index.PageBtreeNode.writeData(PageBtreeNode.java:453)
>>         at org.h2.index.PageBtreeNode.write(PageBtreeNode.java:426)
>>         at org.h2.store.PageStore.writeBack(PageStore.java:1046)
>>         at org.h2.util.CacheLRU.removeOld(CacheLRU.java:215)
>>         at org.h2.util.CacheLRU.removeOldIfRequired(CacheLRU.java:141)
>>         at org.h2.util.CacheLRU.put(CacheLRU.java:115)
>>         at org.h2.store.PageStore.getPage(PageStore.java:857)
>>         at org.h2.index.PageDataIndex.getPage(PageDataIndex.java:233)
>>         at org.h2.index.PageDataIndex.find(PageDataIndex.java:283)
>>         at org.h2.index.BaseIndex.find(BaseIndex.java:127)
>>         at org.h2.index.IndexCursor.find(IndexCursor.java:159)
>>         at org.h2.table.TableFilter.next(TableFilter.java:329)
>>         at org.h2.command.dml.Select.queryFlat(Select.java:573)
>>         at org.h2.command.dml.Select.queryWithoutCache(Select.java:685)
>>         at org.h2.command.dml.Query.query(Query.java:322)
>>         at org.h2.command.dml.Query.query(Query.java:290)
>>         at org.h2.command.dml.Query.query(Query.java:36)
>>         at org.h2.command.CommandContainer.query(
>> CommandContainer.java:90)
>>         at org.h2.command.Command.executeQuery(Command.java:197)
>>         ... 18 more
>>
>> and
>>
>> org.h2.jdbc.JdbcSQLException: General error: "java.lang.
>> ArrayIndexOutOfBoundsException"; SQL statement:
>> SET CACHE_SIZE 65536 [50000-187]
>>         at org.h2.message.DbException.getJdbcSQLException(
>> DbException.java:345)
>>         at org.h2.message.DbException.get(DbException.java:168)
>>         at org.h2.message.DbException.convert(DbException.java:295)
>>         at org.h2.command.Command.executeUpdate(Command.java:262)
>>         at org.h2.engine.Engine.openSession(Engine.java:196)
>>         at org.h2.engine.Engine.createSessionAndValidate(Engine.java:145)
>>         at org.h2.engine.Engine.createSession(Engine.java:128)
>>         at org.h2.engine.Engine.createSession(Engine.java:26)
>>         at org.h2.engine.SessionRemote.connectEmbeddedOrServer(
>> SessionRemote.java:347)
>>         at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:108)
>>         at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:92)
>>         at org.h2.Driver.connect(Driver.java:72)
>>         at org.h2.jdbcx.JdbcDataSource.getJdbcConnection(
>> JdbcDataSource.java:190)
>>         at org.h2.jdbcx.JdbcDataSource.getXAConnection(
>> JdbcDataSource.java:353)
>>         at org.h2.jdbcx.JdbcDataSource.getPooledConnection(
>> JdbcDataSource.java:385)
>>         at org.h2.jdbcx.JdbcConnectionPool.getConnectionNow(
>> JdbcConnectionPool.java:227)
>>         at org.h2.jdbcx.JdbcConnectionPool.getConnection(
>> JdbcConnectionPool.java:199)
>>         at com.barbarysoftware.databaseframework.JdbcTemplateCore.
>> getConnection(JdbcTemplateCore.java:46)
>>         ... 10 more
>> Caused by: java.lang.ArrayIndexOutOfBoundsException
>>
>>
>>
>> I'll need to rectify this pretty quickly. Does this sound like a problem 
>> introduced in a specific update of H2? If so, what's the version I should 
>> use to avoid this problem?
>>
>> Regards,
>>   
>> Steve McLeod
>> Founder, Poker Copilot
>> http://www.pokercopilot.com
>>
>>
>>
>>
>>  -- 
>> 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 h2-database+unsubscr...@googlegroups.com.
>> To post to this group, send email to h2-database@googlegroups.com.
>> 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 h2-database+unsubscr...@googlegroups.com.
To post to this group, send email to h2-database@googlegroups.com.
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