Skip to content
This repository was archived by the owner on Aug 23, 2023. It is now read-only.

Commit 58e3ba8

Browse files
authored
Merge pull request #1078 from grafana/fix-ccache-mem-leak
fix ccache memory leak
2 parents a3c525d + 4b21725 commit 58e3ba8

File tree

1 file changed

+6
-12
lines changed

1 file changed

+6
-12
lines changed

mdata/cache/ccache_metric.go

+6-12
Original file line numberDiff line numberDiff line change
@@ -84,9 +84,6 @@ func (mc *CCacheMetric) AddRange(prev uint32, itergens []chunk.IterGen) {
8484
mc.Lock()
8585
defer mc.Unlock()
8686

87-
// pre-allocate 1 slice, cheaper than allocating one by one
88-
chunks := make([]CCacheChunk, 0, len(itergens))
89-
9087
// handle the first one
9188
itergen := itergens[0]
9289
ts := itergen.Ts
@@ -122,13 +119,12 @@ func (mc *CCacheMetric) AddRange(prev uint32, itergens []chunk.IterGen) {
122119
prev = 0
123120
}
124121

125-
chunks = append(chunks, CCacheChunk{
122+
mc.chunks[ts] = &CCacheChunk{
126123
Ts: ts,
127124
Prev: prev,
128125
Next: itergens[1].Ts,
129126
Itgen: itergen,
130-
})
131-
mc.chunks[ts] = &chunks[len(chunks)-1]
127+
}
132128
mc.keys = append(mc.keys, ts)
133129
} else {
134130
mc.chunks[ts].Next = itergens[1].Ts
@@ -146,13 +142,12 @@ func (mc *CCacheMetric) AddRange(prev uint32, itergens []chunk.IterGen) {
146142
}
147143

148144
// add chunk, potentially overwriting pre-existing chunk (unlikely)
149-
chunks = append(chunks, CCacheChunk{
145+
mc.chunks[ts] = &CCacheChunk{
150146
Ts: ts,
151147
Prev: prev,
152148
Next: itergens[i+1].Ts,
153149
Itgen: itergen,
154-
})
155-
mc.chunks[ts] = &chunks[len(chunks)-1]
150+
}
156151

157152
prev = ts
158153
}
@@ -177,13 +172,12 @@ func (mc *CCacheMetric) AddRange(prev uint32, itergens []chunk.IterGen) {
177172
}
178173
}
179174

180-
chunks = append(chunks, CCacheChunk{
175+
mc.chunks[ts] = &CCacheChunk{
181176
Ts: ts,
182177
Prev: prev,
183178
Next: next,
184179
Itgen: itergen,
185-
})
186-
mc.chunks[ts] = &chunks[len(chunks)-1]
180+
}
187181
mc.keys = append(mc.keys, ts)
188182
} else {
189183
mc.chunks[ts].Prev = prev

0 commit comments

Comments
 (0)