-
Notifications
You must be signed in to change notification settings - Fork 291
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
WIP: Reduce Explosion of Aya Error Types #1061
base: main
Are you sure you want to change the base?
Conversation
❌ Deploy Preview for aya-rs-docs failed.
|
Hey @alessandrod, this pull request changes the Aya Public API and requires your review. |
I have been down a rabbit hole of cleaning up the aya error types 😅 Most of the important changes are in `errors.rs`. TL;DR Current exposed types are: - `EbpfError` - `ProgramError` - `MapError` - `LinkError` - `PerfBufferError` - `SysError` Honestly I'm still thinking about how we could collapse those types. Either into a single type, or at least fewer than we expose today. Within each of those types, I've tried to remove any invariants that don't have any business being public (e.g if a syscall fails with -EINVAL, there is nothing at runtime you can do about it other than bailing). 👆 (and the spaghetti of errors depending on other errors) are replaced by an `Other` invariant that's a Box<dyn std::error::Error>. There are still some `pub(crate) XInternalError` types, but these are used only to make nice error messages. This could plausibly be replaced with anyhow/context etc.. But I've left it as-is for now. Signed-off-by: Dave Tucker <dave@dtucker.co.uk>
cb72b70
to
e899c8e
Compare
I was wondering if the errors from |
Good call! I missed those on the first pass through. |
@dave-tucker, this pull request is now in conflict and requires a rebase. |
I have been down a rabbit hole of cleaning up the aya error types 😅
Most of the important changes are in
errors.rs
.TL;DR
Current exposed types are:
EbpfError
ProgramError
MapError
LinkError
PerfBufferError
SysError
Honestly I'm still thinking about how we could collapse those types.
Either into a single type, or at least fewer than we expose today.
Within each of those types, I've tried to remove any invariants
that don't have any business being public (e.g if a syscall fails
with -EINVAL, there is nothing at runtime you can do about it
other than bailing).
👆 (and the spaghetti of errors depending on other errors) are
replaced by an
Other
invariant that's aBox<dyn std::error::Error>
.There are still some
pub(crate) XInternalError
types, but theseare used only to make nice error messages. This could plausibly be
replaced with anyhow/context etc.. But I've left it as-is for now.
This change is