You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user-java@ibatis.apache.org by Ejaz X Mohammed <ej...@jpmorgan.com> on 2009/09/23 00:22:42 UTC

SqlMapClient gets stuck when running under multiple threads

Hello,

I'm having problem using SqlMapClient in multiple threads ...

I'm storing SqlMapClient instance as ThreadLocal variable - thus each thread gets it's own separate copy.

I've supplied startTransaction(), commitTransaction() and endTransaction() which operate on thread local SqlMapClient instance

When running the application under multiple threads, it seems to get stuck on update on same table... 

Did anyone notice this earlier?

Any solutions ...?

Regards
Ejaz
This email is confidential and subject to important disclaimers and
conditions including on offers for the purchase or sale of
securities, accuracy and completeness of information, viruses,
confidentiality, legal privilege, and legal entity disclaimers,
available at http://www.jpmorgan.com/pages/disclosures/email.  

---------------------------------------------------------------------
To unsubscribe, e-mail: user-java-unsubscribe@ibatis.apache.org
For additional commands, e-mail: user-java-help@ibatis.apache.org


RE: SqlMapClient gets stuck when running under multiple threads

Posted by Ejaz X Mohammed <ej...@jpmorgan.com>.
Note! Transactions cannot be nested. Calling .startTransaction() from the same thread more than once,
before calling commit() or rollback(), will cause an exception to be thrown. In other words, each thread can
have -at most- one transaction open, per SqlMapClient instance.

Note! SqlMapClient transactions use Java's ThreadLocal store for storing transactional objects. This
means that each thread that calls startTransaction() will get a unique Connection object for their transaction.
The only way to return a connection to the DataSource (or close the connection) is to call
commitTransaction() or endTransaction(). Not doing so could cause your pool to run out of connections
and lock up


Thanks ... I see that SqlMapClient already uses ThreadLocal feature.

I've commented out my threadlocal stuff ... now testing it.

Regards
Ejaz


From: Clinton Begin [mailto:clinton.begin@gmail.com]
Sent: Tuesday, September 22, 2009 6:30 PM
To: user-java@ibatis.apache.org
Subject: Re: SqlMapClient gets stuck when running under multiple threads

SqlMapClient supports multiple threads, you should not have more than one copy.   In fact, if you do, you might run into these kinds of problems.

I think that's in the documentation in the first sections regarding SqlMapClient.

Clinton
On Tue, Sep 22, 2009 at 4:22 PM, Ejaz X Mohammed <ej...@jpmorgan.com>> wrote:
Hello,

I'm having problem using SqlMapClient in multiple threads ...

I'm storing SqlMapClient instance as ThreadLocal variable - thus each thread gets it's own separate copy.

I've supplied startTransaction(), commitTransaction() and endTransaction() which operate on thread local SqlMapClient instance

When running the application under multiple threads, it seems to get stuck on update on same table...

Did anyone notice this earlier?

Any solutions ...?

Regards
Ejaz
This email is confidential and subject to important disclaimers and
conditions including on offers for the purchase or sale of
securities, accuracy and completeness of information, viruses,
confidentiality, legal privilege, and legal entity disclaimers,
available at http://www.jpmorgan.com/pages/disclosures/email.

---------------------------------------------------------------------
To unsubscribe, e-mail: user-java-unsubscribe@ibatis.apache.org<ma...@ibatis.apache.org>
For additional commands, e-mail: user-java-help@ibatis.apache.org<ma...@ibatis.apache.org>



This email is confidential and subject to important disclaimers and
conditions including on offers for the purchase or sale of
securities, accuracy and completeness of information, viruses,
confidentiality, legal privilege, and legal entity disclaimers,
available at http://www.jpmorgan.com/pages/disclosures/email.  

Re: SqlMapClient gets stuck when running under multiple threads

Posted by Clinton Begin <cl...@gmail.com>.
SqlMapClient supports multiple threads, you should not have more than one
copy.   In fact, if you do, you might run into these kinds of problems.
I think that's in the documentation in the first sections regarding
SqlMapClient.

Clinton

On Tue, Sep 22, 2009 at 4:22 PM, Ejaz X Mohammed <ejaz.mohammed@jpmorgan.com
> wrote:

> Hello,
>
> I'm having problem using SqlMapClient in multiple threads ...
>
> I'm storing SqlMapClient instance as ThreadLocal variable - thus each
> thread gets it's own separate copy.
>
> I've supplied startTransaction(), commitTransaction() and endTransaction()
> which operate on thread local SqlMapClient instance
>
> When running the application under multiple threads, it seems to get stuck
> on update on same table...
>
> Did anyone notice this earlier?
>
> Any solutions ...?
>
> Regards
> Ejaz
> This email is confidential and subject to important disclaimers and
> conditions including on offers for the purchase or sale of
> securities, accuracy and completeness of information, viruses,
> confidentiality, legal privilege, and legal entity disclaimers,
> available at http://www.jpmorgan.com/pages/disclosures/email.
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-java-unsubscribe@ibatis.apache.org
> For additional commands, e-mail: user-java-help@ibatis.apache.org
>
>