Always initialize statistics server map

This commit is contained in:
Devon Hudson 2023-01-12 09:22:53 -07:00
parent 0491a8e343
commit 477a44faa6
No known key found for this signature in database
GPG key ID: CD06B18E77F6A628

View file

@ -35,18 +35,13 @@ func NewStatistics(db storage.Database, failuresUntilBlacklist uint32) Statistic
DB: db, DB: db,
FailuresUntilBlacklist: failuresUntilBlacklist, FailuresUntilBlacklist: failuresUntilBlacklist,
backoffTimers: make(map[gomatrixserverlib.ServerName]*time.Timer), backoffTimers: make(map[gomatrixserverlib.ServerName]*time.Timer),
servers: make(map[gomatrixserverlib.ServerName]*ServerStatistics),
} }
} }
// ForServer returns server statistics for the given server name. If it // ForServer returns server statistics for the given server name. If it
// does not exist, it will create empty statistics and return those. // does not exist, it will create empty statistics and return those.
func (s *Statistics) ForServer(serverName gomatrixserverlib.ServerName) *ServerStatistics { func (s *Statistics) ForServer(serverName gomatrixserverlib.ServerName) *ServerStatistics {
// If the map hasn't been initialised yet then do that.
if s.servers == nil {
s.mutex.Lock()
s.servers = make(map[gomatrixserverlib.ServerName]*ServerStatistics)
s.mutex.Unlock()
}
// Look up if we have statistics for this server already. // Look up if we have statistics for this server already.
s.mutex.RLock() s.mutex.RLock()
server, found := s.servers[serverName] server, found := s.servers[serverName]