On 05/11/14 19:47, Stanimir Simeonoff wrote:
945 } catch (Exception ex) {
946 System.err.println("Can't load log handler \"" + type +
"\"");
947 System.err.println("" + ex);
948 ex.printStackTrace();
949 }
I'm not quite sure if handling Error (in particular any subclass of
LinkageError) would make sense here (similar to the invocation of listeners).
Of course there are other case handling just Exception and using word instead
of 'type' but that's matter of another clean up.
Yes... LogManager should probably have some kind of ErrorManager - and
not just for listener invocation...
best regards,
-- daniel
Stanimir
On Wed, Nov 5, 2014 at 6:15 PM, Daniel Fuchs<daniel.fu...@oracle.com
<mailto:daniel.fu...@oracle.com>> wrote:
Hi Mandy, Stanimir,
Here is the new webrev:
http://cr.openjdk.java.net/~__dfuchs/webrev_8060132/webrev.__03/index.html
<http://cr.openjdk.java.net/~dfuchs/webrev_8060132/webrev.03/index.html>
best regards,
-- daniel
On 05/11/14 12:47, Daniel Fuchs wrote:
On 04/11/14 23:40, Mandy Chung wrote:
On 11/4/14 8:48 AM, Daniel Fuchs wrote:
Hi,
Here is a revised patch that introduces a new
<logger>.handlers.__ensureCloseOnReset=true|false
property.
You have explored several different options and as you have
found,
none of them is ideal. I think having a property to specify
ensureCloseOnReset would be reasonable to address the memory
leak
concern I have.
Would it be better to name it <logger>.handlers.__closeOnReset?
Well - closeOnReset is the normal behavior - if the logger
is still around. So I believe ensureCloseOnReset is a better name.
I am less sure if we need to have a global switch to revert
the default - do we expect the number of <logger>.handlers
is large? I would expect there would be small number.
I would expect the cases where you need to specify
ensureCloseOnReset will be rare. So maybe we should wait
until the case arises before implementing a global switch:
we can add that later if it's needed. The local switches
will provide a workable (even though possibly cumbersome)
work around.
This property can be used as a fallback to turn the new
behavior
off in the improbable case where an application may need
to do
so. I have updated the LogManager class-level API
documentation.
http://cr.openjdk.java.net/~__dfuchs/webrev_8060132/webrev.__02/
<http://cr.openjdk.java.net/~dfuchs/webrev_8060132/webrev.02/>
line 104-114: s/"true"/{@code true}
{@code reset} should be {@link ...} to the reset method (the
first occurrance)
Will do.
It doesn't seem necessary to specify "strongly referenced".
Maybe it's good to say "it will ensure the handlers associated
with the loggers will be closed at shutdown or at reset.
OK
If "closeOnReset is false", application should ensure the
handlers be closed before the logger gets garbage collected."
I will try to find something.
- something along that line.
typos:
186: explicitely -> explicitly
I keep on doing this same mistake again and again :-(
Perhaps PersistentLogger can be renamed to CloseOnResetLogger
to make it clear what these loggers are kept for. Similarly
for the variable name "persistentLogger" may be renamed too.
OK.
917: final might be adding noise
I like final ;-)
940: persitentLoggers
OK
line 917: you don't need (names.length == 0) to determine
the default,
right? if names.length == 0, it wouldn't add to the
persistentLoggers
list
as no iteration in the for loop.
I will use the syntax that Stanimir suggested. It's much simpler
than what I originally wrote. If names.length == 0 we don't need to
look up the ensureCloseOnReset property.
Thanks Mandy,
I will send a new webrev shortly - with both yours & Stanimir
comments
integrated (barring the global switch - as we could do that in a
followup revision if that's really needed).
best regards,
-- daniel
Mandy