Hi again,
please review the latest revision, which fixes a small discrepancy where
Security.getProperty was used instead of System.getProperty (implicitly called
by Integer.getInteger in the original code):
http://cr.openjdk.java.net/~mduigou/JDK-8040837/1/webrev/
/Claes
On 2014-04-18 22:52, Mike Duigou wrote:
Updated webrev from Claes:
http://cr.openjdk.java.net/~mduigou/JDK-8040837/1/webrev/
On Apr 18 2014, at 11:02 , claes.redestad <claes.redes...@oracle.com> wrote:
Looks like you're right, unfortunately. Seems I confused System.getProperty and
Security.getProperty, and of course they differ subtly. I'll fix it as soon as
I can, but I'm out for a few hours..
/Claes
-------- Originalmeddelande --------
Från: Bernd Eckenfels
Datum:18-04-2014 19:06 (GMT+01:00)
Till: Michael McMahon
Kopia: Mike Duigou , claes.redes...@oracle.com
Rubrik: Re: RFR [9] 8040837: Avoid provoking NFEs when initializing
InetAddrCachePolicy
Hello,
I think the updated revision also uses Security.getProperty for the
fallbacks, I think this is wrong, they are read from the System
properties. (can be read with Integer.getProperty which uses internally
decode).
(and sorry for the big discussion on such a small patch :)
Gruss
Bernd
Am Fri, 18 Apr 2014 17:57:04 +0100 schrieb Michael McMahon
<michael.x.mcma...@oracle.com>:
Thanks Mike (and adding Claes back in)
Is there a reason to use both Integer.decode() and Integer.valueOf()?
Michael
On 18/04/14 17:44, Mike Duigou wrote:
Claes tidied things up to produce a workable patch:
Here is the updated webrev:
http://cr.openjdk.java.net/~mduigou/JDK-8040837/0/webrev/
I will push it to jdk9/dev/jdk on Friday before COB for Claes
unless I hear objections.
Cheers,
Mike
On Apr 18 2014, at 09:27 , Michael McMahon
<michael.x.mcma...@oracle.com> wrote:
I think it would be an improvement to combine these doPrivileged()
blocks as suggested, though your patch needs work Bernd. For
instance, the multi-catch doesn't work. Also the
PrivilegedAction<> type is wrong.
If someone wants to update it, then we can use that. Otherwise,
we'll go with the original suggested change.
Thanks
Michael
On 17/04/14 21:28, Bernd Eckenfels wrote:
Am Thu, 17 Apr 2014 21:50:23 +0200
schrieb Bernd Eckenfels <bernd-2...@eckenfels.net>:
Hello,
I would propose to use Integer.valueOf(tmp) instead, but looking
at the context I think it is even better to skip this and the
following null check with Integer.parseInt().
This is even shorter and it reduces the privileged actions
invocations:
Integer tmp = java.security.AccessController.doPrivileged
( new PrivilegedAction<String>() {
public String run() {
try {
String tmpString =
Security.getProperty(cachePolicyProp); if (tmpString != null)
return Integer.valueOf(tmpString); } catch (NumberFormatException
| IllegalArgumentException ignored) { }
try {
return
Integer.getInteger(cachePolicyPropFallback); } catch
(NumberFormatException | IllegalArgumentException ignored) { }
return null;
}
});
if (tmp != null) {
cachePolicy = tmp.intValue();
if (cachePolicy < 0) {
cachePolicy = FOREVER;
}
propertySet = true;
} else {
/* No properties defined for positive caching. If
there is no
* security manager then use the default positive
cache value. */ if (System.getSecurityManager() == null) {
cachePolicy = DEFAULT_POSITIVE;
}
}
NB: this will