Notarization: The operation couldn't be completed. (SotoS3.S3ErrorType.multipart error 1.)

Hello,

For my macOS app, on Xcode version 15.4 (15F31d)
on macOS 14.5 (23F79)
I follow Organizer > Distribute App > Direct Distribution, and I get a Notary Error "The operation couldn't be completed. (SotoS3.S3ErrorType.multipart error 1.)"

It's been happening since 3 days.

In the IDEDistribution.verbose.log file I see:

https://gist.github.com/atacan/5dec7a5e26dde0ec06a5bc4eb3607461

Answered by DTS Engineer in 798022022
I've been able to notarize the app.

Yay!

And I agree it’s frustrating that we never got an explanation as to why it was failing. If it comes back again, please let me know.

Share and Enjoy

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

It's been happening since 3 days.

Well, that’s not good.

I’ve not heard of any general problem with notarisation, so my first guess is that this is related to your environment. However, it’s hard to say for sure.

Let’s start with a simple diagnostic: If you export your app from the Xcode organiser — click Distribute App and then choose Custom workflow — and then try to notarise using notarytool, does that work?

For instructions on how to use notarytool, see Customizing the notarization workflow.

Share and Enjoy

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

Hello, thank you. I got the same error. Here is what I did.

Xcode > Organizer > Distribute App > Custom > Copy App

ditto -c -k --keepParent AppName.app/ AppName.zip

xcrun notarytool submit AppName.zip --keychain-profile "notarytool-password" --wait

I ran the same command also after making Xcode 16 Beta 3 the active Xcode. I got the same error. The error I see is the following:

Conducting pre-submission checks for AppName.zip and initiating connection to the Apple notary service...
Submission ID received
  id: 27810ac1-0c04-4bd8-a24a-13d868846d2f
Error: abortedUpload(resumeRequest: SotoS3.S3.ResumeMultipartUploadRequest(uploadRequest: SotoS3.S3.CreateMultipartUploadRequest(acl: nil, 
bucket: "notary-submissions-prod", 
bucketKeyEnabled: nil, 
cacheControl: nil, 
contentDisposition: nil, 
contentEncoding: nil, 
contentLanguage: nil, 
contentType: nil, 
expectedBucketOwner: nil, 
_expires: SotoCore.OptionalCustomCoding<SotoCore.HTTPHeaderDateCoder>(value: nil), 
grantFullControl: nil, 
grantRead: nil, 
grantReadACP: nil, 
grantWriteACP: nil, 
key: "prod/AROARQRX7CZS3PRF6ZA5L:27810ac1-0c04-4bd8-a24a-13d868846d2f", 
metadata: nil, 
objectLockLegalHoldStatus: nil, 
objectLockMode: nil, 
_objectLockRetainUntilDate: SotoCore.OptionalCustomCoding<SotoCore.ISO8601DateCoder>(value: nil), 
requestPayer: nil, 
serverSideEncryption: nil, 
sSECustomerAlgorithm: nil, 
sSECustomerKey: nil, 
sSECustomerKeyMD5: nil, 
sSEKMSEncryptionContext: nil, 
sSEKMSKeyId: nil, 
storageClass: nil, 
tagging: nil, 
websiteRedirectLocation: nil), 
uploadId: "8PznO1GCHLY.4hhKSVqntQf7LBaIox10kzjo1pkXmO4z1noX7qMXhKYYBh0WKJIRq4mKAvbcHzfVCKsGuBB4okUpWt46X0K8Me.kRDXQaYJeBsEaj_lPKfqiJGNZi06P8glRt6ZFnf.E7_97sfrmYsJl4KRowteprR3YMKtGG13Z6vfLzK7kqRcfh3n.bddj", 
completedParts: []), 
error: The operation couldn’t be completed. (Network.NWError error 60 - Operation timed out))

Thanks for those results.

