mirror of
https://github.com/octoleo/syncthing.git
synced 2024-12-22 10:58:57 +00:00
Lock tracing, fixes
This commit is contained in:
parent
4151972d3e
commit
cf04e101b9
43
locktrace.go
Normal file
43
locktrace.go
Normal file
@ -0,0 +1,43 @@
|
||||
//+build locktrace
|
||||
|
||||
package main
|
||||
|
||||
import (
|
||||
"log"
|
||||
"path"
|
||||
"runtime"
|
||||
"time"
|
||||
)
|
||||
|
||||
var (
|
||||
lockTime time.Time
|
||||
)
|
||||
|
||||
func (m *Model) Lock() {
|
||||
_, file, line, _ := runtime.Caller(1)
|
||||
log.Printf("%s:%d: Lock()...", path.Base(file), line)
|
||||
blockTime := time.Now()
|
||||
m.RWMutex.Lock()
|
||||
lockTime = time.Now()
|
||||
log.Printf("%s:%d: ...Lock() [%.04f ms]", path.Base(file), line, time.Since(blockTime).Seconds()*1000)
|
||||
}
|
||||
|
||||
func (m *Model) Unlock() {
|
||||
_, file, line, _ := runtime.Caller(1)
|
||||
m.RWMutex.Unlock()
|
||||
log.Printf("%s:%d: Unlock() [%.04f ms]", path.Base(file), line, time.Since(lockTime).Seconds()*1000)
|
||||
}
|
||||
|
||||
func (m *Model) RLock() {
|
||||
_, file, line, _ := runtime.Caller(1)
|
||||
log.Printf("%s:%d: RLock()...", path.Base(file), line)
|
||||
blockTime := time.Now()
|
||||
m.RWMutex.RLock()
|
||||
log.Printf("%s:%d: ...RLock() [%.04f ms]", path.Base(file), line, time.Since(blockTime).Seconds()*1000)
|
||||
}
|
||||
|
||||
func (m *Model) RUnlock() {
|
||||
_, file, line, _ := runtime.Caller(1)
|
||||
m.RWMutex.RUnlock()
|
||||
log.Printf("%s:%d: RUnlock()", path.Base(file), line)
|
||||
}
|
12
model.go
12
model.go
@ -233,16 +233,10 @@ func (m *Model) ReplaceLocal(fs []File) {
|
||||
m.recomputeGlobal()
|
||||
m.recomputeNeed()
|
||||
m.updated = time.Now().Unix()
|
||||
m.broadcastIndex()
|
||||
m.lastIdxBcastRequest = time.Now()
|
||||
}
|
||||
}
|
||||
|
||||
func (m *Model) broadcastIndex() {
|
||||
m.Lock()
|
||||
defer m.Unlock()
|
||||
m.lastIdxBcastRequest = time.Now()
|
||||
}
|
||||
|
||||
func (m *Model) broadcastIndexLoop() {
|
||||
for {
|
||||
m.RLock()
|
||||
@ -263,7 +257,7 @@ func (m *Model) broadcastIndexLoop() {
|
||||
m.lastIdxBcast = time.Now()
|
||||
}
|
||||
m.RUnlock()
|
||||
time.Sleep(idxBcastHoldtime)
|
||||
time.Sleep(idxBcastHoldtime / 2)
|
||||
}
|
||||
}
|
||||
|
||||
@ -300,7 +294,7 @@ func (m *Model) UpdateLocal(f File) {
|
||||
m.recomputeGlobal()
|
||||
m.recomputeNeed()
|
||||
m.updated = time.Now().Unix()
|
||||
m.broadcastIndex()
|
||||
m.lastIdxBcastRequest = time.Now()
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user