mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 00:20:25 +08:00 
			
		
		
		
	Package registry changes (#19305)
* removed debug logs * fixed SELECT * removed unneeded error type * use common SearchVersions method * remove empty container upload versions * return err
This commit is contained in:
		@@ -10,6 +10,7 @@ import (
 | 
			
		||||
 | 
			
		||||
	packages_model "code.gitea.io/gitea/models/packages"
 | 
			
		||||
	container_model "code.gitea.io/gitea/models/packages/container"
 | 
			
		||||
	"code.gitea.io/gitea/modules/util"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// Cleanup removes expired container data
 | 
			
		||||
@@ -43,10 +44,7 @@ func cleanupExpiredUploadedBlobs(ctx context.Context, olderThan time.Duration) e
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	versions := make(map[int64]struct{})
 | 
			
		||||
	for _, pf := range pfs {
 | 
			
		||||
		versions[pf.VersionID] = struct{}{}
 | 
			
		||||
 | 
			
		||||
		if err := packages_model.DeleteAllProperties(ctx, packages_model.PropertyTypeFile, pf.ID); err != nil {
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
@@ -55,19 +53,26 @@ func cleanupExpiredUploadedBlobs(ctx context.Context, olderThan time.Duration) e
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	for versionID := range versions {
 | 
			
		||||
		has, err := packages_model.HasVersionFileReferences(ctx, versionID)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
	pvs, _, err := packages_model.SearchVersions(ctx, &packages_model.PackageSearchOptions{
 | 
			
		||||
		Type: packages_model.TypeContainer,
 | 
			
		||||
		Version: packages_model.SearchValue{
 | 
			
		||||
			ExactMatch: true,
 | 
			
		||||
			Value:      container_model.UploadVersion,
 | 
			
		||||
		},
 | 
			
		||||
		IsInternal: true,
 | 
			
		||||
		HasFiles:   util.OptionalBoolFalse,
 | 
			
		||||
	})
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	for _, pv := range pvs {
 | 
			
		||||
		if err := packages_model.DeleteAllProperties(ctx, packages_model.PropertyTypeVersion, pv.ID); err != nil {
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
		if !has {
 | 
			
		||||
			if err := packages_model.DeleteAllProperties(ctx, packages_model.PropertyTypeVersion, versionID); err != nil {
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			if err := packages_model.DeleteVersionByID(ctx, versionID); err != nil {
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
		if err := packages_model.DeleteVersionByID(ctx, pv.ID); err != nil {
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -336,7 +336,7 @@ func DeletePackageFile(ctx context.Context, pf *packages_model.PackageFile) erro
 | 
			
		||||
	return packages_model.DeleteFileByID(ctx, pf.ID)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Cleanup removes old unreferenced package blobs
 | 
			
		||||
// Cleanup removes expired package data
 | 
			
		||||
func Cleanup(unused context.Context, olderThan time.Duration) error {
 | 
			
		||||
	ctx, committer, err := db.TxContext()
 | 
			
		||||
	if err != nil {
 | 
			
		||||
@@ -345,24 +345,20 @@ func Cleanup(unused context.Context, olderThan time.Duration) error {
 | 
			
		||||
	defer committer.Close()
 | 
			
		||||
 | 
			
		||||
	if err := container_service.Cleanup(ctx, olderThan); err != nil {
 | 
			
		||||
		log.Error("hier")
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if err := packages_model.DeletePackagesIfUnreferenced(ctx); err != nil {
 | 
			
		||||
		log.Error("hier2")
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	pbs, err := packages_model.FindExpiredUnreferencedBlobs(ctx, olderThan)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		log.Error("hier3")
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	for _, pb := range pbs {
 | 
			
		||||
		if err := packages_model.DeleteBlobByID(ctx, pb.ID); err != nil {
 | 
			
		||||
			log.Error("hier4")
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
@@ -403,10 +399,9 @@ func GetFileStreamByPackageVersionAndFileID(ctx context.Context, owner *user_mod
 | 
			
		||||
 | 
			
		||||
	pv, err := packages_model.GetVersionByID(ctx, versionID)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		if err == packages_model.ErrPackageVersionNotExist {
 | 
			
		||||
			return nil, nil, packages_model.ErrPackageNotExist
 | 
			
		||||
		if err != packages_model.ErrPackageNotExist {
 | 
			
		||||
			log.Error("Error getting package version: %v", err)
 | 
			
		||||
		}
 | 
			
		||||
		log.Error("Error getting package version: %v", err)
 | 
			
		||||
		return nil, nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user