Download¶
Basics¶
The Tecken webapp handles requests for symbols files. Tecken takes the request, figures out which bucket the file is in, and returns a redirect to that bucket. This allows us to use multiple buckets for symbols without requiring everyone to maintain lists of buckets.
For example, at the time of this writing doing a GET
for
https://symbols.mozilla.org/firefox.pdb/448794C699914DB8A8F9B9F88B98D7412/firefox.sym will
return a 302 Found
redirect to
https://s3-us-west-2.amazonaws.com/org.mozilla.crash-stats.symbols-public/v1/firefox.pdb/448794C699914DB8A8F9B9F88B98D7412/firefox.sym
.
In addition to finding symbols files and returning redirects, Tecken keeps
track of which files ending with .pdb
and .sym
that it couldn’t find.
These are known as “missing symbols”.
Try Builds¶
By default, when you request to download a symbol, Tecken will iterate through a list of available S3 configurations.
To download symbols that might be part of a Try build you have to pass an
optional query string key try
or you can prefix the URL with /try
.
For example:
$ curl --user-agent "example/1.0" https://symbols.mozilla.org/tried.pdb/HEX/tried.sym?try
...302 Found...
$ curl --user-agent "example/1.0" https://symbols.mozilla.org/try/tried.pdb/HEX/tried.sym
...302 Found...
If you specify that you’re requesting a try build, Tecken will look at all the S3 bucket locations as well as all the try locations in those S3 buckets.
Symbols from Try builds is always tried last! So if there’s a known symbol
called foo.pdb/HEX/foo.sym
and someone triggers a Try build (which uploads
its symbols) with the exact same name (and build ID) and even if you use
https://symbols.mozilla.org/foo.pdb/HEX/foo.sym?try
the existing (non-Try
build) symbol will be matched first.
Downloading API¶
- HEAD /<DEBUG_FILENAME>/<DEBUG_ID>/<SYMBOL_FILE>¶
Determine whether the symbol file exists or not.
- Request Headers
Debug –
if
true
, includes aDebug-Time
header in the response.If
Debug-Time
is 0.0`: symbol file ends in an unsupported extensionUser-Agent – please provide a unique user agent to make it easier for us to help you debug problems
- Query Parameters
try – use
try=1
to download Try symbols_refresh – use
_refresh=1
to force Tecken to look for the symbol file in the AWS S3 buckets and update the cachecode_id – the
code_id
from the module if anycode_filename – the
code_filename
from the module if any
- Status Codes
200 OK – symbol file exists
404 Not Found – symbol file does not exist
500 Internal Server Error – sleep for a bit and retry; if retrying doesn’t work, then please file a bug report
503 Service Unavailable – sleep for a bit and retry
- GET /<DEBUG_FILENAME>/<DEBUG_ID>/<SYMBOL_FILE>¶
Download a symbol file.
- Request Headers
Debug –
if
true
, includes aDebug-Time
header in the response.If
Debug-Time
is 0.0`: symbol file ends in an unsupported extensionUser-Agent – please provide a unique user agent to make it easier for us to help you debug problems
- Query Parameters
try – use
try=1
to download Try symbols_refresh – use
_refresh=1
to force Tecken to look for the symbol file in the AWS S3 buckets and update the cachecode_id – the
code_id
from the module if anycode_filename – the
code_filename
from the module if any
- Status Codes
302 Found – symbol file was found and the final url was returned as a redirect
400 Bad Request – requested symbol file has bad characters
404 Not Found – symbol file was not found
429 Too Many Requests – sleep for a bit and retry
500 Internal Server Error – sleep for a bit and retry; if retrying doesn’t work, then please file a bug report
503 Service Unavailable – sleep for a bit and retry
- HEAD /try/<DEBUG_FILENAME>/<DEBUG_ID>/<SYMBOL_FILE>¶
Same as
HEAD /<DEBUG_FILENAME>/<DEBUG_ID>/<SYMBOL_FILE>
, but for try symbols.
- GET /try/<DEBUG_FILENAME>/<DEBUG_ID>/<SYMBOL_FILE>¶
Same as
GET /<DEBUG_FILENAME>/<DEBUG_ID>/<SYMBOL_FILE>
, but for try symbols.
Missing symbols APIs¶
- GET /missingsymbols.csv¶
Download missing symbol information as a CSV.
Format:
debug_file,debug_id,code_file,code_id
- Request Headers
User-Agent – please provide a unique user agent to make it easier for us to help you debug problems
- Status Codes
200 OK – ok
429 Too Many Requests – sleep for a bit and retry
500 Internal Server Error – sleep for a bit and retry; if retrying doesn’t work, then please file a bug report
503 Service Unavailable – sleep for a bit and retry
- GET /missingsymbols/¶
Download missing symbol information.
For example:
curl --user-agent "example/1.0" \ 'https://symbols.mozilla.org/missingsymbols/?filename=libxul'
- Request Headers
User-Agent – please provide a unique user agent to make it easier for us to help you debug problems
- Query Parameters
symbol – (optional) the symbol to filter on by substring match
debugid – (optional) the debugid to filter on by substring match
filename – (optional) the filename to filter on by substring match
code_file – (optional) the code_file to filter on by substring match
code_id – (optional) the code_id to filter on by substring match
modified_at –
(optional) comma-separated date filters for modified_at timestamp
Valid comparisons:
<=
,>=
,=
,<
,>
Example:
modified_at=>=2020-09-01,<2020-09-02
(url-encodedmodified_at=%3E%3D=2020-09-01%2C%3C2020-09-02
)created_at –
(optional) comma-separated date filters for created_at timestamp
Valid comparisons:
<=
,>=
,=
,<
,>
Example:
created_at=>=2020-09-01,<2020-09-02
(url-encodedcreated_at=%3E%3D=2020-09-01%2C%3C2020-09-02
)sort – (optional) the field to sort by; defaults to
modified_at
reverse – (optional) if you want the sort reversed; defaults to
false
- Response Headers
Content-Type – application/json
- Response JSON Object
order_by (obj) –
sort specification
- sort (str)
the sort field
- reverse (bool)
whether or not it’s reversed
batch_size (int) – the number of records in a page
page (int) – the page being returned
total_count (int) – the total number of records in the query
records (array) –
the list of records where each record consists of
- id (int)
the record id
- symbol (str)
the debug symbol
- debugid (str)
the debug id
- filename (str)
the filename
- code_file (str)
the code_file or null
- code_id (str)
the code_id or null
- count (int)
how many times this symbol file was requested
- modified_at (timestamp)
the last time this symbol file was requested; iso8601 in UTC; YYYY-MM-DDThh:mm:ss.sssZ
- created_at (timestamp)
the first time this symbol file was requested; iso8601 in UTC; YYYY-MM-DDThh:mm:ss.sssZ
- Status Codes
200 OK – ok
400 Bad Request – request was invalid; fix and retry
429 Too Many Requests – sleep for a bit and retry
500 Internal Server Error – sleep for a bit and retry; if retrying doesn’t work, then please file a bug report
503 Service Unavailable – sleep for a bit and retry