Skip to content

Commit 00f3f3a

Browse files
HEAD check for container blobs deletes blob if content store cannot find
blob nil on repeat logging for blob insert Upload blob recovery during push console cleanup
1 parent 3c07ed0 commit 00f3f3a

File tree

3 files changed

+28
-3
lines changed

3 files changed

+28
-3
lines changed

routers/api/packages/container/blob.go

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ import (
2323
// The uploaded blob gets stored in a special upload version to link them to the package/image
2424
func saveAsPackageBlob(hsr packages_module.HashedSizeReader, pi *packages_service.PackageInfo) (*packages_model.PackageBlob, error) {
2525
pb := packages_service.NewPackageBlob(hsr)
26-
26+
fmt.Println("saveAsPackageBlob: ", pb.HashSHA256)
2727
exists := false
2828

2929
contentStore := packages_module.NewContentStore()
@@ -45,7 +45,7 @@ func saveAsPackageBlob(hsr packages_module.HashedSizeReader, pi *packages_servic
4545
return err
4646
}
4747
}
48-
48+
fmt.Println("CREATED!!!")
4949
if created {
5050
if _, err := packages_model.InsertProperty(ctx, packages_model.PropertyTypePackage, p.ID, container_module.PropertyRepository, strings.ToLower(pi.Owner.LowerName+"/"+pi.Name)); err != nil {
5151
log.Error("Error setting package property: %v", err)
@@ -73,6 +73,16 @@ func saveAsPackageBlob(hsr packages_module.HashedSizeReader, pi *packages_servic
7373
log.Error("Error inserting package blob: %v", err)
7474
return err
7575
}
76+
if exists {
77+
_, err := contentStore.Get(packages_module.BlobHash256Key(pb.HashSHA256))
78+
if err != nil {
79+
log.Info("BLOB MODEL and ERR in ContentStore. Resaving Blob to content store ", err.Error())
80+
if err := contentStore.Save(packages_module.BlobHash256Key(pb.HashSHA256), hsr, hsr.Size()); err != nil {
81+
log.Error("Error saving package blob in content store during FIXITUP: %v", err)
82+
return err
83+
}
84+
}
85+
}
7686
if !exists {
7787
if err := contentStore.Save(packages_module.BlobHash256Key(pb.HashSHA256), hsr, hsr.Size()); err != nil {
7888
log.Error("Error saving package blob in content store: %v", err)

routers/api/packages/container/container.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -379,7 +379,23 @@ func HeadBlob(ctx *context.Context) {
379379
}
380380
return
381381
}
382+
//check if actually in ContentStore
383+
//if not, delete Blob and return 404
384+
//content_store.Get()
385+
cStore := packages_module.NewContentStore()
386+
configReader, err := cStore.Get(packages_module.BlobHash256Key(blob.Blob.HashSHA256))
387+
if err != nil {
388+
log.Warn("ContentStore Get Error while HEAD for Blob: ", blob.Blob.HashSHA256, err.Error())
389+
390+
digest := ctx.Params("digest")
382391

392+
if err := deleteBlob(ctx.Package.Owner.ID, ctx.Params("image"), digest); err != nil {
393+
log.Warn("Error while deleteBlob in HEAD: ", err.Error())
394+
}
395+
apiErrorDefined(ctx, errBlobUnknown)
396+
return
397+
}
398+
defer configReader.Close()
383399
setResponseHeaders(ctx.Resp, &containerHeaders{
384400
ContentDigest: blob.Properties.GetByName(container_module.PropertyDigest),
385401
ContentLength: blob.Blob.Size,

services/packages/packages.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -224,7 +224,6 @@ func NewPackageBlob(hsr packages_module.HashedSizeReader) *packages_model.Packag
224224

225225
func addFileToPackageVersion(ctx context.Context, pv *packages_model.PackageVersion, pfci *PackageFileCreationInfo) (*packages_model.PackageFile, *packages_model.PackageBlob, bool, error) {
226226
log.Trace("Adding package file: %v, %s", pv.ID, pfci.Filename)
227-
228227
pb, exists, err := packages_model.GetOrInsertBlob(ctx, NewPackageBlob(pfci.Data))
229228
if err != nil {
230229
log.Error("Error inserting package blob: %v", err)

0 commit comments

Comments
 (0)