RFR: 8177136: Caller sensitive methods Logger.getLogger, Logger.getAnonymousLogger, and System.getLogger should throw IllegalCallerException if there is no caller on the stack.

Daniel Fuchs daniel.fuchs at oracle.com
Mon Mar 20 12:08:15 UTC 2017


Hi,

Please find below a patch for:

8177136: Caller sensitive methods Logger.getLogger, 
Logger.getAnonymousLogger, and System.getLogger should throw 
IllegalCallerException if there is no caller on the stack.
https://bugs.openjdk.java.net/browse/JDK-8177136

Caller sensitive methods Logger.getLogger, Logger.getAnonymousLogger,
and System.getLogger currently throw an undocumented
NullPointerException if they are called from JNI and there is no
Java frame on the stack.

Throwing NullPointerException is confusing and makes it look like there 
is a bug in the implementation.
In truth, these method are @CallerSensitive, and therefore must not
be called in a context where the caller cannot be determined.
Therefore, the right thing to do is to throw IllegalCallerException
and document this.

webrev:
http://cr.openjdk.java.net/~dfuchs/webrev_8177136/webrev.00/

As per Rampdown Phase 2 Process [1] I'd also like to get
confirmation that this is a reasonable proposal to fix in 9.
This fix just transmutes a NullPointerException (which should
never happen at this point in regular usage of the API) into an
IllegalCallerException which will help diagnosing the fact
that the API is called from a context where it's not supposed
to be used. The risk of fixing should therefore be very limited.

best regards,

-- daniel

[1] Rampdown Phase 2 Process
http://mail.openjdk.java.net/pipermail/jdk9-dev/2017-March/005666.html


More information about the core-libs-dev mailing list