diff options
Diffstat (limited to 'internal/cache')
| -rw-r--r-- | internal/cache/cache.go | 1 | ||||
| -rw-r--r-- | internal/cache/gts.go | 30 | ||||
| -rw-r--r-- | internal/cache/size.go | 11 | 
3 files changed, 42 insertions, 0 deletions
diff --git a/internal/cache/cache.go b/internal/cache/cache.go index ec0ec3faa..777088f07 100644 --- a/internal/cache/cache.go +++ b/internal/cache/cache.go @@ -248,6 +248,7 @@ func (c *Caches) Sweep(threshold float64) {  	c.GTS.Status().Trim(threshold)  	c.GTS.StatusFave().Trim(threshold)  	c.GTS.Tag().Trim(threshold) +	c.GTS.ThreadMute().Trim(threshold)  	c.GTS.Tombstone().Trim(threshold)  	c.GTS.User().Trim(threshold)  	c.Visibility.Trim(threshold) diff --git a/internal/cache/gts.go b/internal/cache/gts.go index 16a1585f7..d96b7267f 100644 --- a/internal/cache/gts.go +++ b/internal/cache/gts.go @@ -57,6 +57,7 @@ type GTSCaches struct {  	statusFave       *result.Cache[*gtsmodel.StatusFave]  	statusFaveIDs    *SliceCache[string]  	tag              *result.Cache[*gtsmodel.Tag] +	threadMute       *result.Cache[*gtsmodel.ThreadMute]  	tombstone        *result.Cache[*gtsmodel.Tombstone]  	user             *result.Cache[*gtsmodel.User] @@ -93,6 +94,7 @@ func (c *GTSCaches) Init() {  	c.initStatus()  	c.initStatusFave()  	c.initTag() +	c.initThreadMute()  	c.initStatusFaveIDs()  	c.initTombstone()  	c.initUser() @@ -249,6 +251,11 @@ func (c *GTSCaches) Tag() *result.Cache[*gtsmodel.Tag] {  	return c.tag  } +// ThreadMute provides access to the gtsmodel ThreadMute database cache. +func (c *GTSCaches) ThreadMute() *result.Cache[*gtsmodel.ThreadMute] { +	return c.threadMute +} +  // StatusFaveIDs provides access to the status fave IDs list database cache.  func (c *GTSCaches) StatusFaveIDs() *SliceCache[string] {  	return c.statusFaveIDs @@ -712,6 +719,7 @@ func (c *GTSCaches) initStatus() {  		{Name: "URI"},  		{Name: "URL"},  		{Name: "BoostOfID.AccountID"}, +		{Name: "ThreadID", Multi: true},  	}, func(s1 *gtsmodel.Status) *gtsmodel.Status {  		s2 := new(gtsmodel.Status)  		*s2 = *s1 @@ -778,6 +786,28 @@ func (c *GTSCaches) initTag() {  	c.tag.IgnoreErrors(ignoreErrors)  } +func (c *GTSCaches) initThreadMute() { +	cap := calculateResultCacheMax( +		sizeOfThreadMute(), // model in-mem size. +		config.GetCacheThreadMuteMemRatio(), +	) + +	log.Infof(nil, "cache size = %d", cap) + +	c.threadMute = result.New([]result.Lookup{ +		{Name: "ID"}, +		{Name: "ThreadID", Multi: true}, +		{Name: "AccountID", Multi: true}, +		{Name: "ThreadID.AccountID"}, +	}, func(t1 *gtsmodel.ThreadMute) *gtsmodel.ThreadMute { +		t2 := new(gtsmodel.ThreadMute) +		*t2 = *t1 +		return t2 +	}, cap) + +	c.threadMute.IgnoreErrors(ignoreErrors) +} +  func (c *GTSCaches) initTombstone() {  	// Calculate maximum cache size.  	cap := calculateResultCacheMax( diff --git a/internal/cache/size.go b/internal/cache/size.go index f578b9402..3e77c68ac 100644 --- a/internal/cache/size.go +++ b/internal/cache/size.go @@ -194,6 +194,7 @@ func totalOfRatios() float64 {  		config.GetCacheStatusFaveMemRatio() +  		config.GetCacheStatusFaveIDsMemRatio() +  		config.GetCacheTagMemRatio() + +		config.GetCacheThreadMuteMemRatio() +  		config.GetCacheTombstoneMemRatio() +  		config.GetCacheUserMemRatio() +  		config.GetCacheWebfingerMemRatio() + @@ -511,6 +512,16 @@ func sizeofTag() uintptr {  	}))  } +func sizeOfThreadMute() uintptr { +	return uintptr(size.Of(>smodel.ThreadMute{ +		ID:        exampleID, +		CreatedAt: exampleTime, +		UpdatedAt: exampleTime, +		ThreadID:  exampleID, +		AccountID: exampleID, +	})) +} +  func sizeofTombstone() uintptr {  	return uintptr(size.Of(>smodel.Tombstone{  		ID:        exampleID,  | 
