summaryrefslogtreecommitdiff
path: root/internal/cache/visibility.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/cache/visibility.go')
-rw-r--r--internal/cache/visibility.go15
1 files changed, 11 insertions, 4 deletions
diff --git a/internal/cache/visibility.go b/internal/cache/visibility.go
index fd481eedc..8c534206b 100644
--- a/internal/cache/visibility.go
+++ b/internal/cache/visibility.go
@@ -20,6 +20,7 @@ package cache
import (
"codeberg.org/gruf/go-cache/v3/result"
"github.com/superseriousbusiness/gotosocial/internal/config"
+ "github.com/superseriousbusiness/gotosocial/internal/log"
)
type VisibilityCache struct {
@@ -29,6 +30,14 @@ type VisibilityCache struct {
// Init will initialize the visibility cache in this collection.
// NOTE: the cache MUST NOT be in use anywhere, this is not thread-safe.
func (c *VisibilityCache) Init() {
+ // Calculate maximum cache size.
+ cap := calculateResultCacheMax(
+ sizeofVisibility(), // model in-mem size.
+ config.GetCacheVisibilityMemRatio(),
+ )
+
+ log.Infof(nil, "Visibility cache size = %d", cap)
+
c.Cache = result.New([]result.Lookup{
{Name: "ItemID", Multi: true},
{Name: "RequesterID", Multi: true},
@@ -37,19 +46,17 @@ func (c *VisibilityCache) Init() {
v2 := new(CachedVisibility)
*v2 = *v1
return v2
- }, config.GetCacheVisibilityMaxSize())
- c.Cache.SetTTL(config.GetCacheVisibilityTTL(), true)
+ }, cap)
+
c.Cache.IgnoreErrors(ignoreErrors)
}
// Start will attempt to start the visibility cache, or panic.
func (c *VisibilityCache) Start() {
- tryStart(c.Cache, config.GetCacheVisibilitySweepFreq())
}
// Stop will attempt to stop the visibility cache, or panic.
func (c *VisibilityCache) Stop() {
- tryStop(c.Cache, config.GetCacheVisibilitySweepFreq())
}
// VisibilityType represents a visibility lookup type.