# PR#131: Reviews Wait Longer for a Slow Gitea, and hs-review Names the Cause of a Failure Version: patch > **WARNING:** This document describes only the change applied in this PR. > It may already be outdated once the next PR is merged. > Historic PR documentation is not maintained along with new PRs; treat it as a snapshot. ## Problem On 2026-10-20 and 2026-10-22 the TLS handshake of dev.hostsharing.net took 15 to 22 s, once more than 40 s; TCP connects took 0.04 s, and git.javagil.de shook hands in 0.1 s. werkrevisor opens a connection per request and gives up after 30 s, `tools/review-report` after 60 s, so one slow handshake ended `hs-review 342` and `hs-review 343` without a result. `hs-review` then printed the first line of the error, "werkrevisor: operator config from …", an info line, instead of the cause "cannot read the PR: … The handshake operation timed out". ## Non-Goals - No retries and no reuse of connections. ## Specification ### Feature: a slow Gitea ends fewer reviews, and a failure names its cause #### Scenario#131.01: the summary of hs-review names the cause of a failure … so that the human sees why the review did not complete without opening the draft. - **Given** a review by `hs-review` that fails, e.g. because Gitea does not answer in time - **When** `hs-review` shows its summary - **Then** the summary names the cause of the failure, not a line about the config in use ##### Verified by - [test_reviewreport.ErrorTextTest.test_the_cause_of_a_failure_comes_first](../../tests/test_reviewreport.py) #### Scenario#131.02: a Gitea request waits 90 s … so that a TLS handshake of up to a minute does not end the review. - **Given** a Gitea client of werkrevisor or of `tools/review-report` - **When** it sends a request - **Then** it waits up to 90 s for the answer, before 30 s and 60 s ##### Verified by - [test_reviewreport.ErrorTextTest.test_a_gitea_request_waits_90_seconds](../../tests/test_reviewreport.py) ## Solution - `werkrevisor/gitea.py`: `TIMEOUT_SECONDS = 90` is the default timeout of `GiteaClient`, before 30 s. A request that hangs costs at most 90 s; the ai-review build has 15 minutes. - `werkrevisor/reviewreport.py`: its two Gitea clients take that default instead of 60 s. `error_text` drops the lines "werkrevisor: operator config from …" and "werkrevisor: config: …" from the stderr of a failed dry run; the summary line of `hs-review` shows the first line that is left. - `tests/test_reviewreport.py`: `ErrorTextTest` checks both scenarios. - `werkrevisor/__init__.py` and `statistics/build.gradle.kts`: version 0.60.1.