These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]

Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 1 post ] 
Author Message
 Post subject: Are different threads sharing the same Hibernate session?
PostPosted: Fri Aug 17, 2012 4:57 pm 

Joined: Fri Aug 17, 2012 10:10 am
Posts: 1
We have been chasing down a problem that appears to be a deadly embrace between a database and Java locks. We have a core dump that appears to show a connection being shared between two threads. This makes no sense to us since we are using JTA with Hibernate (V3.2 getCurrentSession()). Our understanding is that each transaction would be bound to a single Hibernate-session and JDBC connection.

We are hoping that someone could advice on a several points:
1. Are we correct that a JDBC connection would not be shared by two different threads (in a typical j2ee environment)?
2. Are we correct in our reading of the Core dump? (see below).
3. If we are correct about #1 and #2, would it suggest a problem with Hibernate, or is it more likely that there is an issue with our configuration and/or code?

Many thanks for any thoughts on this.

Here are the locks we see in the core dump…

3LKMONOBJECT oracle/jdbc/driver/T4CConnection@DAE6BFA0/DAE6BFAC: Flat locked by "WebContainer : 51" (0x0B81F700), entry count 1
3LKWAITERQ Waiting to enter:
3LKWAITER "WebContainer : 0" (0x0AAD0000)
3LKWAITER "WebContainer : 5" (0xD0E77600)
3LKWAITER "WebContainer : 58" (0x0AA5FA00)
3LKWAITER "WebContainer : 17" (0x0AA5FE00)

We see Threads 0,5,58 and 17 waiting on the T4CConnection object that is locked by thread 51.

When we look at the (top of the) stack trace for Thread 51, we see that it is waiting on a response from the server (socket read). When we look at the database, we see several sessions blocked with a transaction lock. Therad 51 is almost certianlly one of them.

Here is part of the stack trace for Thread 51...

3XMTHREADINFO "WebContainer : 51" (TID:0x0B81F700, sys_thread_t:0x0C4FB648, state:R, native ID:0x000047AF) prio=5
4XESTACKTRACE at java/net/SocketInputStream.socketRead0(Native Method)
4XESTACKTRACE at java/net/SocketInputStream.read(SocketInputStream.java:155(Compiled Code))
4XESTACKTRACE at oracle/net/ns/Packet.receive(Bytecode PC:31(Compiled Code))
4XESTACKTRACE at oracle/net/ns/DataPacket.receive(Bytecode PC:1(Compiled Code))
4XESTACKTRACE at oracle/net/ns/NetInputStream.getNextPacket(Bytecode PC:1(Compiled Code))
4XESTACKTRACE at oracle/net/ns/NetInputStream.read(Bytecode PC:33(Compiled Code))
4XESTACKTRACE at oracle/net/ns/NetInputStream.read(Bytecode PC:5(Compiled Code))
4XESTACKTRACE at oracle/net/ns/NetInputStream.read(Bytecode PC:5(Compiled Code))
….(more stack trace deleted)

Threads 0 0,5,58 and 17 are all trying to create a prepared statement, apparently on the same connection. Below is the start of the stack trace for thread 0.

3XMTHREADINFO "WebContainer : 0" (TID:0x0AAD0000, sys_thread_t:0x0AA5660C, state:B, native ID:0x000057F9) prio=5
4XESTACKTRACE at oracle/jdbc/OracleConnectionWrapper.prepareStatement(OracleConnectionWrapper.java:189(Compiled Code))
4XESTACKTRACE at com/ibm/ws/rsadapter/jdbc/WSJdbcConnection.pmiPrepareStatement(WSJdbcConnection.java:1807(Compiled Code))
4XESTACKTRACE at com/ibm/ws/rsadapter/jdbc/WSJdbcConnection.prepareStatement(WSJdbcConnection.java:2046(Compiled Code))
4XESTACKTRACE at com/ibm/ws/rsadapter/jdbc/WSJdbcConnection.prepareStatement(WSJdbcConnection.java:1998(Compiled Code))
4XESTACKTRACE at org/hibernate/jdbc/AbstractBatcher.getPreparedStatement(AbstractBatcher.java:497(Compiled Code))
4XESTACKTRACE at org/hibernate/jdbc/AbstractBatcher.getPreparedStatement(AbstractBatcher.java:415(Compiled Code))
4XESTACKTRACE at org/hibernate/jdbc/AbstractBatcher.prepareQueryStatement(AbstractBatcher.java:139(Compiled Code))
4XESTACKTRACE at org/hibernate/loader/Loader.prepareQueryStatement(Loader.java:1560(Compiled Code))
4XESTACKTRACE at org/hibernate/loader/Loader.doQuery(Loader.java:661(Compiled Code))
….(more stack trace deleted)

Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 1 post ] 

All times are UTC - 5 hours [ DST ]

You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.