diff --git a/pkg/tarfs/tarfs.go b/pkg/tarfs/tarfs.go index 90382c1f68..14112277a9 100755 --- a/pkg/tarfs/tarfs.go +++ b/pkg/tarfs/tarfs.go @@ -384,16 +384,19 @@ func (t *Manager) blobProcess(ctx context.Context, snapshotID, ref string, return epilog(err, "get blob stream for layer") } - if retry { - // Download and convert layer content in synchronous mode when retry for error recovering - err = process(rc, remote) - } else { - // Download and convert layer content in background. - // Will retry when the content is actually needed if the background process failed. - go func() { - _ = process(rc, remote) - }() - } + err = process(rc, remote) + /* + if retry { + // Download and convert layer content in synchronous mode when retry for error recovering + err = process(rc, remote) + } else { + // Download and convert layer content in background. + // Will retry when the content is actually needed if the background process failed. + go func() { + _ = process(rc, remote) + }() + } + */ return err } @@ -999,7 +1002,7 @@ func (t *Manager) CheckTarfsHintAnnotation(ctx context.Context, ref string, mani if err != nil { return false, err } - remote := remote.New(keyChain, t.insecure) + remoteFactory := remote.New(keyChain, t.insecure) handle := func() (bool, error) { if tarfsHint, ok := t.tarfsHintCache.Get(ref); ok { @@ -1007,7 +1010,7 @@ func (t *Manager) CheckTarfsHintAnnotation(ctx context.Context, ref string, mani } if _, err, _ := t.sg.Do(ref, func() (interface{}, error) { - err := t.fetchImageInfo(ctx, remote, ref, manifestDigest) + err := t.fetchImageInfo(ctx, remoteFactory, ref, manifestDigest) return nil, err }); err != nil { return false, err @@ -1021,7 +1024,8 @@ func (t *Manager) CheckTarfsHintAnnotation(ctx context.Context, ref string, mani } tarfsHint, err := handle() - if err != nil && remote.RetryWithPlainHTTP(ref, err) { + if err != nil && remoteFactory.RetryWithPlainHTTP(ref, err) { + remoteFactory = remote.New(keyChain, t.insecure) tarfsHint, err = handle() } return tarfsHint, err diff --git a/pkg/tarfs/tarfs_test.go b/pkg/tarfs/tarfs_test.go index 224ed92519..0fb0131a83 100644 --- a/pkg/tarfs/tarfs_test.go +++ b/pkg/tarfs/tarfs_test.go @@ -26,7 +26,7 @@ const ( // TODO: add unit test for MergeLayers, ExportBlockData, MountErofs, RemountErofs, UmountTarErofs, DetachLayer, RecoverSnapshoInfo, RecoverRafsInstance func TestPrepareLayer(t *testing.T) { - manager := NewManager(true, true, "/tmp/tarfs", "/usr/bin/nydus-image", 4) + manager := NewManager(true, true, t.TempDir(), "/usr/bin/nydus-image", 4) manifestDigest, err := digest.Parse(BusyboxManifestDigest) assert.Assert(t, err) layerDigest, err := digest.Parse(BusyboxLayerDigest)