From a6ae8e72bffd868e096f9ae614ee2a1279e5fb6b Mon Sep 17 00:00:00 2001 From: Lars Gierth Date: Fri, 9 Dec 2016 17:26:53 +0100 Subject: [PATCH 1/2] gc: remove wonky timeout This timeout was: - unneccessary - based on a metric that doesn't make sense License: MIT Signed-off-by: Lars Gierth --- core/corerepo/gc.go | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/core/corerepo/gc.go b/core/corerepo/gc.go index d6c761d9e..7fabb9193 100644 --- a/core/corerepo/gc.go +++ b/core/corerepo/gc.go @@ -190,11 +190,8 @@ func (gc *GC) maybeGC(ctx context.Context, offset uint64) error { // Do GC here log.Info("Watermark exceeded. Starting repo GC...") defer log.EventBegin(ctx, "repoGC").Done() - // 1 minute is sufficient for ~1GB unlink() blocks each of 100kb in SSD - _ctx, cancel := context.WithTimeout(ctx, time.Duration(gc.SlackGB)*time.Minute) - defer cancel() - if err := GarbageCollect(gc.Node, _ctx); err != nil { + if err := GarbageCollect(gc.Node, ctx); err != nil { return err } newStorage, err := gc.Repo.GetStorageUsage() From 2836c646420d220518e3563e862ab6608f10633c Mon Sep 17 00:00:00 2001 From: Lars Gierth Date: Fri, 9 Dec 2016 17:28:31 +0100 Subject: [PATCH 2/2] gc: remove unneccessary full repo scan GetStorageUsage() is super expensive as it involves a full repo scan, and it's already bad enough that we have do it once. The call that's being removed here is purely for cosmetical purposes: printing the number of bytes freed by the GC run. Let's drop it. License: MIT Signed-off-by: Lars Gierth --- core/corerepo/gc.go | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/core/corerepo/gc.go b/core/corerepo/gc.go index 7fabb9193..b67d62849 100644 --- a/core/corerepo/gc.go +++ b/core/corerepo/gc.go @@ -194,19 +194,7 @@ func (gc *GC) maybeGC(ctx context.Context, offset uint64) error { if err := GarbageCollect(gc.Node, ctx); err != nil { return err } - newStorage, err := gc.Repo.GetStorageUsage() - if err != nil { - return err - } - log.Infof("Repo GC done. Released %s\n", humanize.Bytes(uint64(storage-newStorage))) - if newStorage > gc.StorageGC { - log.Warningf("post-GC: Watermark still exceeded") - if newStorage > gc.StorageMax { - err := ErrMaxStorageExceeded - log.Error(err) - return err - } - } + log.Infof("Repo GC done. See `ipfs repo stat` to see how much space got freed.\n") } return nil }