You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Sep 11, 2020. It is now read-only.
diffmatchpatch.DiffMatchPatch has a member named DiffTimeout, which is time.Second by default. If the diff calculation takes more than that limit, it is aborted and the current, half-baked results are returned immediately. This is really, really evil for all the users. Imagine that you are running some actions which involve go-git diffs under heavy load, e.g. in gitbase, or you run them on a retarded machine, such as TravisCI. You are going to have flaky behavior, which is extremely hard to debug.
diffmatchpatch.DiffMatchPatch
has a member namedDiffTimeout
, which istime.Second
by default. If the diff calculation takes more than that limit, it is aborted and the current, half-baked results are returned immediately. This is really, really evil for all the users. Imagine that you are running some actions which involve go-git diffs under heavy load, e.g. in gitbase, or you run them on a retarded machine, such as TravisCI. You are going to have flaky behavior, which is extremely hard to debug.I have recently hit this problem in Hercules actually (src-d/hercules#234 (comment)), and it was quite painful.
I suggest to at least make the timeout limit configurable and documented in
diff.go
, at maximum set it to a safely big value, like one hour.cc @ajnavarro
The text was updated successfully, but these errors were encountered: