|
 |
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
>
>
|
|
 |