Comments (2)
I've started taking a jab at this, I've identified a few more problems that I didn't see before:
- There's a lot of type information lost in the current error handling. When handling. Each time an error type is converted using the
?
operator, it is converted into a string. In my local draft, I've fixed this by having a big enum with the types to convert from kept in variants. All theFrom
impls are generated bythiserror
- Context for errors is kept in the same String as the error itself, by using a
prefix
method, which prepends a string to the error message itself. This means that even with the changes I've made before, when using theprefix
method, I have to convert the error to a generic string error type, loosing the type information again. There's crates specialized on adding context to errors, likeanyhow
. - There's a gigantic amount of error sources that all get dumped into a flat error type. I'd think it would make sure to restructure this a bit and split them into a few smaller error types, similar to what we already have for AcmeError and HttpError, but to extend that to also add a few errors for stuff like config loading etc.
So, now with a bit of my findings documented, there's just one question I have: Do we want to keep type information of the errors we're wrapping? If so, the approach with thiserror
I've started with sounds like a sensible option to me, but it's a lot more work to structure it properly. If not, we can get rid of nearly all of the error handling code if we just switch to anyhow.
from acmed.
Regarding the commit that just landed on main last night (e9522df), I think it'd make sense to push changes to a branch and open a PR, even when working on your own projects. This gives people the opportunity to provide feedback before things land on main, and it allows the CI to run, catching things one might have missed locally, such as the MSRV increase in df40cde.
from acmed.
Related Issues (20)
- Random failure in podman deployment HOT 3
- Cargo.lock not updated/committed for 0.22.0 HOT 3
- Make {{proof}} available in base64url format, for challenge-tls-alpn-01. HOT 6
- Support for ARI (ACME Renewal Information)
- Runtime failure on 32-bit platforms on musl 1.2.0+ HOT 4
- Allow for not using any pidfile HOT 2
- Lock the dependencies by committing the Cargo.lock HOT 1
- Compliance with Let's Encrypt Integration Guide HOT 9
- Use more external crates HOT 3
- Include config directories HOT 1
- Scheduling renewals
- Exponential backoff for retrying renewals
- Certificate meta-information file HOT 1
- Functional/integration testing
- Fine grained rate-limits HOT 2
- Exposing prometheus/opentelemetry compatible metrics.
- Don't create a new http client/session on each request
- Expose file paths of cert and private key to post-operation hook
- Stop using a deprecated function when creating a certificate in tacd
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from acmed.