From 47613d4bbdf5e0bd6f6dba9f133c771e2a8a2fbc Mon Sep 17 00:00:00 2001 From: Paul Saab Date: Wed, 24 Sep 2014 13:17:37 -0700 Subject: [PATCH] Track the total size of the of the torrents map --- stats/stats.go | 4 ++++ tracker/storage.go | 6 +++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/stats/stats.go b/stats/stats.go index 03a7c80..44a788e 100644 --- a/stats/stats.go +++ b/stats/stats.go @@ -81,6 +81,7 @@ type Stats struct { Announces uint64 `json:"Tracker.Announces"` Scrapes uint64 `json:"Tracker.Scrapes"` + TorrentsSize uint64 `json:"Torrents.Size"` TorrentsAdded uint64 `json:"Torrents.Added"` TorrentsRemoved uint64 `json:"Torrents.Removed"` TorrentsReaped uint64 `json:"Torrents.Reaped"` @@ -192,12 +193,15 @@ func (s *Stats) handleEvent(event int) { case NewTorrent: s.TorrentsAdded++ + s.TorrentsSize++ case DeletedTorrent: s.TorrentsRemoved++ + s.TorrentsSize-- case ReapedTorrent: s.TorrentsReaped++ + s.TorrentsSize-- case AcceptedConnection: s.ConnectionsAccepted++ diff --git a/tracker/storage.go b/tracker/storage.go index 9afeb18..90611d2 100644 --- a/tracker/storage.go +++ b/tracker/storage.go @@ -44,6 +44,10 @@ func NewStorage(cfg *config.Config) *Storage { return s } +func (s *Storage) Len() int { + return int(atomic.LoadInt32(&s.size)) +} + func (s *Storage) GetShardIndex(infohash string) uint32 { idx := fnv.New32() idx.Write([]byte(infohash)) @@ -198,7 +202,7 @@ func (s *Storage) PurgeInactivePeers(purgeEmptyTorrents bool, before time.Time) // Build a list of keys to process. index := 0 - maxkeys := int(atomic.LoadInt32(&s.size)) + maxkeys := s.Len() keys := make([]string, maxkeys) for i := range s.shards { shard := &s.shards[i]