So, yeah, clearly our notary code is having a hard time contacting the S3 bucket where its uploads your product. Usually this means some sort of network issue at your end.

Can you try from a different network? So, if you’re at work, try from home, or vice versa.

Share and Enjoy

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

Hello, thank you. I tried it using my phone's hotspot. Would that count? I got the same error.

To see if there is something wrong with this particular app, I tried to notarize another app of mine, that is currently distributed on the Mac App Store. Trying to notarize the build that was accepted to App Store also gives the same error.

I tried it using my phone's hotspot. Would that count?

Yes, that’s a good way to test this. Also, if you have a VPN running, make sure to disable it.

To see if there is something wrong with this particular app …

OK. That’s more evidence for my original theory that this is related to your environment somehow.

Share and Enjoy

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

I've been able to notarize the app. I have no idea about what's changed.

If it had failed, I was going to test it after disabling iCloud+ private relay but it worked when it was on.

I've been able to notarize the app.

Yay!

And I agree it’s frustrating that we never got an explanation as to why it was failing. If it comes back again, please let me know.

Share and Enjoy

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

Hello, I got the same error again today.

Below is the notarization logs

[v1.0(22782)][20:24:28.938Z] Debug [DEBUG] Instantiating APITaskManager for use with GS Tokens.
[v1.0(22782)][20:24:28.939Z] Debug [DEBUG] Instantiated AKSession for service: com.apple.dt.Xcode, sourceApp: com.apple.gs.xcode.auth
[v1.0(22782)][20:24:28.939Z] Info [API] Initialized Notary API with base URL: https://appstoreconnect.apple.com/notary/v2/
[v1.0(22782)][20:24:28.940Z] Debug [FILEHASH] Generating md5 and sha256 digest with buffer size 1048576 for file:///var/folders/h0/tfkdn065565fkgnh9j_x54p00000gn/T/XcodeDistPipeline.~~~AdgxIB/Packages/MyAppName.zip
[v1.0(22782)][20:24:29.026Z] Debug [FILEHASH] MD5 digest: c27d7228b9ea9b7b1c49bc6ea798f0ac
[v1.0(22782)][20:24:29.026Z] Debug [FILEHASH] Base64-encoded MD5 Digest: **1yKLnqm3scSbxup5jwrA==
[v1.0(22782)][20:24:29.026Z] Debug [FILEHASH] SHA256 digest: f7a67ca7e69f57b773619acab2e0a3ce31c6c824ade4ce32b577a5878dae24a0
[v1.0(22782)][20:24:29.026Z] Debug [FILEHASH] Finished generating file hashes for MyAppName.zip. Operation took 85ms.
[v1.0(22782)][20:24:29.032Z] Debug [API] Sending submissions payload: submissionPayload(submissionName: "MyAppName.zip", md5: "c27d7228b9ea9b7b1c49bc6ea798f0ac", sha256: "f7a67ca7e69f57b773619acab2e0a3ce31c6c824ade4ce32b577a5878dae24a0", notifications: [APNSRegistration(deviceId: "7C46F04CBC66E26E310057E5CC2C497B141F2FF8F94B8C81E307D8537F107D78", topic: "com.apple.dt.Xcode", identifier: "MyAppName")])
[v1.0(22782)][20:24:29.033Z] Info [API] Preparing POST request to URL: https://appstoreconnect.apple.com/notary/v2/submissions?, Custom Headers: private<Dictionary<String, String>>
[v1.0(22782)][20:24:29.033Z] Debug [AUTHENTICATION] Authenticating request to '/notary/v2/submissions' with Xcode GrandSlam token. ID: 001869-08-2bf2a57c-247f-4fb4-8e85-c49ad15d33d3:gstoken
[v1.0(22782)][20:24:29.033Z] Debug [DEBUG] GSToken request headers: private<Dictionary<String, String>>
[v1.0(22782)][20:24:29.034Z] Debug [TASKMANAGER] Starting Task Manager loop to wait for asynchronous HTTP calls.
[v1.0(22782)][20:24:29.785Z] Debug [API] Received response status code: 200, message: no error, URL: https://appstoreconnect.apple.com/notary/v2/submissions?, Correlation Key: K7CIFIIHY5UUWVC4DFLOMRMFPY
[v1.0(22782)][20:24:29.785Z] Debug [TASKMANAGER] Completed Task with ID 1 has received a parsable response.
[v1.0(22782)][20:24:29.785Z] Debug [TASKMANAGER] Ending Task Manager loop.
[v1.0(22782)][20:24:29.788Z] Debug [UPLOAD] File sized 36.3 MB w/ min calculated part size: 37.1 KB. Multipart upload chunk size: 5.00 MB
[v1.0(22782)][20:24:29.797Z] Debug [UPLOAD] File sized 36.3 MB w/ min calculated part size: 37.1 KB. Multipart upload chunk size: 5.00 MB
[v1.0(22782)][20:24:29.797Z] Info [UPLOAD] Starting S3 multipart upload of file at 'file:///var/folders/h0/tfkdn065565fkgnh9j_x54p00000gn/T/XcodeDistPipeline.~~~AdgxIB/Packages/MyAppName.zip' with part size 5 MB to Bucket: notary-submissions-prod, Key: prod/AROARQRX7CZS3PRF6ZA5L:ce19c607-6400-447e-9f48-fb8e2102ea56
[v1.0(22782)][20:24:58.536Z] Info [UPLOAD] An error occurred during multipart upload. Retrying exactly once from the last completed part. Error: The operation couldn’t be completed. (Network.NWError error 60 - Operation timed out)
[v1.0(22782)][20:25:30.964Z] Debug [UPLOAD] Successfully aborted multipart upload with uploadID: 9dyT_Zv8zgk1_Yq0dlWbmCBc2QLsq3n7AivzgvmiAPEXHg.HCadmmOmvCUu8foRcqzzaOw.zxNTywTn41j3sg9_h9JLu5jyQLoEQMbtGzlF_NMOhZ9MLUy0PFPQz_vDEet4DVOBh.t9dhPJUwWdX91FJhHZaYiD9yOrdzKBrZWcXgn0sccb.A.nvbWhTSTbq
[v1.0(22782)][20:25:30.966Z] Info [UPLOAD] Attempting to shutdown local S3 upload service.
[v1.0(22782)][20:25:30.966Z] Info [UPLOAD] Successfully shutdown local S3 upload service.
I got the same error again today.

