Yep. Looks good.

On Thu, Jan 29, 2009 at 8:51 AM, Tim Scott <[email protected]> wrote:
> I have developed the following.  Seems to work.  I am still having issues
> under heavy load, but I think it's something else.
>
> If it looks okay, I will submit a patch.  I was thinking I might also add a
> config option "isWcf".
>
> public class WcfThreadScopeInfo : AbstractThreadScopeInfo
> {
>     public override Stack CurrentStack
>     {
>         [MethodImpl(MethodImplOptions.Synchronized)]
>         get
>         {
>             var current = OperationContext.Current;
>             if (current == null)
>             {
>                 var message = "WcfThreadScopeInfo: Could not access
> OperationContext.Current";
>                 throw new ScopeMachineryException(message);
>             }
>
>             var extension = current.Extensions.Find<StackExtension>();
>             if (extension == null)
>             {
>                 extension = new StackExtension();
>                 OperationContext.Current.Extensions.Add(extension);
>             }
>
>             if (extension.Stack == null)
>             {
>                 extension.Stack = new Stack();
>             }
>
>             return extension.Stack;
>         }
>     }
>
>     private class StackExtension : IExtension<OperationContext>
>     {
>         public Stack Stack { get; set; }
>         public void Attach(OperationContext owner) { }
>         public void Detach(OperationContext owner) { }
>     }
> }
>
>
> On 1/28/09 8:49 AM, "Ayende Rahien" <[email protected]> wrote:
>
> I think that you need to write one that will use the WCF call context to
> keep the session
>
> On Wed, Jan 28, 2009 at 9:46 AM, Tim Scott <[email protected]>
> wrote:
>
> Castle trunk has three concrete implementations of IThreadScopeInfo:
> ThreadScopeInfo, WebThreadScopeInfo and HybridThreadScopeInfo.  I assume
> that because I do not have isWeb="true" I am using the ThreadScopeInfo.
>  Should I add isWeb="true", and do you think that will solve it?  Do I need
> to write a custom IThreadScopeInfo?
>
>
>
> On 1/28/09 7:49 AM, "Ayende Rahien" <[email protected]
> <http://[email protected]> > wrote:
>
>  <activerecord default-lazy="true">
>
> This is where you define your scope semantics
> isWeb="true", or hybrid.
> I don't know if we have a scope impl for Call Context, though.
>
> On Wed, Jan 28, 2009 at 8:46 AM, Tim Scott <[email protected]
> <http://[email protected]> > wrote:
>
> Okay, I lied.  Here is the AR config:
>
>   <activerecord default-lazy="true">
>     <config>
>       <add key="connection.driver_class"
> value="NHibernate.Driver.SqlClientDriver" />
>       <add key="dialect" value="NHibernate.Dialect.MsSql2005Dialect" />
>       <add key="connection.provider"
> value="NHibernate.Connection.DriverConnectionProvider" />
>       <add key="connection.connection_string_name" value="MyNamedConnection"
>  />
>     </config>
>   </activerecord>
>
>
>
> On 1/27/09 9:00 PM, "Ayende Rahien" <[email protected]
> <http://[email protected]>  <http://[email protected]> > wrote:
>
> Where is the connections tring?
>
> On Tue, Jan 27, 2009 at 9:54 PM, Tim Scott <[email protected]
> <http://[email protected]>  <http://[email protected]>
>> wrote:
>
> The only config I have for AR is in Binsor:
>
> component "active_record_repository", IRepository, ARRepository
>
> component "active_record_unit_of_work", IUnitOfWorkFactory,
> ActiveRecordUnitOfWorkFactory:
>     assemblies = (Assembly.Load("MyApp.MyCore"),)
>
> Is this what you are asking for?
>
>
>
> On 1/27/09 8:43 PM, "Ayende Rahien" <[email protected]
> <http://[email protected]>  <http://[email protected]>
>  <http://[email protected]> > wrote:
>
> The problem is likely with the scope that you selected for AR
> What is your configuration?
>
> On Tue, Jan 27, 2009 at 7:46 PM, Tim Scott <[email protected]
> <http://[email protected]>  <http://[email protected]>
>  <http://[email protected]> > wrote:
>
> The app uses Rhino.Commons and its Repository<T>, underlying which is
> NHibernate.  I use ActiveRecord attributes for mapping only.  The
> application is a Rhino.Commons' UnitOfWorkApplication.
>
> My service classes are decorated with [Transactional] and the methods with
> [Transaction].
>
> I know you are not a Rhino Commons expert and so this might not be enough
> detail, and maybe it's some Rhino Commons issue?
>
>
>
> On 1/27/09 6:01 PM, "hammett" <[email protected] <http://[email protected]>
>  <http://[email protected]>  <http://[email protected]> > wrote:
>
>>
>> Not with this amount of information. What's the machinery (AR, NH,
>> other)? What kind of app? Have you configured a custom activity
>> manager?
>>
>>
>> On Tue, Jan 27, 2009 at 3:51 PM, Tim Scott <[email protected]
>> <http://[email protected]>  <http://[email protected]>
>>  <http://[email protected]> >
>
>
>> wrote:
>>>
>>> Any thoughts on how this exception might occur?
>>>
>>>
>>> On Jan 27, 5:26 pm, hammett <[email protected] <http://[email protected]>
>>>  <http://[email protected]>  <http://[email protected]> > wrote:
>>>> This comment is stalled. The TM is now per thread, so there's nothing
>>>> being shared across threads.
>>>>
>>>>
>>>>
>>>> On Tue, Jan 27, 2009 at 1:07 PM, Tim Scott <[email protected]
>>>> <http://[email protected]>  
>>>> <http://[email protected]>
>>>>  <http://[email protected]> >
>
>
>>>> wrote:
>>>>
>>>>> I am using AutomaticTransactionManagement in my app, and I am doing
>>>>> some stress testing.  All is well until I reach a fairly heavy load;
>>>>> then I get the following exception:
>>>>
>>>>> System.ArgumentException: transaction
>>>>> Parameter name: Tried to dispose a transaction that is not on the
>>>>> current active transaction
>>>>>   at Castle.Services.Transaction.DefaultTransactionManager.Dispose
>>>>> (ITransaction transaction)
>>>>>   at
>>>>>
>>>>> Castle.Facilities.AutomaticTransactionManagement.TransactionInterceptor.Int
>>>>> <http://Castle.Facilities.AutomaticTransactionManagement.TransactionInterceptor.Int>
>>>>>  
>>>>> <http://Castle.Facilities.AutomaticTransactionManagement.TransactionInterceptor.Int>
>>>>>  
>>>>> <http://Castle.Facilities.AutomaticTransactionManagement.TransactionInterceptor.Int>
>>>>>  
>>>>> <http://Castle.Facilities.AutomaticTransactionManagement.TransactionInterceptor.Int>
>>>>> ercept
>>>>> (IInvocation invocation)
>>>>
>>>>> I decided to have a look at the source code to see if I can figure out
>>>>> what might be happening.  The following comment the summary for
>>>>> DefaultTransactionManager jumped out at me:
>>>>
>>>>> TODO: Ensure this class is thread-safe
>>>>
>>>>> Has anyone else seen this behavior?  Might I be doing something wrong
>>>>> in my app?
>>>>
>>>>> Not sure it it's relevant but I am also using Rhino.Commons and
>>>>> UnitOfWorkApplication.
>>>>
>>>> --
>>>> Cheers,
>>>> hammetthttp://hammett.castleproject.org/
>>>> <http://hammett.castleproject.org/>  <http://hammett.castleproject.org/>
>>>>  <http://hammett.castleproject.org/>  <http://hammett.castleproject.org/>
>>>>
>>>
>>
>>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> >
>



-- 
Cheers,
hammett
http://hammett.castleproject.org/

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Castle Project Users" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/castle-project-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to