Ok, now I get it, thanks.

On Fri, Oct 24, 2008 at 10:42 PM, Ayende Rahien <[EMAIL PROTECTED]> wrote:

> The comment is misleading and should be removed.
> This is actually an issue with the container failing to start (usually
> because of configuration error)
>
>
> On Fri, Oct 24, 2008 at 10:38 PM, Simone Busoli <[EMAIL PROTECTED]>wrote:
>
>> I looked into the code to see if UoWApplication would need changes, but I
>> guess no, since the container is disposed on application end, and therefore
>> all the components as well. Instead I noticed that the code in
>> Application_End does this:
>>
>>  if (Container != null) //can happen if this isn't the first app
>>  {
>>      IoC.Reset(Container);
>>      Container.Dispose();
>>  }
>>
>> In which case can the container be null? I'm not sure I understand the
>> comment.. As far as I can see from the property getter it should never be
>> null. Am I missing something?
>>
>> On Fri, Oct 24, 2008 at 9:54 PM, Brian Rumschlag <[EMAIL PROTECTED]>wrote:
>>
>>>
>>> I uploaded another patch with the UnitTests.
>>> It's NHibernate.Dispose.UnitTests.patch
>>>
>>>
>>> On Oct 24, 3:47 pm, Jason Meckley <[EMAIL PROTECTED]> wrote:
>>> > applied, thanks.
>>> >
>>> > On Oct 24, 3:26 pm, Brian Rumschlag <[EMAIL PROTECTED]> wrote:
>>> >
>>> > > Patch submitted..
>>> > > NHibernate.Dispose.patch
>>> >
>>> > > On Oct 24, 3:16 pm, Brian Rumschlag <[EMAIL PROTECTED]> wrote:
>>> >
>>> > > > But in that case, the rogue thread keeps right on running.
>>> >
>>> > > > I have a test case put together across threads instead of
>>> AppDomains.
>>> > > > It is behaving as I would expect, the maintenance thread keeps
>>> running
>>> > > > and the SF.Dispose() is never called.
>>> > > > I'll have a patch shortly.
>>> >
>>> > > > On Oct 24, 3:11 pm, "Ayende Rahien" <[EMAIL PROTECTED]> wrote:
>>> >
>>> > > > > Shutdown the process, so yes
>>> >
>>> > > > > On Fri, Oct 24, 2008 at 8:56 PM, Brian Rumschlag <
>>> [EMAIL PROTECTED]>wrote:
>>> >
>>> > > > > > Does closing a WinForm shutdown it's AppDomain?
>>> >
>>> > > > > > On Oct 24, 2:50 pm, "Ayende Rahien" <[EMAIL PROTECTED]> wrote:
>>> > > > > > > Shutting an appdomain would kill all threads that execute
>>> code in that
>>> > > > > > app
>>> > > > > > > domain
>>> >
>>> > > > > > > On Fri, Oct 24, 2008 at 8:33 PM, Brian Rumschlag <
>>> [EMAIL PROTECTED]
>>> > > > > > >wrote:
>>> >
>>> > > > > > > > The patch was simple, but the Unit Test is giving me fits.
>>> >
>>> > > > > > > > I have a Mock CacheProvider working, that when it starts it
>>> spits off
>>> > > > > > > > a thread waiting for some signal to stop.
>>> >
>>> > > > > > > > The Test then fires off another AppDomain to initialize the
>>> IoC
>>> > > > > > > > Container, and start the Unit of Work.
>>> >
>>> > > > > > > > Unfortunately, when that call comes back, and the new
>>> AppDomain is
>>> > > > > > > > unloaded, the thread which should keep right on going,
>>> stops.
>>> > > > > > > > Also, the static variables I have to check the status of
>>> the
>>> > > > > > > > CacheProvider aren't the same inside of the new AppDomain.
>>> >
>>> > > > > > > > I'm confused.
>>> >
>>> > > > > > > > On Oct 24, 11:19 am, Jason Meckley <[EMAIL PROTECTED]>
>>> wrote:
>>> > > > > > > > > should be as simple as updating 3 files:
>>> >
>>> > > > > > > > > IUnitOfWorkFactory to
>>> > > > > > > > > public interface IUnitOfWorkFactory : IDisposable
>>> >
>>> > > > > > > > > then implement the members here:
>>> > > > > > > > > ActiveRecordUnitOfWorkFactory (empty member)
>>> > > > > > > > > NHibernateUnitOfWorkFactory (call sessFactory.Dispose())
>>> >
>>> > > > > > > > > build, create patch, submit, done:)
>>> >
>>> > > > > > > > > On Oct 24, 10:43 am, "Ayende Rahien" <[EMAIL PROTECTED]>
>>> wrote:
>>> >
>>> > > > > > > > > > Please sumbit a patch with this
>>> >
>>> > > > > > > > > > On Fri, Oct 24, 2008 at 4:42 PM, Brian Rumschlag <
>>> > > > > > [EMAIL PROTECTED]
>>> > > > > > > > >wrote:
>>> >
>>> > > > > > > > > > > The problem is that the maintenance thread in the
>>> memcache client
>>> > > > > > is
>>> > > > > > > > > > > preventing an implicit Dispose() of the SF
>>> > > > > > > > > > > I added an explicit dispose method to
>>> IUnitOfWorkFactory, called
>>> > > > > > it
>>> > > > > > > > at
>>> > > > > > > > > > > the end of application, and everything shut down
>>> properly.
>>> > > > > > > > > > > I'll try making the interface implement IDisposable
>>> instead.
>>> >
>>> > > > > > > > > > > On Oct 24, 10:16 am, "Ayende Rahien" <
>>> [EMAIL PROTECTED]> wrote:
>>> > > > > > > > > > > > I don't think we call SF.Close();
>>> > > > > > > > > > > > We just the the app domain shut down clean up all
>>> our
>>> > > > > > resources.
>>> >
>>> > > > > > > > > > > > On Fri, Oct 24, 2008 at 3:47 PM, Jason Meckley <
>>> > > > > > > > [EMAIL PROTECTED]
>>> > > > > > > > > > > >wrote:
>>> >
>>> > > > > > > > > > > > > SessionFactory.Dispose() isn't called explicitly.
>>> not from
>>> > > > > > what I
>>> > > > > > > > can
>>> > > > > > > > > > > > > see. I would assume this is done in
>>> > > > > > NHibernateUnitOfWorkFactory
>>> > > > > > > > which
>>> > > > > > > > > > > > > holds the instance of the factory. but
>>> IUnitOfWorkFactory
>>> > > > > > does
>>> > > > > > > > not
>>> > > > > > > > > > > > > implement IDisposable.
>>> >
>>> > > > > > > > > > > > > when the application ends the object is gone (for
>>> lack of a
>>> > > > > > > > better
>>> > > > > > > > > > > > > term).  I would assume that when IoC.Rest() is
>>> called this
>>> > > > > > > > disposes
>>> > > > > > > > > > > > > the windsor container, which in tern disposes
>>> components,
>>> > > > > > etc.
>>> > > > > > > >  if
>>> > > > > > > > > > > > > that's the case then we may be able to update
>>> > > > > > IUnitOfWorkFactory
>>> > > > > > > > to
>>> > > > > > > > > > > > > inherit IDisposable. then set
>>> sessionFactory.Dispose() int
>>> > > > > > the
>>> > > > > > > > > > > > > concrete member.
>>> >
>>> > > > > > > > > > > > > Thoughts?
>>> >
>>> > > > > > > > > > > > > On Oct 24, 9:17 am, Brian Rumschlag <
>>> [EMAIL PROTECTED]>
>>> > > > > > wrote:
>>> > > > > > > > > > > > > > I have an application that is using memcached
>>> as it's
>>> > > > > > > > second-level
>>> > > > > > > > > > > > > > cache.
>>> >
>>> > > > > > > > > > > > > > The MemCached library has a maintenance thread
>>> that runs
>>> > > > > > until
>>> > > > > > > > the
>>> > > > > > > > > > > > > > caching system is destroyed by
>>> CacheProvider.Stop(), which
>>> > > > > > is
>>> > > > > > > > called
>>> > > > > > > > > > > > > > by SessionFactory.Close.
>>> >
>>> > > > > > > > > > > > > > SessionFactory.Close is called by
>>> SessionFactory.Dispose(),
>>> > > > > > but
>>> > > > > > > > that
>>> > > > > > > > > > > > > > doesn't seem to be getting called either.
>>> >
>>> > > > > > > > > > > > > > Obviously, you wouldn't want to close the
>>> SessionFactory
>>> > > > > > when
>>> > > > > > > > the
>>> > > > > > > > > > > > > > UnitOfWork was disposed, but I can't find where
>>> in
>>> > > > > > > > > > > > > > Rhino.Commons.NHibernate SessionFactory.Close
>>> is called.
>>> >
>>> > > > > > > > > > > > > > Any thoughts?
>>> > > > > > > > > > > > > > Brian Rumschlag
>>>
>>>
>>
>>
>>
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Rhino Tools Dev" 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/rhino-tools-dev?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to