修复潜在BUG
This commit is contained in:
@@ -106,7 +106,6 @@ func (is *ImageStreamer) getImageDescriptor(ref name.Reference, options []remote
|
|||||||
if cachedItem := globalCache.Get(cacheKey); cachedItem != nil {
|
if cachedItem := globalCache.Get(cacheKey); cachedItem != nil {
|
||||||
desc := &remote.Descriptor{
|
desc := &remote.Descriptor{
|
||||||
Manifest: cachedItem.Data,
|
Manifest: cachedItem.Data,
|
||||||
MediaType: types.MediaType(cachedItem.ContentType),
|
|
||||||
}
|
}
|
||||||
log.Printf("使用缓存的manifest: %s", ref.String())
|
log.Printf("使用缓存的manifest: %s", ref.String())
|
||||||
return desc, nil
|
return desc, nil
|
||||||
@@ -278,6 +277,7 @@ func (is *ImageStreamer) streamDockerFormat(ctx context.Context, tarWriter *tar.
|
|||||||
default:
|
default:
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if err := func() error { // ✅ 匿名函数确保资源立即释放
|
||||||
digest, err := layer.Digest()
|
digest, err := layer.Digest()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
@@ -299,7 +299,7 @@ func (is *ImageStreamer) streamDockerFormat(ctx context.Context, tarWriter *tar.
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
defer layerReader.Close()
|
defer layerReader.Close() // ✅ 函数结束立即释放
|
||||||
|
|
||||||
size, err := layer.Size()
|
size, err := layer.Size()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -320,6 +320,11 @@ func (is *ImageStreamer) streamDockerFormat(ctx context.Context, tarWriter *tar.
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}(); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
log.Printf("已处理层 %d/%d", i+1, len(layers))
|
log.Printf("已处理层 %d/%d", i+1, len(layers))
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -394,7 +399,7 @@ func handleDirectImageDownload(c *gin.Context) {
|
|||||||
|
|
||||||
imageRef := strings.ReplaceAll(imageParam, "_", "/")
|
imageRef := strings.ReplaceAll(imageParam, "_", "/")
|
||||||
platform := c.Query("platform")
|
platform := c.Query("platform")
|
||||||
tag := c.DefaultQuery("tag")
|
tag := c.DefaultQuery("tag", "")
|
||||||
|
|
||||||
if tag != "" && !strings.Contains(imageRef, ":") && !strings.Contains(imageRef, "@") {
|
if tag != "" && !strings.Contains(imageRef, ":") && !strings.Contains(imageRef, "@") {
|
||||||
imageRef = imageRef + ":" + tag
|
imageRef = imageRef + ":" + tag
|
||||||
|
|||||||
Reference in New Issue
Block a user