It does do that - and I can't see where/how it's using a weak reference to
store the loggers (it looks to me like they use a regular
java.util.Hashtable), but the comments in the implementation of LogManager
class file that I see when debugging using Eclipse do say that the user has
to keep a reference to the logger or it may be garbage collected.

  I spent a long time debugging this yesterday, and was able to consistently
reproduce this - if I hit refresh in Dev mode, the Root Logger gets nulled
out about every 1/5 - 1/20 times in the google project for the team that
reported this. If it happens, it always happens in the same place (at least
in this particular project), but I couldn't see any reasonable place that it
could be happening - at least not in any code that I can step through in the
debugger (although admittedly, my ability to clearly step through some of
the depths of the JRE code in Eclipse is not very good).

  When I made this change, I was unable to reproduce the problem, even
though I hit refresh tens of times.  I wish I had a more concrete
justification, but in the end, it was late, and this was a fix that at least
appeared to fix the problem, and was somewhat justified by the comments in
the JRE class, if not the code that I saw.  I pinged the team that initially
saw the issue, and I've asked them to also try out the fix and confirm that
it works. Ugh...

- Unnur


On Tue, Jul 20, 2010 at 11:41 AM, <[email protected]> wrote:

> Just out of curiosity, why is this actually necessary?
>
> Shouldn't DevModeLogManager -> clientLogManager -> loggers ->
> Map<String, Logger>?
>
>
> http://gwt-code-reviews.appspot.com/667802/show
>

-- 
http://groups.google.com/group/Google-Web-Toolkit-Contributors

Reply via email to