Navigation

    Inedo Community Forums

    Forums

    • Login
    • Search
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    1. Home
    2. atripp
    3. Posts
    • Profile
    • Following
    • Followers
    • Topics
    • Posts
    • Best
    • Groups

    Posts made by atripp

    • RE: Packages with Noncanonical Names errors on internalized packages

      Hi @jfullmer_7346,

      It's nothing you did.

      The underlying issue is that a bug in ProGet allowed WinSCP (ID=563) to be added to the PackageNameIds table; that should never have happened since nuget is case insensitive. We've since fixed that bug.

      However, once you have a duplicate name, weird things happen since querying for "give me the PackageID for nuget://winscp" returns two results instead of one. So now when you query "give me the VersionID for (ID=563)-v6.5.3", a new entry is created.

      This has been a very long-standing issue, but there aren't any major consequences to these "weird things" except casing in the UI and the health check now fails.

      But we're on it :)

      Thanks,
      Alana

      posted in Support
      atripp
      atripp
    • RE: Packages with Noncanonical Names errors on internalized packages

      Hi @jfullmer_7346 ,

      I haven't had a chance to look into more details, but thanks for providing the results of the query.

      FYI - the PackageNameIds and PackageVersionIds are designed as a kind of "permanent, read-only record" -- once added they are not deleted or modified. Even if all packages are deleted (i.e. FeedPackageVersions). This is why this the "duplicate name" is such a headache to deal with.

      That said, on a quick glance, we can see exactly where the error is coming from: there are duplicate versions (i.e. (ID=563)-v6.5.3 and (ID=562)-v6.5.3). So, when we try to deduplicate (ID=563) and (ID=562) (i.e. winscp and WinSCP), we get the error as expected.

      What's not expected is that those versions were not de-duplicated in the earlier pass. My guess is that it's related to winscp being in one feed and WinSCP being in the other -- we tried to be conservative, and keep the de-duplication to packages related to the feed.

      I'm thinking we just change that logic to "all packages of the feed type". Anyway, please stay tuned. We'll try to get it in the next maintencne release.

      Thanks,
      Alana

      posted in Support
      atripp
      atripp
    • RE: Packages with Noncanonical Names errors on internalized packages

      @jfullmer_7346 thanks for giving it a shot, we'll take a closer look!

      The "good news" is that the error message is a "sanity check" failure, so now have an idea of what's causing the error:

          -- Sanity Check (ensure there are no duplicate versions)
          IF EXISTS (
              SELECT * 
               FROM "PackageVersionIds" PV_D,
                    "PackageVersionIds" PV_C
              WHERE PV_D."PackageName_Id" = "@Duplicate_PackageName_Id"
                AND PV_C."PackageName_Id" = "@Canonical_PackageName_Id"
                AND PV_D."Package_Version" = PV_C."Package_Version"
                AND (   (PV_D."Qualifier_Text" IS NULL AND PV_C."Qualifier_Text" IS NULL)
                     OR (PV_D."Qualifier_Text" = PV_C."Qualifier_Text") )
             ) THEN RAISE EXCEPTION 'Cannot deduplicate given nameid'; RETURN; END IF;
      

      In this case, it's saying that there are "duplicate versions" remaining (i.e. WinSCP-1.0.0 and winscp-1.0.0). Those should have been de-duplicated earlier. I wonder if the PackageVersionIds_GetDuplicates() function is not returning the right results.

      I'm not sure what your experience w/ PostgreSQL is, but are you able to query the embedded database? If not, that's fine... it's not meant to be easy to query.

      Also, should the integrity check be taking 30 minutes?

      Maybe. The integrity check needs to verify file hashes, so that involves opening and streaming through all the files on disk. So when you have a lot of large packages, then it's gonna take a while.

      posted in Support
      atripp
      atripp
    • RE: Unable to download io.r2dbc:r2dbc-bom:pom:Borca-SR2 from ProGet feed.

      Hi @bohdan-cech_2403,

      ProGet can handle most invalid Maven version numbers, but Borca-SR2 is really invalid and isn't currently supported. Our "name vs version" parsing requires that versions start with numbers, artifacts start with letters. This has been a Maven rule for 20+ years now.

      It's non trivial and quite risky to change our parsing logic so it's not something we're keen on doing in a maintenance release. This scenario seems to be very rare and impact ancient artifacts and a few cases where authors didn't use Maven to deploy the artifacts.

      Thanks,
      Alana

      posted in Support
      atripp
      atripp
    • RE: maven Checksum validation failed, no checksums available

      @uli_2533 thanks for the additional info, great find in the source code too!!

      On our end, I was looking at the PUT code, where a 301 kind of made sense. I think it must have been some kind of regression on the GET request? Not sure why it didn't get noticed before, but it's a trivial fix.

      PG-3108 will be in the next maintenance release (Sep 19)... or if you want to try it now, it's in inedo/proget:25.0.10-ci.9 Docker image.

      Thanks,
      Alana

      posted in Support
      atripp
      atripp
    • RE: maven Checksum validation failed, no checksums available

      Hi @bohdan-cech_2403 ,

      I'm not sure if that's the issue...

      Returning a 201 has been the behavior for as long as we've had the feed (even the old version of the feed). The official Maven client does not seem to complain or cause any error in our testing, and no other user reported it as a problem.

      Any idea why it's happening "all of a sudden" for you? Is there a new version of Maven or something?

      FYI the PUT uploads for hash files are ignored and a 201 is always returned.

      Thanks,
      Alana

      posted in Support
      atripp
      atripp
    • RE: Machine ID changes after restart

      @jorgen-nilsson_1299 said in Machine ID changes after restart:

      What is the Machine ID based on and how can I trouble shoot this? Any way to set a static Machine ID?

      The Machine ID is based on the CPU Vendor ID, Machine Name (host name on Docker), and OS Version.

      Hopefully @felfert gave some advice on how to make sure those don't change,

      posted in Support
      atripp
      atripp
    • RE: proget 500 Internal server error when pushing to a proget docker feed

      @pariv_0352 the code is not fixed in 25.0.9

      However, inedo/proget:25.0.10-ci.5 will have the new code that should prevent this error

      posted in Support
      atripp
      atripp
    • RE: Packages with Noncanonical Names errors on internalized packages

      @jfullmer_7346 thanks! As an FYI...

      • Names and Versions are centrally indexed, and were intended to be "write-only" by design
      • NuGet does not have case-sensitive names, but some earlier bugs allowed duplicate names to be created
      • we are adding Duplicate Names (e.g. winscp and WinSCP) and Duplicate Versions (e.g. winscp-4.0.0 and WinSCP-4.0.0 checking to feed integrity
      • When re-indexing a feed, you'll get an option to de-duplicate names/versions, which will fix it across all feeds
      • Pulling or Publishing a package will update the casing of a centrally-indexed name
      • Also we're getting rid of the concept of "Noncannonical Names" altogether, since we've discovered many NuGet packages "change casing" at some version
      posted in Support
      atripp
      atripp
    • RE: Proget 25.0.9

      Hi @pmsensi ,

      Thanks for the heads-up; looks like there was a replication issue with one of our edge nodes. It should be there now

      Thanks,
      Alana

      posted in Support
      atripp
      atripp
    • RE: proget - Enhancement request: show value of X-Forwarded-For header

      Thanks @felfert it was an easy add, so look out for PG-3106 in the next maintenance release!

      posted in Support
      atripp
      atripp
    • RE: `pgutil assets metadata get` fails when filename contain spaces

      Hi @mmaharjan_0067

      The "unexpected argument" running without quotes is expected, but it works fine when I run with quotes. I'm afraid I can't reproduce this.

      I would check under Admin > Diagnostic Center to see if anythings logged. Alternatively, you may need to query the API by doing something like this:

      curl http://server:8624/endpoints/Test/metadata/metadata-test/v1/1%20-%20Normal.txt
      

      Thanks,
      Alana

      posted in Support
      atripp
      atripp
    • RE: ERROR while migrating maven repository from Jfrog Artifactory.

      Hi @bohdan-cech_2403 ,

      Thanks for sharing that; I can confirm receipt, reproduction, and fixing (PG-3105). If you'd like to try it, you can get the fix in 25.0.10-ci.2 - otherwise it'll be in the next maintenance release (next Friday).

      @wechselberg-nisboerge_3629 FYI I entered the url/username/password into ProGet, but I got the message "Failed to find any registries." So, I tried with curl and I got this:

      $> curl "https://artifactory.REDACTED.com/artifactory/api/repositories?type=local" --user support
      Enter host password for user 'support':
      {
        "errors" : [ {
          "status" : 401,
          "message" : "Artifactory configured to accept only encrypted passwords but received a clear text password, getting the encrypted password can be done via the WebUI."
        } ]
      }
      

      I have no idea what explains the different behavior. Anyway, I logged into the portal on that URL and generated some kind of key, and it let me connect.

      Thanks,
      Alana

      posted in Support
      atripp
      atripp
    • RE: proget - Enhancement request: show value of X-Forwarded-For header

      Hi @felfert,

      So far as I can tell, the IP isn't currently logged in these messages... I can see how that would be helpful.

      I can certainly do that (which would then show the X-Forwarded when available), but I wanted to make sure I'm looking in the right place. Because I don't see IP info now.

      Thanks,
      Alana

      posted in Support
      atripp
      atripp
    • RE: proget 500 Internal server error when pushing to a proget docker feed

      Hi @felfert ,

      As an update, we'd are planning on this pattern instead of row/table locking (PG-3104). It gives us a lot more control and makes it a lot easier to avoid deadlocks.

      I still can't reproduce the issue, but I see no reason this won't work.

      CREATE OR REPLACE FUNCTION "DockerBlobs_CreateOrUpdateBlob"
      (
          "@Feed_Id" INT,
          "@Blob_Digest" VARCHAR(128),
          "@Blob_Size" BIGINT,
          "@MediaType_Name" VARCHAR(255) = NULL,
          "@Cached_Indicator" BOOLEAN = NULL,
          "@Download_Count" INT = NULL,
          "@DockerBlob_Id" INT = NULL
      )
      RETURNS INT
      LANGUAGE plpgsql
      AS $$
      BEGIN
      
      	-- avoid race condition when two procs call at exact same time
      	PERFORM PG_ADVISORY_XACT_LOCK(HASHTEXT(CONCAT_WS('DockerBlobs_CreateOrUpdateBlob', "@Feed_Id", LOWER("@Blob_Digest"))));
      
          SELECT "DockerBlob_Id"
            INTO "@DockerBlob_Id"
            FROM "DockerBlobs"
           WHERE ("Feed_Id" = "@Feed_Id" OR ("Feed_Id" IS NULL AND "@Feed_Id" IS NULL))
             AND "Blob_Digest" = "@Blob_Digest";
      
          WITH updated AS
          (
              UPDATE "DockerBlobs"
                 SET "Blob_Size" = "@Blob_Size",
                     "MediaType_Name" = COALESCE("@MediaType_Name", "MediaType_Name"),
                     "Cached_Indicator" = COALESCE("@Cached_Indicator", "Cached_Indicator")
               WHERE ("Feed_Id" = "@Feed_Id" OR ("Feed_Id" IS NULL AND "@Feed_Id" IS NULL)) 
                 AND "Blob_Digest" = "@Blob_Digest"
              RETURNING *
          )        
          INSERT INTO "DockerBlobs"
          (
              "Feed_Id",
              "Blob_Digest",
              "Download_Count",
              "Blob_Size",
              "MediaType_Name",
              "Cached_Indicator"
          )
          SELECT
              "@Feed_Id",
              "@Blob_Digest",
              COALESCE("@Download_Count", 0),
              "@Blob_Size",
              "@MediaType_Name",
              COALESCE("@Cached_Indicator", 'N')
          WHERE NOT EXISTS (SELECT * FROM updated)
          RETURNING "DockerBlob_Id" INTO "@DockerBlob_Id";
      
          RETURN "@DockerBlob_Id";
      
      END $$;
      
      posted in Support
      atripp
      atripp
    • RE: proget 500 Internal server error when pushing to a proget docker feed

      @felfert amazing!! That script will come in handy when we need to help users patch their instance; we can also try to add something that allows you to patch via the UI as well!!

      posted in Support
      atripp
      atripp
    • RE: proget 500 Internal server error when pushing to a proget docker feed

      @felfert thanks for confirming!!

      FYI tThe fix has not been applied yet to code yet, but you can patch the stored procedure (painfully) as a workaround for now. We will try to find a better solution. The only thing I can imagine happening is that the PUT is happening immediately after the PATCH finishes, but before the client receives a 200 response. I have no idea though.

      We'll figure something out, now that we know where it is thanks to your help!!

      posted in Support
      atripp
      atripp
    • RE: Proget maven migration

      Hi @parthu-reddy,

      ProGet 2025 supports existing Maven classic feeds; you should be able to migrate just as you were in ProGet 2024.

      Thanks,
      Alana

      posted in Support
      atripp
      atripp
    • RE: Not able to upload .spd files to proget assets

      Hi @parthu-reddy ,

      Since these are network-level errors, you would need to use a tool like Wireshark or another packet analyzer to troubleshoot these kind of connectivity failures.

      Thanks,
      Alana

      posted in Support
      atripp
      atripp
    • RE: proget 500 Internal server error when pushing to a proget docker feed

      Did that, verified that the function actually has changed and did another test. Unfortunately this did not help, error was exactly the same like in my above wireshark dump.
      Or does one have to "compile" the function somehow after replacing? (I never dealt with SQL functions before and in general have very limited SQL knowledge.)

      Ah that's a shame! We're kind of new to "patching" functions like this in postgresql, but I think that should have worked to change the code. And also the code change should have worked.

      If you don't mind trying one other patch, where we select out the Blob_Id again in the end.

      CREATE OR REPLACE FUNCTION "DockerBlobs_CreateOrUpdateBlob"
      (
          "@Feed_Id" INT,
          "@Blob_Digest" VARCHAR(128),
          "@Blob_Size" BIGINT,
          "@MediaType_Name" VARCHAR(255) = NULL,
          "@Cached_Indicator" BOOLEAN = NULL,
          "@Download_Count" INT = NULL,
          "@DockerBlob_Id" INT = NULL
      )
      RETURNS INT
      LANGUAGE plpgsql
      AS $$
      BEGIN
      
          SELECT "DockerBlob_Id"
            INTO "@DockerBlob_Id"
            FROM "DockerBlobs"
           WHERE ("Feed_Id" = "@Feed_Id" OR ("Feed_Id" IS NULL AND "@Feed_Id" IS NULL))
             AND "Blob_Digest" = "@Blob_Digest"
         FOR UPDATE;
      
          WITH updated AS
          (
              UPDATE "DockerBlobs"
                 SET "Blob_Size" = "@Blob_Size",
                     "MediaType_Name" = COALESCE("@MediaType_Name", "MediaType_Name"),
                     "Cached_Indicator" = COALESCE("@Cached_Indicator", "Cached_Indicator")
               WHERE ("Feed_Id" = "@Feed_Id" OR ("Feed_Id" IS NULL AND "@Feed_Id" IS NULL)) 
                 AND "Blob_Digest" = "@Blob_Digest"
              RETURNING *
          )        
          INSERT INTO "DockerBlobs"
          (
              "Feed_Id",
              "Blob_Digest",
              "Download_Count",
              "Blob_Size",
              "MediaType_Name",
              "Cached_Indicator"
          )
          SELECT
              "@Feed_Id",
              "@Blob_Digest",
              COALESCE("@Download_Count", 0),
              "@Blob_Size",
              "@MediaType_Name",
              COALESCE("@Cached_Indicator", 'N')
          WHERE NOT EXISTS (SELECT * FROM updated)
          RETURNING "DockerBlob_Id" INTO "@DockerBlob_Id";
      
          SELECT "DockerBlob_Id"
            INTO "@DockerBlob_Id"
            FROM "DockerBlobs"
           WHERE ("Feed_Id" = "@Feed_Id" OR ("Feed_Id" IS NULL AND "@Feed_Id" IS NULL))
             AND "Blob_Digest" = "@Blob_Digest"
      
          RETURN "@DockerBlob_Id";
      
      END $$;
      

      If this doesn't do the trick, I think we need to look a lot closer.

      posted in Support
      atripp
      atripp
    • RE: proget 500 Internal server error when pushing to a proget docker feed

      Hi @inedo_1308 ,

      I forgot how it worked in the preview migration, but the connection string is stored in the database directory (/var/proget/database/.pgsqlconn).

      Thanks,
      Alana

      posted in Support
      atripp
      atripp
    • RE: proget 500 Internal server error when pushing to a proget docker feed

      @inedo_1308 sounds good!

      The code would almost certainly be the same, since it hasn't been updated since we did the PostgreSQL version of the script.

      So, I think it's a race condition, though I don't know how it would happen. However, if it's a race condition, then it should be solved with an UPDLOCK (or whatever) in PostgreSQL.

      1. SELECT finds no matching blob in the database (thus DockerBlob_Id is null)
      2. ... small delay ...
      3. UPDATE finds the matching blob because it was added (thus a row gets added to insert)
      4. INSERT does run because there is a row in inserted
      5. A NULL DockerBlob_Id is returned

      If you're able to patch the procedure, could you add FOR UPDATE as follows? We are still relatively to PostgreSQL so I don't know if this the right way to do it in this case.

      I think a second SELECT could also work, but I dunno.

      CREATE OR REPLACE FUNCTION "DockerBlobs_CreateOrUpdateBlob"
      (
          "@Feed_Id" INT,
          "@Blob_Digest" VARCHAR(128),
          "@Blob_Size" BIGINT,
          "@MediaType_Name" VARCHAR(255) = NULL,
          "@Cached_Indicator" BOOLEAN = NULL,
          "@Download_Count" INT = NULL,
          "@DockerBlob_Id" INT = NULL
      )
      RETURNS INT
      LANGUAGE plpgsql
      AS $$
      BEGIN
      
          SELECT "DockerBlob_Id"
            INTO "@DockerBlob_Id"
            FROM "DockerBlobs"
           WHERE ("Feed_Id" = "@Feed_Id" OR ("Feed_Id" IS NULL AND "@Feed_Id" IS NULL))
             AND "Blob_Digest" = "@Blob_Digest"
         FOR UPDATE;
      
          WITH updated AS
          (
              UPDATE "DockerBlobs"
                 SET "Blob_Size" = "@Blob_Size",
                     "MediaType_Name" = COALESCE("@MediaType_Name", "MediaType_Name"),
                     "Cached_Indicator" = COALESCE("@Cached_Indicator", "Cached_Indicator")
               WHERE ("Feed_Id" = "@Feed_Id" OR ("Feed_Id" IS NULL AND "@Feed_Id" IS NULL)) 
                 AND "Blob_Digest" = "@Blob_Digest"
              RETURNING *
          )        
          INSERT INTO "DockerBlobs"
          (
              "Feed_Id",
              "Blob_Digest",
              "Download_Count",
              "Blob_Size",
              "MediaType_Name",
              "Cached_Indicator"
          )
          SELECT
              "@Feed_Id",
              "@Blob_Digest",
              COALESCE("@Download_Count", 0),
              "@Blob_Size",
              "@MediaType_Name",
              COALESCE("@Cached_Indicator", 'N')
          WHERE NOT EXISTS (SELECT * FROM updated)
          RETURNING "DockerBlob_Id" INTO "@DockerBlob_Id";
      
          RETURN "@DockerBlob_Id";
      
      END $$;
      
      posted in Support
      atripp
      atripp
    • RE: proget 500 Internal server error when pushing to a proget docker feed

      Hmmm the only possibility I can see is that DockerBlobs_CreateOrUpdateBlob is returning NULL , which is failing conversion to int dockerBlobId. That's the only nullable converstion on that line.

      There's gotta be some kind of bug with this postresql procedure. Maybe a race condition??

      CREATE OR REPLACE FUNCTION "DockerBlobs_CreateOrUpdateBlob"
      (
          "@Feed_Id" INT,
          "@Blob_Digest" VARCHAR(128),
          "@Blob_Size" BIGINT,
          "@MediaType_Name" VARCHAR(255) = NULL,
          "@Cached_Indicator" BOOLEAN = NULL,
          "@Download_Count" INT = NULL,
          "@DockerBlob_Id" INT = NULL
      )
      RETURNS INT
      LANGUAGE plpgsql
      AS $$
      BEGIN
      
          SELECT "DockerBlob_Id"
            INTO "@DockerBlob_Id"
            FROM "DockerBlobs"
           WHERE ("Feed_Id" = "@Feed_Id" OR ("Feed_Id" IS NULL AND "@Feed_Id" IS NULL))
             AND "Blob_Digest" = "@Blob_Digest";
      
          WITH updated AS
          (
              UPDATE "DockerBlobs"
                 SET "Blob_Size" = "@Blob_Size",
                     "MediaType_Name" = COALESCE("@MediaType_Name", "MediaType_Name"),
                     "Cached_Indicator" = COALESCE("@Cached_Indicator", "Cached_Indicator")
               WHERE ("Feed_Id" = "@Feed_Id" OR ("Feed_Id" IS NULL AND "@Feed_Id" IS NULL)) 
                 AND "Blob_Digest" = "@Blob_Digest"
              RETURNING *
          )        
          INSERT INTO "DockerBlobs"
          (
              "Feed_Id",
              "Blob_Digest",
              "Download_Count",
              "Blob_Size",
              "MediaType_Name",
              "Cached_Indicator"
          )
          SELECT
              "@Feed_Id",
              "@Blob_Digest",
              COALESCE("@Download_Count", 0),
              "@Blob_Size",
              "@MediaType_Name",
              COALESCE("@Cached_Indicator", 'N')
          WHERE NOT EXISTS (SELECT * FROM updated)
          RETURNING "DockerBlob_Id" INTO "@DockerBlob_Id";
      
          RETURN "@DockerBlob_Id";
      
      END $$;
      

      Anyway we'll study that another day.. at least we think we know specifically where the issue is.

      posted in Support
      atripp
      atripp
    • RE: proget 500 Internal server error when pushing to a proget docker feed

      In case you're curious, here is #381

      49baf0bd-fa8f-4b1d-bf03-bcc7775cedd8-{23102B2B-0A1F-4CD1-B54C-71137AB85636}.png

      .... and now to figure out what could possibly be null in that specific area 🙄

      posted in Support
      atripp
      atripp
    • RE: proget 500 Internal server error when pushing to a proget docker feed

      @inedo_1308 finally!!! nice find :)

      posted in Support
      atripp
      atripp
    • RE: proget 500 Internal server error when pushing to a proget docker feed

      @inedo_1308 said in proget 500 Internal server error when pushing to a proget docker feed:

      That change looks wrong to me, because (error.StatusCode == 500) is more specific/restrictive than (error.StatusCode >= 500 || context.Response.HeadersWritten)
      In other words: It logs less than before.

      Good spot / good find -- though we never actually raise anything except 500 anyway, so i thought it would be fine 🙄

      public static DockerException Unknown(string message) => new DockerException(500, "UNKNOWN", message);
      

      Anyway wriiting the detail to that array will hpefully be caught.

      posted in Support
      atripp
      atripp
    • RE: proget 500 Internal server error when pushing to a proget docker feed

      @inedo_1308 thanks for continuing to help us figure this out

      Do you mind trying inedo/proget:25.0.9-ci.7?

      I'm thinking it's some kind of middleware bug (our code? .NET code? who knows), and I can't see why the logging code I added didn't log that in diagnostic center.

      Whatever the case, we can see the error JSON is being written: {"errors":[{"code":"UNKNOWN","message":"Nullable object must have a value.","detail":[]}]} ... so I just added the stack trace to detail element.

      FYI, the code:

      catch (Exception ex)
      {
          WriteError(context, DockerException.Unknown(ex.Message), feed, w => w.WriteValue(ex.StackTrace)); // I added the final argument
      }
      
      ....
      
      private static void WriteError(AhHttpContext context, DockerException error, DockerFeed? feed, Action<JsonTextWriter>? writeDetail = null)
      {
          /// code from before that should have worked
          if (error.StatusCode == 500)
              WUtil.LogFeedException(error.StatusCode, feed, context, error);
      
          if (!context.Response.HeadersWritten)
          {
              context.Response.Clear();
              context.Response.StatusCode = error.StatusCode;
              context.Response.ContentType = "application/json";
      
              using var jsonWriter = new JsonTextWriter(context.Response.Output);
              jsonWriter.WriteStartObject();
              jsonWriter.WritePropertyName("errors");
              jsonWriter.WriteStartArray();
      
              jsonWriter.WriteStartObject();
              jsonWriter.WritePropertyName("code");
              jsonWriter.WriteValue(error.ErrorCode);
              jsonWriter.WritePropertyName("message");
              jsonWriter.WriteValue(error.Message);
              jsonWriter.WritePropertyName("detail");
              jsonWriter.WriteStartArray();
              writeDetail?.Invoke(jsonWriter);
              jsonWriter.WriteEndArray();
              jsonWriter.WriteEndObject();
      
              jsonWriter.WriteEndArray();
              jsonWriter.WriteEndObject();
          }
      }
      
      posted in Support
      atripp
      atripp
    • RE: ProGet - Limit on Replicated File Size

      Hi @james-woods_8996 ,

      I looked into this a little more, and it turns out that our cloud storage providers do in fact support chunking -- but the outgoing replication code is not taking advantage of that. We would like to fix that in ProGet 2026.

      However, in the meantime, we can fix the incoming replication code (i.e. what's throwing the error) pretty easily via PG-3102 - hopefully we'll get that in the upcoming maintenance release.

      Thanks,
      Alana

      posted in Support
      atripp
      atripp
    • RE: Packages with Noncanonical Names errors on internalized packages

      Hi @jfullmer_7346,

      unfortunately it looks like the fix didn't work and made things slightly worse 😧

      We are reverting that change in ProGet 2025.9 and will try a new approach via PG-3100 - hopefully in ProGet 2025.10

      posted in Support
      atripp
      atripp
    • RE: proget 500 Internal server error when pushing to a proget docker feed

      Hi @inedo_1308

      Just tested this 25.0.9-ci.6. Unfortunately, there is neither a stacktrace shown in GUI nor in stdout/stderr on the docker container that runs proget itself :-(

      Sorry but just to confirm, you looked in the Admin > Diagnostic Center?

      Basically, I just changed the code from this...

      if (error.StatusCode >= 500 || context.Response.HeadersWritten)
         WUtil.LogFeedException(error.StatusCode, feed, context, error);
      

      ...to this...

      if (error.StatusCode == 500)
         WUtil.LogFeedException(error.StatusCode, feed, context, error);
      

      I really don't see how that wouldn't work to log it. I guess, next thing I could try is to write the stack trace in the detail.

      Thanks,
      Alana

      posted in Support
      atripp
      atripp
    • RE: proget 500 Internal server error when pushing to a proget docker feed

      I just changed some of the logging code via PG-3101, which will probably cause the exception to be logged.

      It just finished building the image inedo/proget:25.0.9-ci.6 -- would someone mind giving that a try? Once we we get the stack trace it'll probably be one of those 🤦 type of errors

      @thomas_3037 @inedo_1308 @wechselberg-nisboerge_3629

      Thanks!!!!

      posted in Support
      atripp
      atripp
    • RE: proget 500 Internal server error when pushing to a proget docker feed

      Thanks for the find @thomas_3037 !

      What a strange scenario... I have no idea what that parameter does (aside from what's written in the docs). Do you know if that has to do with how the layers are compressed?

      I think this definitely points to some kind of middleware bug. But still aren't sure how to better error report. We'll update a bit later!

      Thanks,
      Alana

      posted in Support
      atripp
      atripp
    • RE: ProGet - Limit on Replicated File Size

      Hi @james-woods_8996,

      That's unexpected. Large files are supposed to be chunked into 50mb segments.

      However, hooking over the code, chunking requires a seekable storage (i.e. random access) on the incoming server (i.e. proget-au.wtg.zone). Are you using cloud storage by chance?

      If so, cloud providers do not currently support random access, so this is somewhat expected. I'm not sure if we could add that support, but we could likely work-around it on the Incoming code (i.e. what produces the logs) as well.

      Open to ideas - not sure how important this is to get working or if it's just something you happened to notice -- let us know.

      If you are NOT using cloud storage, can you temporarily enable verbose replication under Admin > Advanced Settings, and share the results up until that error?

      Thanks,
      Alana

      posted in Support
      atripp
      atripp
    • RE: pgutil upack remove wiped most of my home folder.

      @rickard-hagelin_7259 not a good surprise 😧

      Definitely open to ideas, but the general use case for these commands is like:

      $> pgutil upack install --package=prod-tool --version=2.0.6 --feed=tools --target=/var/prod-tool
      
      $> pgutil upack remove --package=prod-tool
      

      Do you think that clarifying that remove deletes all the files would have helped?

      posted in Support
      atripp
      atripp
    • RE: ProGet Drop Paths broken after upgrading to 2025.7

      Hi @ashleycanham ,

      I see the issue... we'll get this fixed via PG-3099 in the upcoming maintenance release (Friday). This is a regerssion in ProGet 2025, so you could rollback and it should work fine.

      Thanks,
      Alana

      posted in Support
      atripp
      atripp
    • RE: ERROR while migrating maven repository from Jfrog Artifactory.

      Hi @wechselberg-nisboerge_3629 ,

      Sure we can fix the username/password at the same time...

      That said, if we don't hear back from @bohdan-cech_2403 then perhaps you can help by setting up a trial Artifactory cloud instance that ProGet fails to import from?

      We are neither Maven nor Artifactory experts (or users for that matter), so it's very likely we uploaded things "wrong" or are using such "basic" test files.

      Thanks,
      Alana

      posted in Support
      atripp
      atripp
    • RE: proget 500 Internal server error when pushing to a proget docker feed

      Hi @inedo_1308,

      Another user has reported this via ticket EDO-12089 (tagging for my reference), and we're currently analyzing their PCAP file.

      We cannot reproduce it at all and have absolutely no idea where the error could be coming from -- the current theory is that it's a middleware issue by the way podman did requests (which was different than Docker client),.... but since you mentioned you can repro it on Docker client, then that's probably not it.

      Anyway, if you're able to identify a version where this regressed that would be really helpful.

      The reason nothing is logged is because it's explicitly suppressed in the code, but I don't know why. We may have to change that so we can see this message logged.

      Please stay tuned.

      Thanks,
      Alana

      posted in Support
      atripp
      atripp
    • RE: ERROR while migrating maven repository from Jfrog Artifactory.

      Hi @bohdan-cech_2403 ,

      In that case, the issue is in the importer -- maybe something with the API, it's really hard to say. This is a relatively new importer tool and we could only do so much testing.

      Can you provide us with credentials to try this and attach a debugger?

      You can share those to the earlier ticket or email to support at inedo dot com -- but we don't monitor the email, so just let us know when you do that.

      Thanks,
      Alana

      posted in Support
      atripp
      atripp
    • RE: Docker image attempts chown on NFS

      Hi @tyler_5201 ,

      We'll address this via PG-3098 in an upcoming maintenance release; basically we will add a permission check before chown on Docker/Linux for PostgreSQL. If the permissions are there, then chown won't be run.

      Thanks,
      Alana

      posted in Support
      atripp
      atripp
    • RE: ProGet - Error Pulling from Docker Repository with Multiple Servers

      Hi @james-woods_8996,

      It sounds like there's a problem decrypting authentication tickets. This is almost certainly due to not having the same encryption key on both servers.

      Check out https://docs.inedo.com/docs/installation/linux/docker-guide#supported-environment-variables to learn more, but it's an environment variable like this:

      -e PROGET_ENCRYPTION_KEY='37D27A670394F7D82CE57F1F07D69747'
      

      It's a 32-char hex string. You can just generate a GUID and delete the "-" to have one.

      Thanks,
      Alana

      posted in Support
      atripp
      atripp
    • RE: ERROR while migrating maven repository from Jfrog Artifactory.

      Hi @bohdan-cech_2403,

      I wonder if there's some kind of issues with the artifacts. Can you try uploading some of those using the UI to ProGet?

      You can start with the POM file, then upload the JAR.

      That will hlep us identify what the issue might be.

      Thanks,
      Alana

      posted in Support
      atripp
      atripp
    • RE: Error 500 when trying to restore NuGet packages

      hi @power_pille @pmsensi ,

      Just as an update, we will revert the change via PG-3097 in the next maintenance release.

      We will solve duplicate package names another day -- but we'll do it the "hard way", which is to update all the related tables when it occurs.

      Thanks,
      Alana

      posted in Support
      atripp
      atripp
    • RE: Docker image attempts chown on NFS

      Hi @tyler_5201

      Thanks for the additional info; so it's not that this is an actual "network drive" just (i.e. far from the server), it just happens to be how the configuration works.

      I don't think we can/should try to detect the owner; do you if chown will fail if the user is already postgres? If so, then we can wrap this with a try/catch and throw a more helpful error.

      Otherwise, we can try/catch and give a warning. But we want to make sure the user can see it when the database fails to load.

      Thanks,
      Alana

      posted in Support
      atripp
      atripp
    • RE: ProGet - Unsupported Header when Uploading to Pure Storage S3

      Hi @james-woods_8996 ,

      Docker feeds utilize the multi-part upload part of the S3 API, which you can see being used in the BeginResumableUploadAsync method of our file system abstraction.

      If they do not implement multi-part uploads, then you will not be able to use it with ProGet. Other feeds rely on that method as well.

      I would check w/ the vendor to see what the issue could be - it's possible they simply don't support it.

      Thanks,
      Alana

      posted in Support
      atripp
      atripp
    • RE: Proget showing deleted versions of nuget packages

      Hi @parthu-reddy ,

      This behavior is expected; these have a status of "unlisted", which you can see on NuGet.org if you look in the API or type in the URL directly:

      • https://www.nuget.org/packages/System.ComponentModel.Composition/2010.2.11
      • https://www.nuget.org/packages/System.ComponentModel.Composition/2010.2.11.1

      ProGet does not hide unlisted packages by design, but shows them with an unlisted icon instead.

      Thanks,
      Alana

      posted in Support
      atripp
      atripp
    • RE: Error 500 when trying to restore NuGet packages

      @power_pille @pmsensi thanks for helping to investigate this

      What I can say is this is most definitely a regression in ProGet 2025.8 caused by PG-3047 -- I'm not sure if we want to revert that change or fix it. But rolling back to ProGet 2024.7 will definitely address the issue.

      As for casing, it's all really strange to honest - some package ecosystems (rpm) are case sensitive, and different packages that differ by casing. Most are not insane like that.

      However, due to a bug from a while back, "bad data" snuck into the PackageNameIds table from a vulnerability database update -- and that's why NuGet has those duplicates. Clearing them "blindly" from databases in the field isn't easy, but the feed reindex was a step in that direction.

      Anyway we're going to continue researching how to address this

      posted in Support
      atripp
      atripp
    • RE: ProGet Entra Hybrid Authentication

      Hi @yaakov-smith_7984 ,

      It looks like we forgot to ship the updated extension in 2025.8, so it's not "included" when you install ProGet. You should be able to update under Admin > Extensions, but unless you make the extensions directory (under Admin > Advacned Configuration) mapped to the docker host it will not "survive" a container reboot.

      We could get you a prerelease container version if you'd like to try it as included, just let us know

      Thanks,
      Alana

      posted in Support
      atripp
      atripp
    • RE: Multi Connector Feed

      @misael-esperanzate_5668 thanks for the reproduction details!

      I was ablet to reproduce this very easily and fixed it via PG-3091 - it was an ordering problem

      This will be in the upcoming maintenance release this Friday

      posted in Support
      atripp
      atripp
    • RE: Docker image attempts chown on NFS

      Hi @tyler_5201

      I'm not really familiar with all this topic, but why would you want to put the database file on an NFS? The PostgreSQL docs on clustering seem to warn against this.

      That said, we added the chown command during early testing because PostgreSQL was failing with something like this:

      The files belonging to this database system will be owned by user "postgres".
      This user must also own the server process.
      

      The only way to get to work was:

      1. Log into the pod via: $kubectl exec -n -i -t -- bash -il
      2. Change the directory to: $cd /var/opt
      3. Get the UID of postgres-User: $id -u postgres
      4. Recursively change owner of the folder database: chown -R 101:101 database/

      Hence, why we added the chown.

      I'm not sure the best approach here -- we could try/catch, but I think the postgres user still needs to own the files?

      Cheers,
      Alana

      posted in Support
      atripp
      atripp
    • 1
    • 2
    • 3
    • 4
    • 5
    • 34
    • 35
    • 1 / 35