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.
jstack.log
Description: Binary data
