From b68aed90d3475a8c17e1605513c15811cb43c6c8 Mon Sep 17 00:00:00 2001 From: Derek Collison Date: Thu, 20 Jul 2023 15:11:28 -0700 Subject: [PATCH] If we created lots of hashes, beyond server names, like for consumer or stream NRG groups etc, the maps would grow and not release memory. In the benchmark on my machine, this added ~300ns per call, but I think that is ok for now vs the memory usage. Signed-off-by: Derek Collison --- server/events.go | 34 +++++++--------------------------- 1 file changed, 7 insertions(+), 27 deletions(-) diff --git a/server/events.go b/server/events.go index c954467a1c..e6b44d365e 100644 --- a/server/events.go +++ b/server/events.go @@ -843,35 +843,15 @@ func getHash(name string) string { return getHashSize(name, sysHashLen) } -var nameToHashSize8 = sync.Map{} -var nameToHashSize6 = sync.Map{} - // Computes a hash for the given `name`. The result will be `size` characters long. func getHashSize(name string, size int) string { - compute := func() string { - sha := sha256.New() - sha.Write([]byte(name)) - b := sha.Sum(nil) - for i := 0; i < size; i++ { - b[i] = digits[int(b[i]%base)] - } - return string(b[:size]) - } - var m *sync.Map - switch size { - case 8: - m = &nameToHashSize8 - case 6: - m = &nameToHashSize6 - default: - return compute() - } - if v, ok := m.Load(name); ok { - return v.(string) - } - h := compute() - m.Store(name, h) - return h + sha := sha256.New() + sha.Write([]byte(name)) + b := sha.Sum(nil) + for i := 0; i < size; i++ { + b[i] = digits[int(b[i]%base)] + } + return string(b[:size]) } // Returns the node name for this server which is a hash of the server name.