Skip to content

Commit 2b92adf

Browse files
authored
refactor: increase the retry timeout and wrap the error for retry (#221)
Signed-off-by: chlins <[email protected]>
1 parent 4da496e commit 2b92adf

File tree

6 files changed

+25
-15
lines changed

6 files changed

+25
-15
lines changed

internal/pb/pb.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import (
2424
"time"
2525

2626
humanize "github.com/dustin/go-humanize"
27+
"github.com/sirupsen/logrus"
2728
mpbv8 "github.com/vbauerster/mpb/v8"
2829
"github.com/vbauerster/mpb/v8/decor"
2930
)
@@ -154,7 +155,7 @@ func (p *ProgressBar) Abort(name string, err error) {
154155
p.mu.RUnlock()
155156

156157
if ok {
157-
// TODO: Log error message.
158+
logrus.Errorf("abort the progress bar[%s] as error occurred: %v", name, err)
158159
bar.Abort(true)
159160
}
160161
}

pkg/backend/processor/base.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -145,13 +145,14 @@ func (b *base) Process(ctx context.Context, builder build.Builder, workDir strin
145145
}),
146146
))
147147
if err != nil {
148-
logrus.Errorf("processor: failed to build layer for %s file %s: %v", b.name, path, err)
148+
err = fmt.Errorf("processor: failed to build layer for %s file %s: %w", b.name, path, err)
149+
logrus.Error(err)
149150
cancel()
150151
return err
151152
}
152153

153-
mu.Lock()
154154
logrus.Debugf("processor: successfully built %s layer for file %s [digest: %s, size: %d]", b.name, path, desc.Digest, desc.Size)
155+
mu.Lock()
155156
descriptors = append(descriptors, desc)
156157
mu.Unlock()
157158

pkg/backend/processor/options.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,8 @@ func WithProgressTracker(tracker *pb.ProgressBar) ProcessOption {
4646
}
4747

4848
var defaultRetryOpts = []retry.Option{
49-
retry.Attempts(3),
49+
retry.Attempts(4),
5050
retry.DelayType(retry.BackOffDelay),
51-
retry.Delay(5 * time.Second),
52-
retry.MaxDelay(10 * time.Second),
51+
retry.Delay(10 * time.Second),
52+
retry.MaxDelay(20 * time.Second),
5353
}

pkg/backend/pull.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -119,10 +119,10 @@ func (b *backend) Pull(ctx context.Context, target string, cfg *config.Pull) err
119119
// call the after hook.
120120
cfg.Hooks.AfterPullLayer(layer, err)
121121
if err != nil {
122-
logrus.Debugf("pull: failed to process layer %s: %v", layer.Digest, err)
123-
} else {
124-
logrus.Debugf("pull: successfully processed layer %s", layer.Digest)
122+
err = fmt.Errorf("pull: failed to process layer %s: %w", layer.Digest, err)
123+
logrus.Error(err)
125124
}
125+
126126
return err
127127
}, append(defaultRetryOpts, retry.Context(ctx))...)
128128
})

pkg/backend/pull_by_d7y.go

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -165,11 +165,19 @@ func buildBlobURL(ref Referencer, plainHTTP bool, digest string) string {
165165

166166
// processLayer handles downloading and extracting a single layer.
167167
func processLayer(ctx context.Context, pb *internalpb.ProgressBar, client dfdaemon.DfdaemonDownloadClient, ref Referencer, manifest ocispec.Manifest, desc ocispec.Descriptor, authToken string, cfg *config.Pull) error {
168-
cfg.Hooks.BeforePullLayer(desc, manifest) // Call before hook
169168
err := retry.Do(func() error {
170-
return downloadAndExtractLayer(ctx, pb, client, ref, desc, authToken, cfg)
169+
logrus.Debugf("pull: processing layer %s", desc.Digest)
170+
cfg.Hooks.BeforePullLayer(desc, manifest) // Call before hook
171+
err := downloadAndExtractLayer(ctx, pb, client, ref, desc, authToken, cfg)
172+
cfg.Hooks.AfterPullLayer(desc, err) // Call after hook
173+
if err != nil {
174+
err = fmt.Errorf("pull: failed to download and extract layer %s: %w", desc.Digest, err)
175+
logrus.Error(err)
176+
}
177+
178+
return err
171179
}, append(defaultRetryOpts, retry.Context(ctx))...)
172-
cfg.Hooks.AfterPullLayer(desc, err) // Call after hook
180+
173181
return err
174182
}
175183

pkg/backend/retry.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@ import (
2323
)
2424

2525
var defaultRetryOpts = []retry.Option{
26-
retry.Attempts(3),
26+
retry.Attempts(4),
2727
retry.DelayType(retry.BackOffDelay),
28-
retry.Delay(5 * time.Second),
29-
retry.MaxDelay(10 * time.Second),
28+
retry.Delay(10 * time.Second),
29+
retry.MaxDelay(20 * time.Second),
3030
}

0 commit comments

Comments
 (0)