Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Humanize some Catalyst errors #101

Merged
merged 3 commits into from
Dec 13, 2022
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 31 additions & 8 deletions task/runner.go
Original file line number Diff line number Diff line change
Expand Up @@ -471,6 +471,36 @@ func errorInfo(err error) *data.ErrorInfo {
return &data.ErrorInfo{Message: err.Error(), Unretriable: IsUnretriable(err)}
}

// Caller should check if err is a CatalystError first
func humanizeCatalystError(err error) error {
errMsg := strings.ToLower(err.Error())

// General errors
if strings.Contains(errMsg, "import request") && strings.Contains(errMsg, "504 Gateway Timeout") {
return errors.New("file could not be imported from URL because it was not accessible")
}

// MediaConvert pipeline errors
if strings.Contains(errMsg, "doesn't have video that the transcoder can consume") {
// TODO(yondonfu): Add link in this error message to a page with the input codec/container support matrix
return errors.New("invalid video file codec or container, check your input file against the input codec and container support matrix")
} else if strings.Contains(errMsg, "Failed probe/open") {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Notice that the error message is lowercased, so it will never match this. Needs to match against an all lowercase string instead.

Edit: realized that this came as a debt from the previous code that did these checks. I guess that has never worked 😯

// TODO(yondonfu): Add link in this error message to a page with the input codec/container support matrix
return errors.New("failed to probe or open file, check your input file against the input codec and container support matrix")
}

// Livepeer pipeline errors
if strings.Contains(errMsg, "unsupported input pixel format") {
return errors.New("unsupported input pixel format, must be 'yuv420p' or 'yuvj420p'")
} else if strings.Contains(errMsg, "Unsupported video input") {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same for casing

return errors.New("unsupported file format")
} else if strings.Contains(errMsg, "ReadPacketData File read failed - end of file hit") {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same

return errors.New("invalid video file, possibly truncated")
}

return errInternalProcessingError
}

func humanizeError(err error) error {
if err == nil {
return nil
Expand All @@ -479,14 +509,7 @@ func humanizeError(err error) error {

var catErr CatalystError
if errors.As(err, &catErr) {
if strings.Contains(errMsg, "unsupported input pixel format") {
return errors.New("unsupported input pixel format, must be 'yuv420p' or 'yuvj420p'")
} else if strings.Contains(errMsg, "Unsupported video input") {
return errors.New("unsupported file format")
} else if strings.Contains(errMsg, "ReadPacketData File read failed - end of file hit") {
return errors.New("invalid video file, possibly truncated")
}
return errInternalProcessingError
return humanizeCatalystError(err)
}

if strings.Contains(errMsg, "unexpected eof") {
Expand Down