"git@developer.sourcefind.cn:renzhc/diffusers_dcu.git" did not exist on "ca9ed5e8d1f63cde023f0b66e3323c172cb813d8"
Commit 5a5ca8e7 authored by Bruce MacDonald's avatar Bruce MacDonald
Browse files

remove file on digest mismatch

parent 4cb42ca5
...@@ -510,7 +510,7 @@ func CopyModel(src, dest string) error { ...@@ -510,7 +510,7 @@ func CopyModel(src, dest string) error {
return err return err
} }
err = ioutil.WriteFile(destPath, input, 0644) err = ioutil.WriteFile(destPath, input, 0o644)
if err != nil { if err != nil {
fmt.Println("Error reading file:", err) fmt.Println("Error reading file:", err)
return err return err
...@@ -700,6 +700,17 @@ func PullModel(name string, regOpts *RegistryOptions, fn func(api.ProgressRespon ...@@ -700,6 +700,17 @@ func PullModel(name string, regOpts *RegistryOptions, fn func(api.ProgressRespon
fn(api.ProgressResponse{Status: "verifying sha256 digest"}) fn(api.ProgressResponse{Status: "verifying sha256 digest"})
for _, layer := range layers { for _, layer := range layers {
if err := verifyBlob(layer.Digest); err != nil { if err := verifyBlob(layer.Digest); err != nil {
if errors.Is(err, errDigestMismatch) {
// something went wrong, delete the blob
fp, err := GetBlobsPath(layer.Digest)
if err != nil {
return err
}
if err := os.Remove(fp); err != nil {
// log this, but return the original error
log.Printf("couldn't remove file with digest mismatch '%s': %v", fp, err)
}
}
return err return err
} }
} }
...@@ -1059,6 +1070,8 @@ func makeRequest(method, url string, headers map[string]string, body io.Reader, ...@@ -1059,6 +1070,8 @@ func makeRequest(method, url string, headers map[string]string, body io.Reader,
return resp, nil return resp, nil
} }
var errDigestMismatch = fmt.Errorf("digest mismatch, file must be downloaded again")
func verifyBlob(digest string) error { func verifyBlob(digest string) error {
fp, err := GetBlobsPath(digest) fp, err := GetBlobsPath(digest)
if err != nil { if err != nil {
...@@ -1073,7 +1086,7 @@ func verifyBlob(digest string) error { ...@@ -1073,7 +1086,7 @@ func verifyBlob(digest string) error {
fileDigest, _ := GetSHA256Digest(f) fileDigest, _ := GetSHA256Digest(f)
if digest != fileDigest { if digest != fileDigest {
return fmt.Errorf("digest mismatch: want %s, got %s", digest, fileDigest) return fmt.Errorf("%w: want %s, got %s", errDigestMismatch, digest, fileDigest)
} }
return nil return nil
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment