lib/model: Wait for folder to stop (fixes #4981) (#4982)

This commit is contained in:
Simon Frei
2018-06-10 13:24:59 +02:00
committed by GitHub
parent 30056cd1ae
commit b7234785f8
2 changed files with 11 additions and 3 deletions

View File

@@ -344,10 +344,14 @@ func (m *Model) RemoveFolder(cfg config.FolderConfiguration) {
}
func (m *Model) tearDownFolderLocked(cfg config.FolderConfiguration) {
// Stop the services running for this folder
for _, id := range m.folderRunnerTokens[cfg.ID] {
m.Remove(id)
// Stop the services running for this folder and wait for them to finish
// stopping to prevent races on restart.
tokens := m.folderRunnerTokens[cfg.ID]
m.fmut.Unlock()
for _, id := range tokens {
m.RemoveAndWait(id, 0)
}
m.fmut.Lock()
// Close connections to affected devices
for _, dev := range cfg.Devices {