RFR 8199437 [11]Improve diagnostic system assertion message in com.sun.net.httpserver impl

Daniel Fuchs daniel.fuchs at oracle.com
Wed Mar 14 14:56:57 UTC 2018


Looks good Chris!

cheers,

-- daniel

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