RFR 8199437 [11]Improve diagnostic system assertion message in com.sun.net.httpserver impl
Alan Bateman
Alan.Bateman at oracle.com
Wed Mar 14 14:58:32 UTC 2018
We can add a toString() to SelectionKeyImpl if needed as it can access
the interest and readys ops without concern for cancel.
-Alan
On 14/03/2018 14:51, Chris Hegarty wrote:
> On 14/03/18 14:39, Daniel Fuchs wrote:
>> Hi Chris,
>>
>> key.interestOps() might throw CancelledKeyException in
>> which case you may trade an AssertionError for a
>> CancelledKeyException when building the assertion
>> message.
>>
>> Maybe some of the other methods you call on key need
>> to be checked as well.
>
> Good catch Daniel. Updated code:
>
> --- a/src/jdk.httpserver/share/classes/sun/net/httpserver/ServerImpl.java
> +++ b/src/jdk.httpserver/share/classes/sun/net/httpserver/ServerImpl.java
> @@ -280,6 +280,16 @@
> }
> }
>
> + // assertion diagnostic information
> + private static String opsFromKey(SelectionKey key) {
> + try {
> + return String.format("interestOps:%d, readyOps:%d",
> + key.interestOps(), key.readyOps());
> + } catch (CancellationException cce) {
> + return "key has been cancelled";
> + }
> + }
> +
> /* main server listener task */
>
> class Dispatcher implements Runnable {
> @@ -408,7 +418,9 @@
> }
> handle (chan, conn);
> } else {
> - assert false;
> + assert false :
> String.format("Unexpected non-readable key,"
> + + " where key's channel:%s,
> isValid:%b, %s",
> + key.channel(), key.isValid(),
> opsFromKey(key));
> }
> } catch (CancelledKeyException e) {
> handleException(key, null);
>
>
> -Chris.
More information about the net-dev
mailing list