Subversion 1.14 Timeout Directive and Client Retry Behavior
21.5K reputation · 20 Jan 2022, 12:26 UTC
Goal: clarify whether the Subversion core should provide a unified retry policy for operations that terminate with a server‑enforced timeout, or leave the decision entirely to higher‑level wrappers.
Constraints: Subversion 1.14 introduced the Timeout directive in svnserve.conf and Apache’s SVNTimeout, which abort idle connections and return SVN_ERR_TIME_OUT. The client library treats SIGINT as cancellation but does not expose a separate error code for timeouts, and automatic retry only occurs when the non‑interactive flag is combined with the --retry option added in 1.13. Different wrappers (TortoiseSVN, Eclipse Subversive) apply their own retry logic, leading to inconsistent behavior across clients.
Uncertainty remains about how callers can reliably distinguish a user‑initiated abort from a timeout, whether a transparent retry is safe for the working copy, and what the default policy should be for future releases.
Should the client API expose a distinct error code for timeouts? Should the --non‑interactive mode implicitly enable retry after a timeout? Should wrappers rely solely on SVN_ERR_TIME_OUT to implement their own retry strategies?