all: Don't let Suture capture panics (fixes #4758) (#5119)

Fork with new option.
This commit is contained in:
Jakob Borg
2018-08-13 20:39:08 +02:00
committed by GitHub
parent c55c0c8c28
commit 48795dba07
18 changed files with 63 additions and 37 deletions

View File

@@ -10,7 +10,7 @@ import (
"net"
stdsync "sync"
"github.com/thejerf/suture"
"github.com/calmh/suture"
)
type recv struct {

View File

@@ -11,8 +11,8 @@ import (
"net"
"time"
"github.com/calmh/suture"
"github.com/syncthing/syncthing/lib/sync"
"github.com/thejerf/suture"
)
type Broadcast struct {
@@ -36,6 +36,7 @@ func NewBroadcast(port int) *Broadcast {
Log: func(line string) {
l.Debugln(line)
},
PanicPanics: true,
}),
port: port,
inbox: make(chan []byte),

View File

@@ -12,7 +12,7 @@ import (
"net"
"time"
"github.com/thejerf/suture"
"github.com/calmh/suture"
"golang.org/x/net/ipv6"
)
@@ -36,6 +36,7 @@ func NewMulticast(addr string) *Multicast {
Log: func(line string) {
l.Debugln(line)
},
PanicPanics: true,
}),
inbox: make(chan []byte),
outbox: make(chan recv, 16),

View File

@@ -30,7 +30,7 @@ import (
_ "github.com/syncthing/syncthing/lib/pmp"
_ "github.com/syncthing/syncthing/lib/upnp"
"github.com/thejerf/suture"
"github.com/calmh/suture"
"golang.org/x/time/rate"
)
@@ -105,6 +105,7 @@ func NewService(cfg *config.Wrapper, myID protocol.DeviceID, mdl Model, tlsCfg *
Log: func(line string) {
l.Infoln(line)
},
PanicPanics: true,
}),
cfg: cfg,
myID: myID,
@@ -131,6 +132,7 @@ func NewService(cfg *config.Wrapper, myID protocol.DeviceID, mdl Model, tlsCfg *
},
FailureThreshold: 2,
FailureBackoff: 600 * time.Second,
PanicPanics: true,
}),
}
cfg.Subscribe(service)

View File

@@ -10,10 +10,10 @@ import (
stdsync "sync"
"time"
"github.com/calmh/suture"
"github.com/syncthing/syncthing/lib/protocol"
"github.com/syncthing/syncthing/lib/sync"
"github.com/syncthing/syncthing/lib/util"
"github.com/thejerf/suture"
)
// The CachingMux aggregates results from multiple Finders. Each Finder has
@@ -51,8 +51,10 @@ type cachedError interface {
func NewCachingMux() CachingMux {
return &cachingMux{
Supervisor: suture.NewSimple("discover.cachingMux"),
mut: sync.NewRWMutex(),
Supervisor: suture.New("discover.cachingMux", suture.Spec{
PanicPanics: true,
}),
mut: sync.NewRWMutex(),
}
}

View File

@@ -9,8 +9,8 @@ package discover
import (
"time"
"github.com/calmh/suture"
"github.com/syncthing/syncthing/lib/protocol"
"github.com/thejerf/suture"
)
// A Finder provides lookup services of some kind.

View File

@@ -18,11 +18,11 @@ import (
"strconv"
"time"
"github.com/calmh/suture"
"github.com/syncthing/syncthing/lib/beacon"
"github.com/syncthing/syncthing/lib/events"
"github.com/syncthing/syncthing/lib/protocol"
"github.com/syncthing/syncthing/lib/rand"
"github.com/thejerf/suture"
)
type localClient struct {
@@ -48,7 +48,9 @@ const (
func NewLocal(id protocol.DeviceID, addr string, addrList AddressLister) (FinderService, error) {
c := &localClient{
Supervisor: suture.NewSimple("local"),
Supervisor: suture.New("local", suture.Spec{
PanicPanics: true,
}),
myID: id,
addrList: addrList,
localBcastTick: time.NewTicker(BroadcastInterval).C,

View File

@@ -22,6 +22,7 @@ import (
"strings"
"time"
"github.com/calmh/suture"
"github.com/syncthing/syncthing/lib/config"
"github.com/syncthing/syncthing/lib/connections"
"github.com/syncthing/syncthing/lib/db"
@@ -35,7 +36,6 @@ import (
"github.com/syncthing/syncthing/lib/sync"
"github.com/syncthing/syncthing/lib/upgrade"
"github.com/syncthing/syncthing/lib/versioner"
"github.com/thejerf/suture"
)
var locationLocal *time.Location
@@ -136,6 +136,7 @@ func NewModel(cfg *config.Wrapper, id protocol.DeviceID, clientName, clientVersi
Log: func(line string) {
l.Debugln(line)
},
PanicPanics: true,
}),
cfg: cfg,
db: ldb,