Hi, I'm working on a project with H2 1.3.171 in server mode.
Everything was fine while data growing daily until H2 hung due to a 
Java-level deadlock as below.

Found one Java-level deadlock:
=============================
"H2 TCP Server (tcp://127.0.1.1:9092) thread":
  waiting to lock monitor 0x00000000008a5720 (object 0x00000006283c4dd0, a 
org.h2.engine.Database),
  which is held by "H2 TCP Server (tcp://127.0.1.1:9092) thread"
"H2 TCP Server (tcp://127.0.1.1:9092) thread":
  waiting to lock monitor 0x00000000007a0d00 (object 0x00000006283c9558, a 
org.h2.engine.Session),
  which is held by "H2 TCP Server (tcp://127.0.1.1:9092) thread"
"H2 TCP Server (tcp://127.0.1.1:9092) thread":
  waiting to lock monitor 0x00000000008a5720 (object 0x00000006283c4dd0, a 
org.h2.engine.Database),
  which is held by "H2 TCP Server (tcp://127.0.1.1:9092) thread"

Java stack information for the threads listed above:
===================================================
"H2 TCP Server (tcp://127.0.1.1:9092) thread":
    at org.h2.engine.Engine.openSession(Engine.java:71)
    - waiting to lock <0x00000006283c4dd0> (a org.h2.engine.Database)
    at org.h2.engine.Engine.openSession(Engine.java:159)
    - locked <0x000000062394e058> (a org.h2.engine.Engine)
    at org.h2.engine.Engine.createSessionAndValidate(Engine.java:138)
    at org.h2.engine.Engine.createSession(Engine.java:121)
    at org.h2.server.TcpServerThread.run(TcpServerThread.java:137)
    at java.lang.Thread.run(Thread.java:722)
"H2 TCP Server (tcp://127.0.1.1:9092) thread":
    at 
org.h2.jdbc.JdbcPreparedStatement.executeQuery(JdbcPreparedStatement.java:101)
    - waiting to lock <0x00000006283c9558> (a org.h2.engine.Session)
    at org.h2.store.LobStorage.readBlock(LobStorage.java:226)
    - locked <0x00000006283c4dd0> (a org.h2.engine.Database)
    at 
org.h2.store.LobStorage$LobInputStream.fillBuffer(LobStorage.java:463)
    at org.h2.store.LobStorage$LobInputStream.readFully(LobStorage.java:439)
    at org.h2.store.LobStorage$LobInputStream.read(LobStorage.java:430)
    at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:283)
    at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:325)
    at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:177)
    - locked <0x000000077ce60998> (a java.io.InputStreamReader)
    at java.io.InputStreamReader.read(InputStreamReader.java:184)
    at java.io.BufferedReader.fill(BufferedReader.java:154)
    at java.io.BufferedReader.read1(BufferedReader.java:205)
    at java.io.BufferedReader.read(BufferedReader.java:279)
    - locked <0x000000077ce60998> (a java.io.InputStreamReader)
    at java.io.Reader.read(Reader.java:140)
    at org.h2.store.Data.copyString(Data.java:1293)
    at org.h2.value.Transfer.writeValue(Transfer.java:462)
    at org.h2.server.TcpServerThread.writeValue(TcpServerThread.java:487)
    at org.h2.server.TcpServerThread.sendRow(TcpServerThread.java:469)
    at org.h2.server.TcpServerThread.process(TcpServerThread.java:322)
    at org.h2.server.TcpServerThread.run(TcpServerThread.java:150)
    at java.lang.Thread.run(Thread.java:722)
"H2 TCP Server (tcp://127.0.1.1:9092) thread":
    at org.h2.engine.Database.update(Database.java:1429)
    - waiting to lock <0x00000006283c4dd0> (a org.h2.engine.Database)
    at org.h2.schema.Sequence.flush(Sequence.java:127)
    - locked <0x00000006283c9558> (a org.h2.engine.Session)
    - locked <0x00000006284102b0> (a org.h2.schema.Sequence)
    at org.h2.schema.Sequence.getNext(Sequence.java:92)
    - locked <0x00000006284102b0> (a org.h2.schema.Sequence)
    at org.h2.expression.SequenceValue.getValue(SequenceValue.java:30)
    at org.h2.table.Column.validateConvertUpdateSequence(Column.java:264)
    - locked <0x00000006284101f8> (a org.h2.table.Column)
    at org.h2.table.Table.validateConvertUpdateSequence(Table.java:692)
    at org.h2.command.dml.Insert.insertRows(Insert.java:120)
    at org.h2.command.dml.Insert.update(Insert.java:84)
    at org.h2.command.CommandContainer.update(CommandContainer.java:75)
    at org.h2.command.Command.executeUpdate(Command.java:230)
    - locked <0x0000000628436c18> (a org.h2.engine.Session)
    at org.h2.server.TcpServerThread.process(TcpServerThread.java:334)
    - locked <0x0000000628436c18> (a org.h2.engine.Session)
    at org.h2.server.TcpServerThread.run(TcpServerThread.java:150)
    at java.lang.Thread.run(Thread.java:722)

Found 1 deadlock.

The entire jstack log is in attachment.

Environment:
    h2 1.3.171
    java version "1.7.0_05"
    Java(TM) SE Runtime Environment (build 1.7.0_05-b05)
    Java HotSpot(TM) 64-Bit Server VM (build 23.1-b03, mixed mode)

Can any one help? Thanks!

Best Regards.

-- 
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?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.


Attachment: jstack.log
Description: Binary data

Reply via email to