Earlier you indicated that you might be able to re-test this from your Personal Hotspot network. Did you? And what did it show?

Share and Enjoy

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

Hello,

  • I turned off Private Relay (but this affects only Safari to my knowledge, right?),
  • connected to the Hotspot of my iPhone,
  • bumped the build number by 20 (to make sure not to use a build number that failed before).

This time upload was successful.

Notarization result was interesting though. It was notarized with a yellow exclamation point. When I looked at the status log, what I see is in the attachment.

Unable to find API request response with task ID 2 for GET submissions/ d630eb27-00c0-4523-bb0a-60729272f529/logs.

but this affects only Safari to my knowledge

Not quite. Quoting Prepare your network or web server for iCloud Private Relay:

Private Relay protects users’ web browsing in Safari, DNS resolution queries, and insecure http app traffic.

This time upload was successful.

Cool.

When I looked at the status log, what I see is … Unable to find API request response with task ID

Yeah, that’s a weird one. I’ve seen this before (r. 129397668). It’s not at all clear what’s causing it.

The other folks I’ve seen with this problem don’t see it all the time. It seems to come and go. So retrying may allow you to notarise properly.

Beyond that, you can check the notary log from the command line, as discussed in Fetching the Notary Log.

Share and Enjoy

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

Notarization: The operation couldn't be completed. (SotoS3.S3ErrorType.multipart error 1.)
 
 
Q