notarytool submit fails 94% of the time with Error: MultipartUploadError(error: HTTPClientError.deadlineExceeded) or other error

We submit for notarization using:

xcrun notarytool submit --apple-id ACCOUNT --team-id XXXXXX --password NNNNNN application.zip

I have occasionally had success uploading one of the applications, but I have never been successful uploading the bigger one.

What is the reason for this? The files are not very large. The small file is only 6.0GB and the big file is only 17.5GB.

Of the past 100 failures:

72: error: HTTPClientError.deadlineExceeded

28: error: The operation couldn’t be completed. (Network.NWError error 54 - Connection reset by peer))

On average it takes me around 50 attempts (2 days of uploading) to get past the S3 client configuration.

I have tried 5 different internet providers for these uploads. None of them work any better, even ones that have great latency and connections to AWS.

I only have a limited number of Mac OS X machines so I have tried on all of the ones I can afford, but none of them work better or worse than my new Mac Book Pro (2021)

I have tried every single option and combination of options from man notarytool including disabling S3 acceleration, setting timeouts, trying to use wait. I have tried them all,

Can someone please help me figure this out? I'm getting desperate and this is making me look really ****** for pushing to have a Mac OS X port because Mac users are stuck waiting for the notarization service which lags the Mac updates by many days.

The error messages make it clear that notarytool is using Soto S3. The developer has indicated in multiple threads that the error HTTPClientError.deadlineExceeded is fixed by increasing the client timeout. Is there a way I can modify notarytool to apply this patch?

https://github.com/soto-project/soto/discussions/622

Is it possible to write our own S3 upload tool that bypasses Soto S3 and uses something more reliable?

Again, the files I am uploading are not very big none of them are bigger than 25GB. I don't understand why it doesn't work.

Replies

Is it possible to write our own S3 upload tool … ?

Yes. The notary service has its own web API. For the details, see Notary API. It’s a non-trivial amount of work though.

I’ve worked with folks who’ve been able to upload similarly large files, so I’m not sure why things are failing so badly for you. When you submit a file using notarytool, it should spit out a request UUID before commencing the upload. Is that true here?

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"

I have had 1 upload succeed out of countless attempts. I have tried libraries at first (electron-notarize), and then when that failed, I went to the command line. That fails as well, so it wasn't the library, and every single time I am getting the following: Sometimes it gets to 20% sometimes 50% but fails inevitably. The timeout does nothing either.

[12:18:30.326Z] Debug [UPLOAD] Completed [1/52] chunks of a multipart upload.
[12:18:30.954Z] Debug [UPLOAD] Completed [2/52] chunks of a multipart upload.
[12:18:31.621Z] Debug [UPLOAD] Completed [3/52] chunks of a multipart upload.
[12:18:32.352Z] Debug [UPLOAD] Completed [4/52] chunks of a multipart upload.
zsh: bus error  xcrun notarytool submit --apple-id "John@*******" --password  --team-id 

I am at a loss for how to continue creating a distributable application.

I am glad to hear you say to have worked with people who have been able to successfully upload large files. Can you share any of the studio or developers so that I can contact them and ask for a reference? In your previous posts on threads about notaryservice's failures, there are replies from developers reporting a failure rate above 50% on a tiny 700MB upload. I am surprised Apple is not more concerned about this situation.

My own experience, and the experience I have heard from the developer community stands out as overwhelmingly negative. I inquired with two Unity developer groups on Discord. I did not find a single developer who has had a consistently successful experience with uploading large files to notaryservice.

I did find other developers who indicated that notarization is what prevented them from releasing a Mac OS X build. I wish I had known that the notary service was so poor at handling large file uploads before we committed to a Mac OS X port of the project. I think if I had known that uploads would take 48 hours of work per update, we would have just explained the weaknesses in the Apple infrastructure to our Kickstarter backers and begged for forgiveness.

One of the developers did provide a nice bash script that wraps notaryservice and loops until it is successful. Today I was able to notarize a 6.05GB file but it took uploading 110GB of data to the S3 bucket. This does give me some hope that I can brute force my way past the issue for the 17GB file. I will start it and let it run continuously for a few days to see if I can force my way past defects in the uploader.

Every time I start an upload, with the loop script or manually, it prints something like this:

Conducting pre-submission checks for PROJECT.zip and initiating connection to the Apple notary service... Submission ID received id: f8476ccd-xxxx-yyyy-zzzz-21ae7d77581a

trops wrote:

zsh: bus error  xcrun notarytool submit --apple-id "John@*******" --password  --team-id 

This is a different problem. Please start a new thread for it.

The above indicates that notarytool crashed, so there should be a crash report. It would help if you attached that crash report to your thread. See Posting a Crash Report for advice on how to do that.


digital2noise wrote:

Can you share any of the studio or developers so that I can contact them and ask for a reference?

No.

Clearly your experience is very different from mine, to the point where I’ve never needed to research the best way to investigate problems like this. I’m going to do that now and get back to you.

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"