cmd/syncthing, lib/sync: Don't do deadlock detection when STDEADLOCKTIMEOUT=0 (fixes #4644)

Allows setting STDEADLOCKTIMEOUT=0 (or any integer <= 0) to disable the
deadlock detection entirely.

GitHub-Pull-Request: https://github.com/syncthing/syncthing/pull/4673
This commit is contained in:
Jakob Borg
2018-01-15 13:33:52 +00:00
committed by Audrius Butkevicius
parent fcc6a677a5
commit 838c182b5b
2 changed files with 11 additions and 9 deletions

View File

@@ -24,17 +24,20 @@ var (
// }" variable, as it may be rather performance critical and does
// nonstandard things (from a debug logging PoV).
debug = strings.Contains(os.Getenv("STTRACE"), "sync") || os.Getenv("STTRACE") == "all"
useDeadlock = os.Getenv("STDEADLOCKTIMEOUT") != ""
useDeadlock = false
)
func init() {
l.SetDebug("sync", strings.Contains(os.Getenv("STTRACE"), "sync") || os.Getenv("STTRACE") == "all")
if n, err := strconv.Atoi(os.Getenv("STLOCKTHRESHOLD")); err == nil {
if n, _ := strconv.Atoi(os.Getenv("STLOCKTHRESHOLD")); n > 0 {
threshold = time.Duration(n) * time.Millisecond
}
if n, err := strconv.Atoi(os.Getenv("STDEADLOCKTIMEOUT")); err == nil {
deadlock.Opts.DeadlockTimeout = time.Duration(n) * time.Second
}
l.Debugf("Enabling lock logging at %v threshold", threshold)
if n, _ := strconv.Atoi(os.Getenv("STDEADLOCKTIMEOUT")); n > 0 {
deadlock.Opts.DeadlockTimeout = time.Duration(n) * time.Second
l.Debugf("Enabling lock deadlocking at %v", deadlock.Opts.DeadlockTimeout)
useDeadlock = true
}
}