Wrox Home  
Search P2P Archive for: Go

  Return to Index  

asp_components thread: MTS Transaction collision problem


Message #1 by "Gary A. Getz" <gagetz@i...> on Wed, 15 Aug 2001 15:35:03
I am having a very frustrating problem that I hope someone can shed some 

light on.  I have a very large web application using ASP/VBScript, COM 

objects written in VB6, and a single SQL Server 7.0 database.  I have over 

a dozen COM objects residing in 7 DLLs.  Each object has from 10 to 50 

methods.  Everything was working fine until we began testing the system 

with multiple users.  If 2 or more users call the same method to update a 

table simultaneously, one or both will timeout.  



I have @Transaction=Required at the top of the calling ASP page



I have the class MTS property set to Requires Transaction for all classes 

performing DB updates



I instantiate all classes within the COM objects using CreateInstance



I call SetComplete or SetAbort at the end of each method as appropriate.



I've read every article I can find and have done everything by the book as 

far as I can tell.  All of the examples are so simple.  In my case, I have 

methods calling methods calling methods across multiple objects.



I've isolated an example to a single class, and can send the code if 

anyone is willing to look.  I've been banging on this, along with 2 other 

developers, for almost 2 weeks.  Help!





Gary

Message #2 by "Johnson, Israel" <IJohnson@R...> on Wed, 15 Aug 2001 10:45:28 -0400
check the threading rules on your objects.



-----Original Message-----

From: Gary A. Getz [mailto:gagetz@i...]

Sent: Wednesday, August 15, 2001 11:35 AM

To: ASP components

Subject: [asp_components] MTS Transaction collision problem





I am having a very frustrating problem that I hope someone can shed some 

light on.  I have a very large web application using ASP/VBScript, COM 

objects written in VB6, and a single SQL Server 7.0 database.  I have over 

a dozen COM objects residing in 7 DLLs.  Each object has from 10 to 50 

methods.  Everything was working fine until we began testing the system 

with multiple users.  If 2 or more users call the same method to update a 

table simultaneously, one or both will timeout.  



I have @Transaction=Required at the top of the calling ASP page



I have the class MTS property set to Requires Transaction for all classes 

performing DB updates



I instantiate all classes within the COM objects using CreateInstance



I call SetComplete or SetAbort at the end of each method as appropriate.



I've read every article I can find and have done everything by the book as 

far as I can tell.  All of the examples are so simple.  In my case, I have 

methods calling methods calling methods across multiple objects.



I've isolated an example to a single class, and can send the code if 

anyone is willing to look.  I've been banging on this, along with 2 other 

developers, for almost 2 weeks.  Help!





Gary





Message #3 by Oleg Kapeljushnik <c-oleg.kapeljushnik@w...> on Wed, 15 Aug 2001 10:53:00 -0400
Hi !



Did you put all you 7 DLLs into one COM+ Application ?



Oleg



-----Original Message-----

From: Gary A. Getz [mailto:gagetz@i...]

Sent: Wednesday, August 15, 2001 3:35 PM

To: ASP components

Subject: [asp_components] MTS Transaction collision problem





I am having a very frustrating problem that I hope someone can shed some

light on.  I have a very large web application using ASP/VBScript, COM

objects written in VB6, and a single SQL Server 7.0 database.  I have over

a dozen COM objects residing in 7 DLLs.  Each object has from 10 to 50

methods.  Everything was working fine until we began testing the system

with multiple users.  If 2 or more users call the same method to update a

table simultaneously, one or both will timeout.



I have @Transaction=Required at the top of the calling ASP page



I have the class MTS property set to Requires Transaction for all classes

performing DB updates



I instantiate all classes within the COM objects using CreateInstance



I call SetComplete or SetAbort at the end of each method as appropriate.



I've read every article I can find and have done everything by the book as

far as I can tell.  All of the examples are so simple.  In my case, I have

methods calling methods calling methods across multiple objects.



I've isolated an example to a single class, and can send the code if

anyone is willing to look.  I've been banging on this, along with 2 other

developers, for almost 2 weeks.  Help!





Gary

Message #4 by Christian Cruz <chris_cruz1@y...> on Wed, 15 Aug 2001 08:10:59 -0700 (PDT)
The calling of SetComplete or SetAbort is very tricky,

you have to follow certain rules exactly or it wont

work.



I have the one article which is the ONLY one

(including books) which explained this to me exactly

how it works, but unfornunately I can't find it, but I

know I have it at home.  Email me to my personal

address tonight to remind me and I'll send it to you

and to the list.  It will answer all the questions.



Chris



 



--- "Gary A. Getz" <gagetz@i...> wrote:

> I am having a very frustrating problem that I hope

> someone can shed some 

> light on.  I have a very large web application using

> ASP/VBScript, COM 

> objects written in VB6, and a single SQL Server 7.0

> database.  I have over 

> a dozen COM objects residing in 7 DLLs.  Each object

> has from 10 to 50 

> methods.  Everything was working fine until we began

> testing the system 

> with multiple users.  If 2 or more users call the

> same method to update a 

> table simultaneously, one or both will timeout.  

> 

> I have @Transaction=Required at the top of the

> calling ASP page

> 

> I have the class MTS property set to Requires

> Transaction for all classes 

> performing DB updates

> 

> I instantiate all classes within the COM objects

> using CreateInstance

> 

> I call SetComplete or SetAbort at the end of each

> method as appropriate.

> 

> I've read every article I can find and have done

> everything by the book as 

> far as I can tell.  All of the examples are so

> simple.  In my case, I have 

> methods calling methods calling methods across

> multiple objects.

> 

> I've isolated an example to a single class, and can

> send the code if 

> anyone is willing to look.  I've been banging on

> this, along with 2 other 

> developers, for almost 2 weeks.  Help!

> 

> 

> Gary

Message #5 by Christian Cruz <chris_cruz1@y...> on Fri, 17 Aug 2001 06:06:53 -0700 (PDT)
This is the article I promised.  I a little late

but...



http://www.microsoft.com/msj/defaultframe.asp?page=/msj/1099/mtsvb/mtsvb.htm&nav=/msj/1099/newnav.htm



It's Ted Pattisons article, it explains MTS in great

detail.





--- "Gary A. Getz" <gagetz@i...> wrote:

> I am having a very frustrating problem that I hope

> someone can shed some 

> light on.  I have a very large web application using

> ASP/VBScript, COM 

> objects written in VB6, and a single SQL Server 7.0

> database.  I have over 

> a dozen COM objects residing in 7 DLLs.  Each object

> has from 10 to 50 

> methods.  Everything was working fine until we began

> testing the system 

> with multiple users.  If 2 or more users call the

> same method to update a 

> table simultaneously, one or both will timeout.  

> 

> I have @Transaction=Required at the top of the

> calling ASP page

> 

> I have the class MTS property set to Requires

> Transaction for all classes 

> performing DB updates

> 

> I instantiate all classes within the COM objects

> using CreateInstance

> 

> I call SetComplete or SetAbort at the end of each

> method as appropriate.

> 

> I've read every article I can find and have done

> everything by the book as 

> far as I can tell.  All of the examples are so

> simple.  In my case, I have 

> methods calling methods calling methods across

> multiple objects.

> 

> I've isolated an example to a single class, and can

> send the code if 

> anyone is willing to look.  I've been banging on

> this, along with 2 other 

> developers, for almost 2 weeks.  Help!

> 

> 

> Gary

> 

>


  Return to Index