summaryrefslogtreecommitdiffstats
path: root/store
diff options
context:
space:
mode:
authorHarrison Healey <harrisonmhealey@gmail.com>2018-08-30 10:28:58 -0400
committerGitHub <noreply@github.com>2018-08-30 10:28:58 -0400
commitc8e473a789aee912d57c0d42b32fbbbfb3b4228a (patch)
treed1700f1e897f08e7305e40d59b85f7a483e4a11a /store
parent570c52b4cc88d7d0864511b9a4cb6318a07a6dbb (diff)
downloadchat-c8e473a789aee912d57c0d42b32fbbbfb3b4228a.tar.gz
chat-c8e473a789aee912d57c0d42b32fbbbfb3b4228a.tar.bz2
chat-c8e473a789aee912d57c0d42b32fbbbfb3b4228a.zip
Invalidate store cache after making changes (#9211)
* Invalidate store cache after making changes * Address feedback * Make cache invalidation in stores always use defer
Diffstat (limited to 'store')
-rw-r--r--store/local_cache_supplier_reactions.go2
-rw-r--r--store/local_cache_supplier_schemes.go1
-rw-r--r--store/redis_supplier_roles.go22
3 files changed, 15 insertions, 10 deletions
diff --git a/store/local_cache_supplier_reactions.go b/store/local_cache_supplier_reactions.go
index be32ab77e..2bf6b82d2 100644
--- a/store/local_cache_supplier_reactions.go
+++ b/store/local_cache_supplier_reactions.go
@@ -18,7 +18,7 @@ func (s *LocalCacheSupplier) handleClusterInvalidateReaction(msg *model.ClusterM
}
func (s *LocalCacheSupplier) ReactionSave(ctx context.Context, reaction *model.Reaction, hints ...LayeredStoreHint) *LayeredStoreSupplierResult {
- s.doInvalidateCacheCluster(s.reactionCache, reaction.PostId)
+ defer s.doInvalidateCacheCluster(s.reactionCache, reaction.PostId)
return s.Next().ReactionSave(ctx, reaction, hints...)
}
diff --git a/store/local_cache_supplier_schemes.go b/store/local_cache_supplier_schemes.go
index 2f201c17b..8dd1feded 100644
--- a/store/local_cache_supplier_schemes.go
+++ b/store/local_cache_supplier_schemes.go
@@ -53,6 +53,7 @@ func (s *LocalCacheSupplier) SchemeGetAllPage(ctx context.Context, scope string,
func (s *LocalCacheSupplier) SchemePermanentDeleteAll(ctx context.Context, hints ...LayeredStoreHint) *LayeredStoreSupplierResult {
defer s.doClearCacheCluster(s.schemeCache)
+ defer s.doClearCacheCluster(s.roleCache)
return s.Next().SchemePermanentDeleteAll(ctx, hints...)
}
diff --git a/store/redis_supplier_roles.go b/store/redis_supplier_roles.go
index 49f8ede48..a445c38a9 100644
--- a/store/redis_supplier_roles.go
+++ b/store/redis_supplier_roles.go
@@ -14,9 +14,11 @@ import (
func (s *RedisSupplier) RoleSave(ctx context.Context, role *model.Role, hints ...LayeredStoreHint) *LayeredStoreSupplierResult {
key := buildRedisKeyForRoleName(role.Name)
- if err := s.client.Del(key).Err(); err != nil {
- mlog.Error("Redis failed to remove key " + key + " Error: " + err.Error())
- }
+ defer func() {
+ if err := s.client.Del(key).Err(); err != nil {
+ mlog.Error("Redis failed to remove key " + key + " Error: " + err.Error())
+ }
+ }()
return s.Next().RoleSave(ctx, role, hints...)
}
@@ -87,15 +89,17 @@ func (s *RedisSupplier) RoleDelete(ctx context.Context, roleId string, hints ...
result := s.Next().RoleGet(ctx, roleId, hints...)
if result.Err == nil {
- role := result.Data.(*model.Role)
- key := buildRedisKeyForRoleName(role.Name)
+ defer func() {
+ role := result.Data.(*model.Role)
+ key := buildRedisKeyForRoleName(role.Name)
- if err := s.client.Del(key).Err(); err != nil {
- mlog.Error("Redis failed to remove key " + key + " Error: " + err.Error())
- }
+ if err := s.client.Del(key).Err(); err != nil {
+ mlog.Error("Redis failed to remove key " + key + " Error: " + err.Error())
+ }
+ }()
}
- return result
+ return s.Next().RoleDelete(ctx, roleId, hints...)
}
func (s *RedisSupplier) RolePermanentDeleteAll(ctx context.Context, hints ...LayeredStoreHint) *LayeredStoreSupplierResult {