c633cd0888
DirectUpload returns errors as strings, including an HTTP status and a file name (and without a stack trace). But Sentry groups issues according to the stack trace, and maybe the error message in last resort. So we have an issue: as all DirectUpload errors logged by Sentry are generated on the same line, with random-looking messages, Sentry groups them either too or too little aggressively. Instead of creating all the errors on the same line: - add some `if`s statements to create them on different lines (and so with different stack traces), - strip the file name from the error message. This allows Sentry to group the errors properly, with meaningful error messages.
22 lines
909 B
JavaScript
22 lines
909 B
JavaScript
// Convert an error message returned by DirectUpload to a proper error object.
|
|
//
|
|
// This function has two goals:
|
|
// 1. Remove the file name from the DirectUpload error message
|
|
// (because the filename confuses Sentry error grouping)
|
|
// 2. Create each kind of error on a different line
|
|
// (so that Sentry knows they are different kind of errors, from
|
|
// the line they were created.)
|
|
export default function errorFromDirectUploadMessage(message) {
|
|
let matches = message.match(/ Status: [0-9]{1,3}/);
|
|
let status = (matches && matches[0]) || '';
|
|
|
|
if (message.includes('Error creating')) {
|
|
return new Error('Error creating file.' + status);
|
|
} else if (message.includes('Error storing')) {
|
|
return new Error('Error storing file.' + status);
|
|
} else if (message.includes('Error reading')) {
|
|
return new Error('Error reading file.' + status);
|
|
} else {
|
|
return new Error(message);
|
|
}
|
|
}
|