浏览代码

lib/model: Less locking in ClusterConfig (#5943)

Simon Frei 6 年之前
父节点
当前提交
86e35f1879
共有 1 个文件被更改,包括 2 次插入2 次删除
  1. 2 2
      lib/model/model.go

+ 2 - 2
lib/model/model.go

@@ -1062,8 +1062,7 @@ func (m *model) ClusterConfig(deviceID protocol.DeviceID, cm protocol.ClusterCon
 		}
 		}
 	}
 	}
 
 
-	m.fmut.Lock()
-	defer m.fmut.Unlock()
+	m.fmut.RLock()
 	var paused []string
 	var paused []string
 	for _, folder := range cm.Folders {
 	for _, folder := range cm.Folders {
 		cfg, ok := m.cfg.Folder(folder.ID)
 		cfg, ok := m.cfg.Folder(folder.ID)
@@ -1184,6 +1183,7 @@ func (m *model) ClusterConfig(deviceID protocol.DeviceID, cm protocol.ClusterCon
 		// implementing suture.IsCompletable).
 		// implementing suture.IsCompletable).
 		m.Add(is)
 		m.Add(is)
 	}
 	}
+	m.fmut.RUnlock()
 
 
 	m.pmut.Lock()
 	m.pmut.Lock()
 	m.remotePausedFolders[deviceID] = paused
 	m.remotePausedFolders[deviceID] = paused