Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-61337

Debug Symbols uploads > 256meg refused.

    Details

    • Similar Issues:

      Description

      So it turns out the at API endpoint exposed by Microsoft will only except dbug symbol files upto 256meg using the appcenter plugin.  Ours iOS  app.dSYM file recently grew to 257meg and was rejected with an error message of  

      io.jenkins.plugins.appcenter.AppCenterException: Upload symbols to resource unsuccessful: : HTTP 413 The request body is too large and exceeds the maximum permissible limit.: <?xml version="1.0" encoding="utf-8"?><Error><Code>RequestBodyTooLarge</Code><Message>The request body is too large and exceeds the maximum permissible limit.
      RequestId:92c2b0f6-601e-0057-308e-edc32e000000
      Time:2020-02-27T16:56:23.4809866Z</Message><MaxLimit>268435456</MaxLimit></Error>

       

      When I inquired with MS about this they said its a limitation of the api and you would need to use the chunk upload approach to upload files larger than 256meg.  

      I don;t know if this was known before as I can find no mention of upload size limits anywhere in their documentation and it also does not seem to affect the .app uploads just the debug symbols upload.

      The current work around is to stop uploading with plugin and after each build hand upload the .dSYM file through the website. (Which strangely enough does not exhibit the same problem)

      If you need any further info please let me know.

      Thanks

       

      Terry

       

        Attachments

          Activity

          Hide
          mezpahlan Mez Pahlan added a comment -

          Thanks for reporting this Terry Wallace. I'll have a look at what that might take to support. Any PRs are welcome for this.

          Show
          mezpahlan Mez Pahlan added a comment - Thanks for reporting this Terry Wallace . I'll have a look at what that might take to support. Any PRs are welcome for this.
          Hide
          mezpahlan Mez Pahlan added a comment -

          There is a note in the API docs saying that this isn't supported. And that you should use their own CLI tool. However a quick scan of their repo and I can't figure out how or when they are using this chunked mode.

          This is the looks like the equivalent call site for their CLI. I'll have to learn javascript again to figure out what is actually happening there.

          Show
          mezpahlan Mez Pahlan added a comment - There is a note in the API docs saying that this isn't supported . And that you should use their own CLI tool. However a quick scan of their repo and I can't figure out how or when they are using this chunked mode. This is the looks like the equivalent call site for their CLI . I'll have to learn javascript again to figure out what is actually happening there.
          Hide
          twallace_work Terry Wallace added a comment - - edited

          https://github.com/microsoft/appcenter-cli/blob/master/src/commands/crashes/lib/azure-blob-upload-helper.ts

          I think that's the relevant call where its calling the azure blob storage upload under the hood.

          Line 20:  blobService.createBlockBlobFromLocalFile(container, blob, file, 

          Almost looks like they are directly uploading to azure storage and sidestepping anything else.

           

          Show
          twallace_work Terry Wallace added a comment - - edited https://github.com/microsoft/appcenter-cli/blob/master/src/commands/crashes/lib/azure-blob-upload-helper.ts I think that's the relevant call where its calling the azure blob storage upload under the hood. Line 20:  blobService.createBlockBlobFromLocalFile(container, blob, file,  Almost looks like they are directly uploading to azure storage and sidestepping anything else.  
          Hide
          mezpahlan Mez Pahlan added a comment -

          Sorry for the late reply on this. I can't figure out how to get this to work by side stepping the official APIs. I'll happily take a PR if anyone can figure this out however if it isn't in the official API docs I don't have the bandwidth to look into it at the moment. Apologies.

          If it helps anyone what we currently do here is inline with the link above in three API requests. 1) request an upload url for the symbols 2) upload to this url 3) commit this upload. From Terry's investigation there may be a way to reverse engineer what the node plugin is doing which looks to being in the same way as we do by requesting an upload url but instead of directly uploading to it then uses Azure Blob Storage.

          There looks to be a Java SDK for Azure Blob Storage which might be worth investigating. For reference here is what the node plugin is doing its thing.

          Show
          mezpahlan Mez Pahlan added a comment - Sorry for the late reply on this. I can't figure out how to get this to work by side stepping the official APIs. I'll happily take a PR if anyone can figure this out however if it isn't in the official API docs I don't have the bandwidth to look into it at the moment. Apologies. If it helps anyone what we currently do here is inline with the link above in three API requests. 1) request an upload url for the symbols 2) upload to this url 3) commit this upload. From Terry's investigation there may be a way to reverse engineer what the node plugin is doing which looks to being in the same way as we do by requesting an upload url but instead of directly uploading to it then uses Azure Blob Storage. There looks to be a Java SDK for Azure Blob Storage which might be worth investigating. For reference here is what the node plugin is doing its thing .

            People

            • Assignee:
              Unassigned
              Reporter:
              twallace_work Terry Wallace
            • Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

              • Created:
                Updated: