dcutr/server is the only protocol handler outside tests / examples that raises exceptions. The only caller of this handler is defined in MultStreamSelect.handle, which has a surrounding except block that catches CatchableError.
When the handler raises a non-CancelledError the flow is:
await protocolHolder.protocol.handler(conn, ms)
The finally block after it
The return, both in successful and in exception case
The outer except CatchableError as exc:, it logs and discards exc
The outer finally: await conn.close()
Stopped multistream handler log, both in successful and exc case.
By changing dcutr/server to only log but not also raise, difference is that the outer except CatchableError in step (4) is skipped.
As that is a redundant log anyway (dcutr/server already logs), it should be fine to not raise. That's in line with all the other protocol handlers (besides tests / examples) and opens up limiting {.raises.} annotation for handlers to just [CancelledError].
dcutr/server
is the only protocol handler outside tests / examples that raises exceptions. The only caller of this handler is defined inMultStreamSelect.handle
, which has a surroundingexcept
block that catchesCatchableError
.When the handler raises a non-
CancelledError
the flow is:await protocolHolder.protocol.handler(conn, ms)
finally
block after itreturn
, both in successful and in exception caseexcept CatchableError as exc:
, it logs and discardsexc
finally
:await conn.close()
Stopped multistream handler
log, both in successful and exc case.By changing
dcutr/server
to only log but not also raise, difference is that the outerexcept CatchableError
in step (4) is skipped.As that is a redundant log anyway (
dcutr/server
already logs), it should be fine to not raise. That's in line with all the other protocol handlers (besides tests / examples) and opens up limiting{.raises.}
annotation for handlers to just[CancelledError]
.