Fix maybeGC trigger condition
License: MIT Signed-off-by: rht <rhtbot@gmail.com>
rht committed
Nov 27, 2015 at 11:31 UTC
7e46762342777a49eae6a8341fa85854fd9b10c2
1 file changed
+13
-8
core/corerepo/gc.go
+13
-8
@@ -174,15 +174,13 @@ func (gc *GC) maybeGC(ctx context.Context, offset uint64) error {
174
return err
175
}
176
177
- if storage+offset > gc.StorageMax {
178
- err := ErrMaxStorageExceeded
179
- log.Error(err)
180
- return err
181
- }
182
-
177
if storage+offset > gc.StorageGC {
178
+ if storage+offset > gc.StorageMax {
179
+ log.Warningf("pre-GC: %s", ErrMaxStorageExceeded)
180
+ }
181
+
182
// Do GC here
185
- log.Info("Starting repo GC...")
183
+ log.Info("Watermark exceeded. Starting repo GC...")
184
defer log.EventBegin(ctx, "repoGC").Done()
185
// 1 minute is sufficient for ~1GB unlink() blocks each of 100kb in SSD
186
_ctx, cancel := context.WithTimeout(ctx, time.Duration(gc.SlackGB)*time.Minute)
@@ -196,7 +194,14 @@ func (gc *GC) maybeGC(ctx context.Context, offset uint64) error {
194
return err
195
}
196
log.Infof("Repo GC done. Released %s\n", humanize.Bytes(uint64(storage-newStorage)))
199
- return nil
197
+ if newStorage > gc.StorageGC {
198
+ log.Warningf("post-GC: Watermark still exceeded")
199
+ if newStorage > gc.StorageMax {
200
+ err := ErrMaxStorageExceeded
201
+ log.Error(err)
202
+ return err
203
+ }
204
+ }
205
}
206
return nil
207
}