firebase / firebase/firebase-ios-sdk

FR: Output an explicit error from upload-symbols executable when upload quota is exceeded

Open
#6,990 13 comments 11 reactions 0 assignees View on GitHub
api: crashlytics type: feature request
Dominant language
C++
Stars
6.7k
Forks
1.8k
Avg merge
2d 18h
Merged PRs (30d)
75

Description

### Feature proposal

* Firebase Component: upload-symbols executable

We recently started receiving cryptic errors from the `upload-symbols` executable:

```
error: Failed uploading cSYMs due to error: Error Domain=com.google.firebase.crashlytics.FIRCLSCompoundOperation.error Code=4294967293 "(null)" UserInfo={com.google.firebase.crashlytics.FIRCLSCompoundOperation.error.user-info-key.underlying-errors=(
"Error Domain=com.crashlytics.mac.error-domain.submit-csym Code=0 \"Failed to submit cSYM for architecture arm64 with uuid some_uuid in dSYM: /path/to/bundle.framework.dSYM\" UserInfo={NSLocalizedFailureReason=Failed to submit cSYM for architecture arm64 with uuid some_uuid in dSYM: /path/to/bundle.framework.dSYM, NSUnderlyingError=0x7fbf19f2c3e0 {Error Domain=FIRCLSNetworkError Code=-6 \"(null)\" UserInfo={retryLimit=10, NSErrorFailingURLStringKey=https://firebasecrashlyticssymbols.googleapis.com/v1/project/-/app/our_app_id/upload/native/some_uuid}}}",
"Error Domain=com.crashlytics.mac.error-domain.submit-csym Code=0 \"Failed to submit cSYM for architecture armv7 with uuid some_uuid in dSYM: /path/to/bundle.framework.dSYM\" UserInfo={NSLocalizedFailureReason=Failed to submit cSYM for architecture armv7 with uuid some_uuid in dSYM: /path/to/bundle.framework.dSYM, NSUnderlyingError=0x7fbed9d04400 {Error Domain=FIRCLSNetworkError Code=-6 \"(null)\" UserInfo={retryLimit=10, NSErrorFailingURLStringKey=https://firebasecrashlyticssymbols.googleapis.com/v1/project/-/app/our_app_id/upload/native/some_uuid}}}"
)}
error: Could not complete submission of dSYM at /path/to/bundle.framework.dSYM: Error Domain=com.google.firebase.crashlytics.FIRCLSCompoundOperation.error Code=4294967293 "(null)" UserInfo={com.google.firebase.crashlytics.FIRCLSCompoundOperation.error.user-info-key.underlying-errors=(
"Error Domain=com.crashlytics.mac.error-domain.submit-csym Code=0 \"Failed to submit cSYM for architecture arm64 with uuid some_uuid in dSYM: /path/to/bundle.framework.dSYM\" UserInfo={NSLocalizedFailureReason=Failed to submit cSYM for architecture arm64 with uuid some_uuid in dSYM: /path/to/bundle.framework.dSYM, NSUnderlyingError=0x7fbf19f2c3e0 {Error Domain=FIRCLSNetworkError Code=-6 \"(null)\" UserInfo={retryLimit=10, NSErrorFailingURLStringKey=https://firebasecrashlyticssymbols.googleapis.com/v1/project/-/app/our_app_id/upload/native/some_uuid}}}",
"Error Domain=com.crashlytics.mac.error-domain.submit-csym Code=0 \"Failed to submit cSYM for architecture armv7 with uuid some_uuid in dSYM: /path/to/bundle.framework.dSYM\" UserInfo={NSLocalizedFailureReason=Failed to submit cSYM for architecture armv7 with uuid some_uuid in dSYM: /path/to/bundle.framework.dSYM, NSUnderlyingError=0x7fbed9d04400 {Error Domain=FIRCLSNetworkError Code=-6 \"(null)\" UserInfo={retryLimit=10, NSErrorFailingURLStringKey=https://firebasecrashlyticssymbols.googleapis.com/v1/project/-/app/our_app_id/upload/native/some_uuid}}}"
)}
```

By looking at the requests with a HTTP debugging tool we found that the actual error looked like this:

```json
{"error":{"code":8,"message":"Upload quota exceeded."}}
```

It would be beneficial to output the exceeded quota error from the `upload-symbols` directly as the original error is somewhat vague.

Contributor guide

Open the contributing guide

Research direction

Begin at the upload-symbols executable's upload error handling and trace the HTTP response that currently becomes the cryptic compound error. Confirm the executable surfaces the server message "Upload quota exceeded." when the quota response is returned.

Written by the indexing model from the issue text.

Assessment

Domain
tooling
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
42/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.