From 1788baf2cd430dade6d05ea4dc625833276762b2 Mon Sep 17 00:00:00 2001 From: "diana.strebkova@t-systems.com" Date: Fri, 7 Mar 2025 11:32:16 +0100 Subject: [PATCH] Added fix when minio serve_direct is true --- models/packages/package_file.go | 2 +- modules/setting/packages.go | 1 + services/packages/maven/cleanup.go | 9 +++++++-- services/packages/packages.go | 8 +++++--- 4 files changed, 14 insertions(+), 6 deletions(-) diff --git a/models/packages/package_file.go b/models/packages/package_file.go index ecda71385c..ca7bd4023e 100644 --- a/models/packages/package_file.go +++ b/models/packages/package_file.go @@ -279,7 +279,7 @@ func extractBuildNumberFromFileName(filename string) (int, error) { buildNumber, err := strconv.Atoi(buildNumberStr) if err != nil { - return 0, fmt.Errorf("failed to convert build number to integer: '%s'", buildNumberStr) + return 0, fmt.Errorf("failed to convert maven package build number to integer: '%s'", buildNumberStr) } return buildNumber, nil diff --git a/modules/setting/packages.go b/modules/setting/packages.go index df83a3f07a..69de064d42 100644 --- a/modules/setting/packages.go +++ b/modules/setting/packages.go @@ -103,6 +103,7 @@ func loadPackagesFrom(rootCfg ConfigProvider) (err error) { Packages.LimitSizeRubyGems = mustBytes(sec, "LIMIT_SIZE_RUBYGEMS") Packages.LimitSizeSwift = mustBytes(sec, "LIMIT_SIZE_SWIFT") Packages.LimitSizeVagrant = mustBytes(sec, "LIMIT_SIZE_VAGRANT") + Packages.DefaultRPMSignEnabled = sec.Key("DEFAULT_RPM_SIGN_ENABLED").MustBool(false) Packages.RetainMavenSnapshotBuilds = sec.Key("RETAIN_MAVEN_SNAPSHOT_BUILDS").MustInt(Packages.RetainMavenSnapshotBuilds) return nil } diff --git a/services/packages/maven/cleanup.go b/services/packages/maven/cleanup.go index 658dd73cab..d4f6138977 100644 --- a/services/packages/maven/cleanup.go +++ b/services/packages/maven/cleanup.go @@ -51,7 +51,7 @@ func CleanupSnapshotVersions(ctx context.Context) error { } func isSnapshotVersion(version string) bool { - return strings.Contains(version, "-SNAPSHOT") + return strings.HasSuffix(version, "-SNAPSHOT") } func cleanSnapshotFiles(ctx context.Context, versionID int64, retainBuilds int) error { @@ -92,7 +92,12 @@ func cleanSnapshotFiles(ctx context.Context, versionID int64, retainBuilds int) } func extractMaxBuildNumberFromMetadata(ctx context.Context, metadataFile *packages.PackageFile) (int, error) { - content, _, _, err := packages_service.GetPackageFileStream(ctx, metadataFile) + pb, err := packages.GetBlobByID(ctx, metadataFile.BlobID) + if err != nil { + return 0, fmt.Errorf("failed to get package blob: %w", err) + } + + content, _, _, err := packages_service.GetPackageBlobStream(ctx, metadataFile, pb, nil, true) if err != nil { return 0, fmt.Errorf("failed to get package file stream: %w", err) } diff --git a/services/packages/packages.go b/services/packages/packages.go index bd1d460fd3..7f50562242 100644 --- a/services/packages/packages.go +++ b/services/packages/packages.go @@ -600,8 +600,8 @@ func GetPackageFileStream(ctx context.Context, pf *packages_model.PackageFile) ( } // GetPackageBlobStream returns the content of the specific package blob -// If the storage supports direct serving and it's enabled, only the direct serving url is returned. -func GetPackageBlobStream(ctx context.Context, pf *packages_model.PackageFile, pb *packages_model.PackageBlob, serveDirectReqParams url.Values) (io.ReadSeekCloser, *url.URL, *packages_model.PackageFile, error) { +// If the storage supports direct serving and it's enabled, only the direct serving url is returned; otherwise, forceInternalServe should be set to true. +func GetPackageBlobStream(ctx context.Context, pf *packages_model.PackageFile, pb *packages_model.PackageBlob, serveDirectReqParams url.Values, forceInternalServe ...bool) (io.ReadSeekCloser, *url.URL, *packages_model.PackageFile, error) { key := packages_module.BlobHash256Key(pb.HashSHA256) cs := packages_module.NewContentStore() @@ -610,7 +610,9 @@ func GetPackageBlobStream(ctx context.Context, pf *packages_model.PackageFile, p var u *url.URL var err error - if cs.ShouldServeDirect() { + internalServe := len(forceInternalServe) > 0 && forceInternalServe[0] + + if !internalServe && cs.ShouldServeDirect() { u, err = cs.GetServeDirectURL(key, pf.Name, serveDirectReqParams) if err != nil && !errors.Is(err, storage.ErrURLNotSupported) { log.Error("Error getting serve direct url: %v", err)