diff --git a/solstone/convey/secure_listener/admission.py b/solstone/convey/secure_listener/admission.py index 58d58c96b..25cf76e49 100644 --- a/solstone/convey/secure_listener/admission.py +++ b/solstone/convey/secure_listener/admission.py @@ -228,7 +228,8 @@ def _resolve_float( warning_default: str, ) -> float: raw = link_cfg.get(key, default) - if isinstance(raw, bool): + + def warn_default() -> float: log.warning( "Invalid link.%s in journal config: %r \u2014 defaulting to %s", key, @@ -236,26 +237,17 @@ def _resolve_float( warning_default, ) return default + + if isinstance(raw, bool): + return warn_default() if raw == 0: log.info("link.%s is 0; secure listener queue timeout disabled", key) return 0.0 if not isinstance(raw, (int, float)): - log.warning( - "Invalid link.%s in journal config: %r \u2014 defaulting to %s", - key, - raw, - warning_default, - ) - return default + return warn_default() value = float(raw) if not (valid_min <= value <= valid_max): - log.warning( - "Invalid link.%s in journal config: %r \u2014 defaulting to %s", - key, - raw, - warning_default, - ) - return default + return warn_default() return value diff --git a/solstone/convey/secure_listener/wsgi.py b/solstone/convey/secure_listener/wsgi.py index 01ada25bb..2e3e169af 100644 --- a/solstone/convey/secure_listener/wsgi.py +++ b/solstone/convey/secure_listener/wsgi.py @@ -454,6 +454,8 @@ async def dispatch_stream( ), ) except ConnectionError: + # The peer has already reset the stream; there is no writer left for + # the refusal, but drain bookkeeping and the 503 result still apply. pass stream_writer.begin_drain(RESET_CTX_BODY_DISCARD_CANCELLATION) return DispatchResult(endpoint=endpoint, status=503) diff --git a/tests/link/test_secure_listener_queue_bound.py b/tests/link/test_secure_listener_queue_bound.py index 0bb1be140..85a4fb3f2 100644 --- a/tests/link/test_secure_listener_queue_bound.py +++ b/tests/link/test_secure_listener_queue_bound.py @@ -553,6 +553,7 @@ async def test_timeout_reclaims_raced_permit_after_delivery_intercept( ) assert status == 503 assert invoked["count"] == 0 + assert admission.snapshot()["active"]["total"] == 0 real_deliver(captured["waiter"], captured["permit"]) snapshot = await _wait_for_snapshot(