Hi,
I believe this is fixed with the latest version of H2.
Regards,
Thomas
On Sat, May 4, 2013 at 7:04 AM, Ainimyoung wrote:
> 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 0x008a5720 (object 0x0006283c4dd0, 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 0x007a0d00 (object 0x0006283c9558, 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 0x008a5720 (object 0x0006283c4dd0, 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 <0x0006283c4dd0> (a org.h2.engine.Database)
> at org.h2.engine.Engine.openSession(Engine.java:159)
> - locked <0x00062394e058> (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 <0x0006283c9558> (a org.h2.engine.Session)
> at org.h2.store.LobStorage.readBlock(LobStorage.java:226)
> - locked <0x0006283c4dd0> (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 <0x00077ce60998> (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 <0x00077ce60998> (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 <0x0006283c4dd0> (a org.h2.engine.Database)
> at org.h2.schema.Sequence.flush(Sequence.java:127)
> - locked <0x0006283c9558> (a org.h2.engine.Session)
> - locked <0x0006284102b0> (a org.h2.schema.Sequence)
> at org.h2.schema.Sequence.getNext(Sequence.java:92)
> - locked <0x0006284102b0> (a org.h2.schema.Sequence)
> at org.h2.expression.SequenceValue.getValue(SequenceValue.java:30)
> at org.h2.table.Column.validateConvertUpdateSequence(Column.java:264)
> - locked <0x0006284101f8> (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 <0x000628436c18> (a org.h2.engine.Session)
> at org.h2.server.TcpServerThread.process(TcpServerThread.java:334)
> - locked <0x000628436c18> (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 rec