diff options
author | Harrison Healey <harrisonmhealey@gmail.com> | 2018-08-30 10:28:58 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-08-30 10:28:58 -0400 |
commit | c8e473a789aee912d57c0d42b32fbbbfb3b4228a (patch) | |
tree | d1700f1e897f08e7305e40d59b85f7a483e4a11a | |
parent | 570c52b4cc88d7d0864511b9a4cb6318a07a6dbb (diff) | |
download | chat-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
-rw-r--r-- | store/local_cache_supplier_reactions.go | 2 | ||||
-rw-r--r-- | store/local_cache_supplier_schemes.go | 1 | ||||
-rw-r--r-- | store/redis_supplier_roles.go | 22 |
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 { |