I have also encountered another situation that produces the same error once 
the database is restarted but for this situation the database was run with 
option DB_CLOSE_ON_EXIT=FALSE because without the option I get an exception 
that says that the database is already closed (and suggests to use the 
option DB_CLOSE_ON_EXIT).

I forgot to mention that in both cases Hibernate is configured to use 
HikariCP for connection pooling.

Below the exception that recommends to use option DB_CLOSE_ON_EXIT=FALSE 
but produces "Block not found" error once the database is restarted:

org.h2.jdbc.JdbcSQLException: Database is already closed (to disable 
> automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db 
> URL) [90121-187]

        at 
> org.h2.message.DbException.getJdbcSQLException(DbException.java:345)

        at org.h2.message.DbException.get(DbException.java:179)

        at org.h2.message.DbException.get(DbException.java:155)

        at org.h2.message.DbException.get(DbException.java:144)

        at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1469)

        at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1444)

        at org.h2.jdbc.JdbcConnection.getAutoCommit(JdbcConnection.java:447)

        at 
> com.zaxxer.hikari.proxy.ConnectionJavassistProxy.getAutoCommit(ConnectionJavassistProxy.java)

        at 
> org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction.doBegin(JdbcTransaction.java:68)

        at 
> org.hibernate.engine.transaction.spi.AbstractTransactionImpl.begin(AbstractTransactionImpl.java:162)

        at 
> org.hibernate.internal.SessionImpl.beginTransaction(SessionImpl.java:1471)

        at 
> org.ow2.proactive.scheduler.core.db.TransactionHelper.tryRunWithTransaction(TransactionHelper.java:68)

        ...


Regards,

Laurent

