On Mon, 3 Jul 2023 09:40:48 GMT, Conor Cleary <[email protected]> wrote:

>> So for HTTP/2, the `cancelImpl()` method in `Stream` looks like this. 
>> 
>> 
>>     @Override
>>     void cancel() {
>>         if ((streamid == 0)) {
>>             cancel(new IOException("Stream cancelled before streamid 
>> assigned"));
>>         } else {
>>             cancel(new IOException("Stream " + streamid + " cancelled"));
>>         }
>>     }
>> 
>> 
>> When the new IOException is passed to cancel, it sets the `errorRef` field 
>> to the IOException which then gets returned to us as the cause of the 
>> CompletableFuture's cause for cancelling. I think this behaviour is 
>> acceptable as the IOException returned will say "Stream x cancelled" which 
>> is accurate.  Possible that I dont need to have this "CancelException" here
>> 
>> May be more difficult to verify the cause of cancellation beyond that which 
>> I'll think about.
>
> There is a check that the cancelling BodyHandler sets the cancelled field 
> which may be sufficient

Could also just check that the returned a call to `getMessage()` returns a 
string that contains cancelled but its not a very nice solution

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/14625#discussion_r1250671729

Reply via email to