MCPcopy Create free account
hub / github.com/pydio/cells / cacheEvent

Method cacheEvent

common/nodes/sync/handler-sync-cache.go:107–151  ·  view source on GitHub ↗
(ctx context.Context, event *tree.NodeChangeEvent)

Source from the content-addressed store, hash-verified

105}
106
107func (s *CacheHandler) cacheEvent(ctx context.Context, event *tree.NodeChangeEvent) {
108 log.Logger(ctx).Debug("Event received", zap.Any("e", event))
109 var add, remove *tree.Node
110 switch event.Type {
111 case tree.NodeChangeEvent_CREATE:
112 add = event.Target
113 case tree.NodeChangeEvent_DELETE:
114 remove = event.Source
115 case tree.NodeChangeEvent_UPDATE_PATH:
116 add = event.Target
117 remove = event.Source
118 }
119 if add != nil {
120 log.Logger(ctx).Debug("Clearing cache key " + add.GetPath())
121 _ = s.getCtxCache(ctx).Delete(cacheNodePrefix + add.GetPath())
122 dir := path.Dir(add.GetPath())
123 if diff, ok := s.cacheDiff(ctx, dir); ok {
124 if _, o := diff.Adds[add.GetPath()]; o {
125 log.Logger(ctx).Debug("Clearing Add key from diff " + add.GetPath())
126 delete(diff.Adds, add.GetPath())
127 if len(diff.Adds)+len(diff.Deletes) == 0 {
128 _ = s.getCtxCache(ctx).Delete(cacheDiffPrefix + dir)
129 } else {
130 diffData, _ := json.Marshal(diff)
131 _ = s.getCtxCache(ctx).Set(cacheDiffPrefix+dir, diffData)
132 }
133 }
134 }
135 }
136 if remove != nil {
137 dir := path.Dir(remove.GetPath())
138 if diff, ok := s.cacheDiff(ctx, dir); ok {
139 if _, o := diff.Deletes[remove.GetPath()]; o {
140 log.Logger(ctx).Debug("Clearing Delete key from diff " + remove.GetPath())
141 delete(diff.Deletes, remove.GetPath())
142 if len(diff.Adds)+len(diff.Deletes) == 0 {
143 _ = s.getCtxCache(ctx).Delete(cacheDiffPrefix + dir)
144 } else {
145 diffData, _ := json.Marshal(diff)
146 _ = s.getCtxCache(ctx).Set(cacheDiffPrefix+dir, diffData)
147 }
148 }
149 }
150 }
151}
152
153func (s *CacheHandler) cacheAdd(ctx context.Context, node *tree.Node) {
154 d, _ := json.Marshal(node)

Callers 1

getCtxCacheMethod · 0.95

Calls 8

GetPathMethod · 0.95
getCtxCacheMethod · 0.95
cacheDiffMethod · 0.95
LoggerFunction · 0.92
DebugMethod · 0.65
DeleteMethod · 0.65
MarshalMethod · 0.65
SetMethod · 0.65

Tested by

no test coverage detected