On Thursday, July 23, 2015 at 8:14:12 PM UTC+2, Laurent Pellegrino wrote:
>
> Part of my test (including the database) runs in a forked process created 
> using ProcessBuilder. I call Process#destroy to destroy the JVM that runs 
> the database. It seems that the destroy call triggers a SIGTERM, which is 
> not as abrupt as I was thinking. 
>
> Regards,
>
> Laurent
>
>
> On Thursday, July 23, 2015 at 7:31:28 PM UTC+2, Thomas Mueller wrote:
>>
>> Hi,
>>
>> How do you kill the database?
>>
>> Regards,
>> Thomas
>>
>>
>> On Thu, Jul 23, 2015 at 5:21 PM, Laurent Pellegrino <
>> [email protected]> wrote:
>>
>>> Hello,
>>>
>>> I am using H2 version 1.4.187 along with Hibernate in order to persist 
>>> some data for test. These data contain some BLOBs which are inserted in the 
>>> DB using transactions. Once transactions are finished, the database is 
>>> killed abruptly and then restarted. 
>>>
>>> Unfortunately, when the database is restarted, if I execute a query that 
>>> access to some BLOB data I get an exception. 
>>>
>>> Is it a known issue ? is there a workaround while still using MVCC ? is 
>>> a fix planned soon ?  
>>>
>>> Below is a copy of the exception mentioned previously:
>>>
>>> [Scheduler output]: Caused by: org.hibernate.HibernateException: 
>>>> IOException occurred reading a binary value
>>>
>>> [Scheduler output]: at 
>>>> org.hibernate.type.descriptor.java.DataHelper.extractBytes(DataHelper.java:191)
>>>
>>> [Scheduler output]: at 
>>>> org.hibernate.type.descriptor.java.SerializableTypeDescriptor.wrap(SerializableTypeDescriptor.java:137)
>>>
>>> [Scheduler output]: at 
>>>> org.hibernate.type.descriptor.java.SerializableTypeDescriptor.wrap(SerializableTypeDescriptor.java:44)
>>>
>>> [Scheduler output]: at 
>>>> org.hibernate.type.descriptor.sql.BlobTypeDescriptor$1.doExtract(BlobTypeDescriptor.java:65)
>>>
>>> [Scheduler output]: at 
>>>> org.hibernate.type.descriptor.sql.BasicExtractor.extract(BasicExtractor.java:64)
>>>
>>> [Scheduler output]: at 
>>>> org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:267)
>>>
>>> [Scheduler output]: at 
>>>> org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:263)
>>>
>>> [Scheduler output]: at 
>>>> org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:253)
>>>
>>> [Scheduler output]: at 
>>>> org.hibernate.type.AbstractStandardBasicType.hydrate(AbstractStandardBasicType.java:338)
>>>
>>> [Scheduler output]: at 
>>>> org.hibernate.persister.entity.AbstractEntityPersister.hydrate(AbstractEntityPersister.java:2969)
>>>
>>> [Scheduler output]: at 
>>>> org.hibernate.loader.Loader.loadFromResultSet(Loader.java:1696)
>>>
>>> [Scheduler output]: at 
>>>> org.hibernate.loader.Loader.instanceNotYetLoaded(Loader.java:1628)
>>>
>>> [Scheduler output]: at 
>>>> org.hibernate.loader.Loader.getRow(Loader.java:1515)
>>>
>>> [Scheduler output]: at 
>>>> org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:726)
>>>
>>> [Scheduler output]: at 
>>>> org.hibernate.loader.Loader.processResultSet(Loader.java:953)
>>>
>>> [Scheduler output]: at 
>>>> org.hibernate.loader.Loader.doQuery(Loader.java:921)
>>>
>>> [Scheduler output]: at 
>>>> org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:355)
>>>
>>> [Scheduler output]: at 
>>>> org.hibernate.loader.Loader.doList(Loader.java:2554)
>>>
>>> [Scheduler output]: at 
>>>> org.hibernate.loader.Loader.doList(Loader.java:2540)
>>>
>>> [Scheduler output]: at 
>>>> org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2370)
>>>
>>> [Scheduler output]: at 
>>>> org.hibernate.loader.Loader.list(Loader.java:2365)
>>>
>>> [Scheduler output]: at 
>>>> org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:497)
>>>
>>> [Scheduler output]: at 
>>>> org.hibernate.hql.internal.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:387)
>>>
>>> [Scheduler output]: at 
>>>> org.hibernate.engine.query.spi.HQLQueryPlan.performList(HQLQueryPlan.java:236)
>>>
>>> [Scheduler output]: at 
>>>> org.hibernate.internal.SessionImpl.list(SessionImpl.java:1300)
>>>
>>> [Scheduler output]: at 
>>>> org.hibernate.internal.QueryImpl.list(QueryImpl.java:103)
>>>
>>> [Scheduler output]: at 
>>>> org.ow2.proactive.scheduler.core.db.SchedulerDBManager.loadJobResult(SchedulerDBManager.java:1297)
>>>
>>> [Scheduler output]: at 
>>>> org.ow2.proactive.scheduler.core.db.SchedulerDBManager.access$1700(SchedulerDBManager.java:76)
>>>
>>> [Scheduler output]: at 
>>>> org.ow2.proactive.scheduler.core.db.SchedulerDBManager$29.executeWork(SchedulerDBManager.java:1227)
>>>
>>> [Scheduler output]: at 
>>>> org.ow2.proactive.scheduler.core.db.SchedulerDBManager$29.executeWork(SchedulerDBManager.java:1203)
>>>
>>> [Scheduler output]: at 
>>>> org.ow2.proactive.scheduler.core.db.TransactionHelper.runWithoutTransaction(TransactionHelper.java:95)
>>>
>>> [Scheduler output]: ... 8 more
>>>
>>> [Scheduler output]: Caused by: java.io.IOException: Block not found in 
>>>> id [1, -30, 7, 5] [1.4.187/50]
>>>
>>> [Scheduler output]: at 
>>>> org.h2.mvstore.StreamStore$Stream.read(StreamStore.java:466)
>>>
>>> [Scheduler output]: at java.io.InputStream.read(InputStream.java:101)
>>>
>>> [Scheduler output]: at 
>>>> org.hibernate.type.descriptor.java.DataHelper.extractBytes(DataHelper.java:183)
>>>
>>> [Scheduler output]: ... 38 more
>>>
>>> [Scheduler output]: Caused by: java.lang.IllegalStateException: Block 5 
>>>> not found [1.4.187/50]
>>>
>>> [Scheduler output]: at 
>>>> org.h2.mvstore.DataUtils.newIllegalStateException(DataUtils.java:773)
>>>
>>> [Scheduler output]: at 
>>>> org.h2.mvstore.StreamStore.getBlock(StreamStore.java:388)
>>>
>>> [Scheduler output]: at 
>>>> org.h2.mvstore.StreamStore$Stream.nextBuffer(StreamStore.java:503)
>>>
>>> [Scheduler output]: at 
>>>> org.h2.mvstore.StreamStore$Stream.read(StreamStore.java:460)
>>>
>>> [Scheduler output]: ... 40 more 
>>>
>>>  -- 
>>> 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].
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