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