lib/model: Add global request limiter (fixes #6302) (#6303)

This adds a new config with the simple and concise name
maxConcurrentIncomingRequestKiB. This limits how many bytes we have "in
the air" in the form of response data being read and processed.

After some testing I think that not having this limiter is seldom a
great idea and thus I propose a default value of 256 MiB for this new
setting.

I also refactored the folder IO limiter to be a model/folder attribute
instead of a package global.
This commit is contained in:
Jakob Borg
2020-02-01 08:02:18 +01:00
committed by GitHub
parent 9cef283151
commit 55937b61ca
8 changed files with 139 additions and 57 deletions
+2 -2
View File
@@ -25,9 +25,9 @@ type sendOnlyFolder struct {
folder
}
func newSendOnlyFolder(model *model, fset *db.FileSet, ignores *ignore.Matcher, cfg config.FolderConfiguration, _ versioner.Versioner, _ fs.Filesystem, evLogger events.Logger) service {
func newSendOnlyFolder(model *model, fset *db.FileSet, ignores *ignore.Matcher, cfg config.FolderConfiguration, _ versioner.Versioner, _ fs.Filesystem, evLogger events.Logger, ioLimiter *byteSemaphore) service {
f := &sendOnlyFolder{
folder: newFolder(model, fset, ignores, cfg, evLogger),
folder: newFolder(model, fset, ignores, cfg, evLogger, ioLimiter),
}
f.folder.puller = f
f.folder.Service = util.AsService(f.serve, f.String())