Comment #88 on issue 288 by [email protected]: FinalizableReferenceQueue
still leaks
http://code.google.com/p/google-guice/issues/detail?id=288
Here's an additional patch that clears up the last of the Tomcat warnings
after upgrading to the latest Guava (the ones referring to the
injectorImpl's ThreadLocal). The issue here was the injector used an
anonymous class to define a custom initialValue method for its localContext
ThreadLocal. Unfortunately this anonymous class has an implicit reference
(seen as this$0 in the bytecode) back to the instance where it was created,
ie. the injector. We could change this to be a static nested class which
would avoid the reference to the injector, but this still keeps a reference
back to the containing classloader which upsets Tomcat's strict checks.
This patch removes the custom ThreadLocal subclass and adds a check+set in
the callInContext method - note this is slightly less performant, since it
needs an extra call to set(). It's questionable whether this performance
hit is worth getting rid of all the Tomcat warnings, switching to a static
nested class may be enough since you'd still occasionally see a warning but
the only thing that a rogue thread local might be holding onto would be the
classloader. Anyway, here's the patch in case anyone is interested in
trying it out with trunk...
Attachments:
GUICE_288_decouple_thread_local.patch 1.5 KB
--
You received this message because you are subscribed to the Google Groups
"google-guice-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/google-guice-dev?hl=en.