Quantcast
Channel: patterns & practices: Project Silk
Viewing all articles
Browse latest Browse all 93

New Post: UnityPerRequestLifetimeManager not disposing

$
0
0

Damian,

Thanks for the reply.  I am not seeing the LifetimeManager behavior you describe in the MileageStats project.

I see instances of UnityHttpContextPerRequestLifetimeManager created only at application startup when the Unity configuration is loaded.  Unity uses these LifetimeManagers to manage (i.e. SetValue & GetValue) instances of one particular type.  This appears consistent with the one LifetimeManager instance per Unity type registration model.  These LifetimeManagers are Disposed at the termination of every client request, but Unity still holds references.  This was unexpected as I (wrongly) associate Dispose with C++-style destructor semantics and references being released for garbage collection.

After looking at the code more closely I see the Dispose implementation frees the resources (i.e. RemoveValue) associated with the current request only, not all resources managed by that instance.  I missed this initially as I expected Dispose to free all resources associated with an instance.  I switched to calling RemoveValue on my LifetimeManagers at the end of requests.

Thanks for the help,

Don

 

Here is a log with some debug instrumentation I added to track various method calls.  I trimmed this to one instance of UnityPerRequestLifetimeManager, the others are similar:

*** Unity Configuration at app startup
UnityPerRequestLifetimeManager ctor: 7:34:54 AM ffc6748e-2e45-4ccd-9da7-c28f0c1fffcb
*** App home page
UnityPerRequestLifetimeManager SetValue: 7:34:56 AM ffc6748e-2e45-4ccd-9da7-c28f0c1fffcb MileageStats.Domain.UserServices
UnityPerRequestLifetimeManager Dispose: 7:34:58 AM ffc6748e-2e45-4ccd-9da7-c28f0c1fffcb
UnityPerRequestLifetimeManager RemoveValue: 7:34:58 AM ffc6748e-2e45-4ccd-9da7-c28f0c1fffcb MileageStats.Domain.UserServices
UnityPerRequestLifetimeManager Dispose: 7:34:58 AM ffc6748e-2e45-4ccd-9da7-c28f0c1fffcb
UnityPerRequestLifetimeManager Dispose: 7:34:58 AM ffc6748e-2e45-4ccd-9da7-c28f0c1fffcb
UnityPerRequestLifetimeManager Dispose: 7:34:58 AM ffc6748e-2e45-4ccd-9da7-c28f0c1fffcb
UnityPerRequestLifetimeManager Dispose: 7:34:58 AM ffc6748e-2e45-4ccd-9da7-c28f0c1fffcb
UnityPerRequestLifetimeManager Dispose: 7:34:58 AM ffc6748e-2e45-4ccd-9da7-c28f0c1fffcb
UnityPerRequestLifetimeManager Dispose: 7:34:58 AM ffc6748e-2e45-4ccd-9da7-c28f0c1fffcb
UnityPerRequestLifetimeManager Dispose: 7:34:58 AM ffc6748e-2e45-4ccd-9da7-c28f0c1fffcb
UnityPerRequestLifetimeManager Dispose: 7:34:58 AM ffc6748e-2e45-4ccd-9da7-c28f0c1fffcb
UnityPerRequestLifetimeManager Dispose: 7:34:58 AM ffc6748e-2e45-4ccd-9da7-c28f0c1fffcb
UnityPerRequestLifetimeManager Dispose: 7:34:59 AM ffc6748e-2e45-4ccd-9da7-c28f0c1fffcb
UnityPerRequestLifetimeManager Dispose: 7:34:59 AM ffc6748e-2e45-4ccd-9da7-c28f0c1fffcb
UnityPerRequestLifetimeManager Dispose: 7:34:59 AM ffc6748e-2e45-4ccd-9da7-c28f0c1fffcb
UnityPerRequestLifetimeManager Dispose: 7:34:59 AM ffc6748e-2e45-4ccd-9da7-c28f0c1fffcb
UnityPerRequestLifetimeManager Dispose: 7:34:59 AM ffc6748e-2e45-4ccd-9da7-c28f0c1fffcb
UnityPerRequestLifetimeManager Dispose: 7:34:59 AM ffc6748e-2e45-4ccd-9da7-c28f0c1fffcb
UnityPerRequestLifetimeManager Dispose: 7:34:59 AM ffc6748e-2e45-4ccd-9da7-c28f0c1fffcb
*** Login
UnityPerRequestLifetimeManager SetValue: 7:35:55 AM ffc6748e-2e45-4ccd-9da7-c28f0c1fffcb MileageStats.Domain.UserServices
UnityPerRequestLifetimeManager Dispose: 7:35:55 AM ffc6748e-2e45-4ccd-9da7-c28f0c1fffcb
UnityPerRequestLifetimeManager RemoveValue: 7:35:55 AM ffc6748e-2e45-4ccd-9da7-c28f0c1fffcb MileageStats.Domain.UserServices
UnityPerRequestLifetimeManager Dispose: 7:35:56 AM ffc6748e-2e45-4ccd-9da7-c28f0c1fffcb
UnityPerRequestLifetimeManager SetValue: 7:35:57 AM ffc6748e-2e45-4ccd-9da7-c28f0c1fffcb MileageStats.Domain.UserServices
UnityPerRequestLifetimeManager Dispose: 7:35:58 AM ffc6748e-2e45-4ccd-9da7-c28f0c1fffcb
UnityPerRequestLifetimeManager RemoveValue: 7:35:58 AM ffc6748e-2e45-4ccd-9da7-c28f0c1fffcb MileageStats.Domain.UserServices
UnityPerRequestLifetimeManager SetValue: 7:35:58 AM ffc6748e-2e45-4ccd-9da7-c28f0c1fffcb MileageStats.Domain.UserServices
UnityPerRequestLifetimeManager Dispose: 7:36:00 AM ffc6748e-2e45-4ccd-9da7-c28f0c1fffcb
UnityPerRequestLifetimeManager RemoveValue: 7:36:00 AM ffc6748e-2e45-4ccd-9da7-c28f0c1fffcb MileageStats.Domain.UserServices
UnityPerRequestLifetimeManager Dispose: 7:36:01 AM ffc6748e-2e45-4ccd-9da7-c28f0c1fffcb
UnityPerRequestLifetimeManager Dispose: 7:36:01 AM ffc6748e-2e45-4ccd-9da7-c28f0c1fffcb
UnityPerRequestLifetimeManager Dispose: 7:36:01 AM ffc6748e-2e45-4ccd-9da7-c28f0c1fffcb
UnityPerRequestLifetimeManager Dispose: 7:36:01 AM ffc6748e-2e45-4ccd-9da7-c28f0c1fffcb
UnityPerRequestLifetimeManager SetValue: 7:36:01 AM ffc6748e-2e45-4ccd-9da7-c28f0c1fffcb MileageStats.Domain.UserServices
UnityPerRequestLifetimeManager Dispose: 7:36:01 AM ffc6748e-2e45-4ccd-9da7-c28f0c1fffcb
UnityPerRequestLifetimeManager Dispose: 7:36:01 AM ffc6748e-2e45-4ccd-9da7-c28f0c1fffcb
UnityPerRequestLifetimeManager RemoveValue: 7:36:01 AM ffc6748e-2e45-4ccd-9da7-c28f0c1fffcb MileageStats.Domain.UserServices
UnityPerRequestLifetimeManager Dispose: 7:36:01 AM ffc6748e-2e45-4ccd-9da7-c28f0c1fffcb
UnityPerRequestLifetimeManager SetValue: 7:36:01 AM ffc6748e-2e45-4ccd-9da7-c28f0c1fffcb MileageStats.Domain.UserServices
UnityPerRequestLifetimeManager SetValue: 7:36:01 AM ffc6748e-2e45-4ccd-9da7-c28f0c1fffcb MileageStats.Domain.UserServices
UnityPerRequestLifetimeManager Dispose: 7:36:01 AM ffc6748e-2e45-4ccd-9da7-c28f0c1fffcb
UnityPerRequestLifetimeManager Dispose: 7:36:01 AM ffc6748e-2e45-4ccd-9da7-c28f0c1fffcb
UnityPerRequestLifetimeManager RemoveValue: 7:36:01 AM ffc6748e-2e45-4ccd-9da7-c28f0c1fffcb MileageStats.Domain.UserServices
UnityPerRequestLifetimeManager Dispose: 7:36:01 AM ffc6748e-2e45-4ccd-9da7-c28f0c1fffcb
UnityPerRequestLifetimeManager RemoveValue: 7:36:01 AM ffc6748e-2e45-4ccd-9da7-c28f0c1fffcb MileageStats.Domain.UserServices
UnityPerRequestLifetimeManager Dispose: 7:36:01 AM ffc6748e-2e45-4ccd-9da7-c28f0c1fffcb

Viewing all articles
Browse latest Browse all 93

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>