Skip to content

Commit 41a8e55

Browse files
committed
graph: fix double memory usage in with memory backend
1 parent 7422e0d commit 41a8e55

File tree

2 files changed

+15
-22
lines changed

2 files changed

+15
-22
lines changed

analyzer/storage.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,8 @@ func newGraphBackendFromConfig(etcdClient *etcd.Client) (graph.Backend, error) {
6363
cfg := NewESConfig(backend)
6464
return graph.NewElasticSearchBackendFromConfig(cfg, etcdClient)
6565
case "memory":
66-
return graph.NewMemoryBackend()
66+
// cached memory will be used
67+
return nil, nil
6768
case "orientdb":
6869
addr := config.GetString(configPath + ".addr")
6970
database := config.GetString(configPath + ".database")

graffiti/graph/cachedbackend.go

Lines changed: 13 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ func (c *CachedBackend) NodeAdded(n *Node) error {
5353
return err
5454
}
5555

56-
if mode != CacheOnlyMode {
56+
if mode != CacheOnlyMode && c.persistent != nil {
5757
if err := c.persistent.NodeAdded(n); err != nil {
5858
return err
5959
}
@@ -70,7 +70,7 @@ func (c *CachedBackend) NodeDeleted(n *Node) error {
7070
return err
7171
}
7272

73-
if mode != CacheOnlyMode {
73+
if mode != CacheOnlyMode && c.persistent != nil {
7474
if err := c.persistent.NodeDeleted(n); err != nil {
7575
return err
7676
}
@@ -83,7 +83,7 @@ func (c *CachedBackend) NodeDeleted(n *Node) error {
8383
func (c *CachedBackend) GetNode(i Identifier, t Context) []*Node {
8484
mode := c.cacheMode.Load()
8585

86-
if t.TimeSlice == nil || mode == CacheOnlyMode {
86+
if t.TimeSlice == nil || mode == CacheOnlyMode || c.persistent == nil {
8787
return c.memory.GetNode(i, t)
8888
}
8989

@@ -94,15 +94,11 @@ func (c *CachedBackend) GetNode(i Identifier, t Context) []*Node {
9494
func (c *CachedBackend) GetNodeEdges(n *Node, t Context, m ElementMatcher) (edges []*Edge) {
9595
mode := c.cacheMode.Load()
9696

97-
if t.TimeSlice == nil || mode == CacheOnlyMode {
97+
if t.TimeSlice == nil || mode == CacheOnlyMode || c.persistent == nil {
9898
return c.memory.GetNodeEdges(n, t, m)
9999
}
100100

101-
if mode != CacheOnlyMode {
102-
return c.persistent.GetNodeEdges(n, t, m)
103-
}
104-
105-
return edges
101+
return c.persistent.GetNodeEdges(n, t, m)
106102
}
107103

108104
// EdgeAdded add an edge in the cache
@@ -113,7 +109,7 @@ func (c *CachedBackend) EdgeAdded(e *Edge) error {
113109
return err
114110
}
115111

116-
if mode != CacheOnlyMode {
112+
if mode != CacheOnlyMode && c.persistent != nil {
117113
if err := c.persistent.EdgeAdded(e); err != nil {
118114
return err
119115
}
@@ -130,7 +126,7 @@ func (c *CachedBackend) EdgeDeleted(e *Edge) error {
130126
return err
131127
}
132128

133-
if mode != CacheOnlyMode {
129+
if mode != CacheOnlyMode && c.persistent != nil {
134130
if err := c.persistent.EdgeDeleted(e); err != nil {
135131
return err
136132
}
@@ -143,22 +139,18 @@ func (c *CachedBackend) EdgeDeleted(e *Edge) error {
143139
func (c *CachedBackend) GetEdge(i Identifier, t Context) []*Edge {
144140
mode := c.cacheMode.Load()
145141

146-
if t.TimeSlice == nil || mode == CacheOnlyMode {
142+
if t.TimeSlice == nil || mode == CacheOnlyMode || c.persistent == nil {
147143
return c.memory.GetEdge(i, t)
148144
}
149145

150-
if mode != CacheOnlyMode {
151-
return c.persistent.GetEdge(i, t)
152-
}
153-
154-
return nil
146+
return c.persistent.GetEdge(i, t)
155147
}
156148

157149
// GetEdgeNodes retrieve a list of nodes from an edge within a time slice, matching metadata
158150
func (c *CachedBackend) GetEdgeNodes(e *Edge, t Context, parentMetadata, childMetadata ElementMatcher) ([]*Node, []*Node) {
159151
mode := c.cacheMode.Load()
160152

161-
if t.TimeSlice == nil || mode == CacheOnlyMode {
153+
if t.TimeSlice == nil || mode == CacheOnlyMode || c.persistent == nil {
162154
return c.memory.GetEdgeNodes(e, t, parentMetadata, childMetadata)
163155
}
164156

@@ -173,7 +165,7 @@ func (c *CachedBackend) MetadataUpdated(i interface{}) error {
173165
return err
174166
}
175167

176-
if mode != CacheOnlyMode {
168+
if mode != CacheOnlyMode && c.persistent != nil {
177169
if err := c.persistent.MetadataUpdated(i); err != nil {
178170
return err
179171
}
@@ -185,7 +177,7 @@ func (c *CachedBackend) MetadataUpdated(i interface{}) error {
185177
func (c *CachedBackend) GetNodes(t Context, m ElementMatcher) []*Node {
186178
mode := c.cacheMode.Load()
187179

188-
if t.TimeSlice == nil || mode == CacheOnlyMode {
180+
if t.TimeSlice == nil || mode == CacheOnlyMode || c.persistent == nil {
189181
return c.memory.GetNodes(t, m)
190182
}
191183

@@ -196,7 +188,7 @@ func (c *CachedBackend) GetNodes(t Context, m ElementMatcher) []*Node {
196188
func (c *CachedBackend) GetEdges(t Context, m ElementMatcher) []*Edge {
197189
mode := c.cacheMode.Load()
198190

199-
if t.TimeSlice == nil || mode == CacheOnlyMode {
191+
if t.TimeSlice == nil || mode == CacheOnlyMode || c.persistent == nil {
200192
return c.memory.GetEdges(t, m)
201193
}
202194
return c.persistent.GetEdges(t, m)

0 commit comments

Comments
 (0)