1
0
Эх сурвалжийг харах

Data race: deviceActivity methods with value receiver :(

Jakob Borg 11 жил өмнө
parent
commit
a918aa97d9

+ 5 - 5
internal/model/deviceactivity.go

@@ -35,7 +35,7 @@ func newDeviceActivity() *deviceActivity {
 	}
 }
 
-func (m deviceActivity) leastBusy(availability []protocol.DeviceID) protocol.DeviceID {
+func (m *deviceActivity) leastBusy(availability []protocol.DeviceID) protocol.DeviceID {
 	m.mut.Lock()
 	var low int = 2<<30 - 1
 	var selected protocol.DeviceID
@@ -49,14 +49,14 @@ func (m deviceActivity) leastBusy(availability []protocol.DeviceID) protocol.Dev
 	return selected
 }
 
-func (m deviceActivity) using(device protocol.DeviceID) {
+func (m *deviceActivity) using(device protocol.DeviceID) {
 	m.mut.Lock()
-	defer m.mut.Unlock()
 	m.act[device]++
+	m.mut.Unlock()
 }
 
-func (m deviceActivity) done(device protocol.DeviceID) {
+func (m *deviceActivity) done(device protocol.DeviceID) {
 	m.mut.Lock()
-	defer m.mut.Unlock()
 	m.act[device]--
+	m.mut.Unlock()
 }