]> source.dussan.org Git - gitea.git/commit
Set self-adjusting deadline for connection writing (#16068)
authorzeripath <art27@cantab.net>
Thu, 10 Jun 2021 21:25:25 +0000 (22:25 +0100)
committerGitHub <noreply@github.com>
Thu, 10 Jun 2021 21:25:25 +0000 (00:25 +0300)
commitdaa5a2354879a6dff93f431bc7e47670438995ac
treef79e9f3d2b574fa3e0cf42bb04d0ef3e8394e8b4
parent86e2789960439ca786c6e7a74f85f076c223d148
Set self-adjusting deadline for connection writing (#16068)

* Set self-adjusting deadline for connection writing

In #16055 it appears that the simple 5s deadline doesn't work for large
file writes. Now we can't - or at least shouldn't just set no deadline
as go will happily let these connections block indefinitely. However,
what seems reasonable is to set some minimum rate we expect for writing.

This PR suggests the following algorithm:

* Every write has a minimum timeout of 5s (adjustable at compile time.)
* If there has been a previous write - then consider its previous
deadline, add half of the minimum timeout + 2s per kb about to written.
* If that new deadline is after the minimum timeout use that.

Fix #16055

* Linearly increase timeout

* Make PerWriteTimeout, PerWritePerKbTimeouts configurable

Signed-off-by: Andrew Thornton <art27@cantab.net>
Co-authored-by: 6543 <6543@obermui.de>
custom/conf/app.example.ini
docs/content/doc/advanced/config-cheat-sheet.en-us.md
modules/graceful/server.go
modules/setting/setting.go
modules/ssh/ssh_graceful.go