-
1. Re: JBoss transaction deadlock
darranl May 7, 2004 8:06 AM (in response to fabinhu)Which JBoss version are you using?
Which database? I have had a similar situation with some databases but not others.
What is in your *-ds.xml for the data source?
Have you changed any of the transaction settings in your deployment descriptors? -
2. Re: JBoss transaction deadlock
fabinhu May 7, 2004 8:15 AM (in response to fabinhu)Th version of JBoss is 3.2.3
My application runs in Oracle, SQL Server, Postgresql...and all i had deadlock.
In my mssql-ds.xml:
<local-tx-datasource>
<jndi-name>jdbc/XSCXPLAN</jndi-name>
<connection-url>jdbc:microsoft:sqlserver://xplsvr01:1433;SelectMethod=cursor</connection-url>
<driver-class>com.microsoft.jdbc.sqlserver.SQLServerDriver</driver-class>
<user-name>user1</user-name>
<password>user1</password>
<prepared-statement-cache-size>0</prepared-statement-cache-size>
<transaction-isolation>TRANSACTION_READ_COMMITTED</transaction-isolation>
<blocking-timeout-millis>1000</blocking-timeout-millis>
</local-tx-datasource> -
3. Re: JBoss transaction deadlock
fabinhu May 7, 2004 9:44 AM (in response to fabinhu)And...
That's the exception:
[Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]Transaction (Process ID 68) was deadlocked on {lock} resources with another process and has been chosen as the deadlock victim. Rerun the transaction. -
4. Re: JBoss transaction deadlock
stscit04 May 7, 2004 11:34 AM (in response to fabinhu)Hi,
when does the lock ocour ? on
ejbFind or on the first invokation of an beans getXX / setXXX method ?
Stefan -
5. Re: JBoss transaction deadlock
fabinhu May 7, 2004 1:35 PM (in response to fabinhu)My application doens't have EJBs.
The architecture of my application is:
Servlet -> Handler(S) -> Components (BO, DAO, JavaBeans-Model).
And the DAO use JTA to make a transaction and access the database.
when some threads finish up, some tables access are blocked. So, the other threads can't access because tha process in the database is DEADLOCK!
Is not my code, because i had the same trouble in other application server...
The problem is --> The transaction don't commit JBDC calls statements. -
6. Re: JBoss transaction deadlock
vektom May 10, 2004 3:46 PM (in response to fabinhu)I have that same error when a process/user/ejb/... of a Connection of the pool puts a lock on objects (records, pages, whole tables!) in the database, and does not release this lock quickly enough. In the meanwhile, other processes/users/ejbs/... try to access these locked resources, and if they don't get it in time you will receive the error you had.
I think the MS SQLServer message isn't quite correct. It is not deadlock, where 2 processes hold reqources that the other needs. It is more like a timeout. However, this situation tends to snowball, having JBoss opening new connections to the DB until the maximum pool size is reached.
What I have done until now is rewrite the code (always the first step ;-) )so that the DB is less sollicited, and optimize transactions declaratively so that locks are taken on smaller objects (records rather than tables) and for shorter durations. It's an EJB application. Yours is not, so who is managing YOUR transactions? At this moment we can run 100+ concurrent (i.e. working, not just logged in) users without problems. Another thing to do is optimize your DB: create indexes etc.
But start with looking at your code: if you had the same problem on other application servers then JBoss isn't the answer. -
7. Re: JBoss transaction deadlock
fabinhu May 11, 2004 6:18 PM (in response to fabinhu)But, in other application servers like JRun, i could resolve this problem...
With JBoss, how can i configure my transaction pool ? So, when my application start a transaction and use, its can COMMIT THE STATEMENTS CALLS!!!!!!!
HELPPPP!! PEOPLE! -
8. Re: JBoss transaction deadlock
fabinhu May 11, 2004 6:19 PM (in response to fabinhu)Continue the last post...
Because, today my transaction DON'T COMMIT THE STATEMENTS CALLS!!!!!!!!!
:'(