This PR introduces an additional layer for the key value store that can
keep global information. This is another step in preparation for
introducing support for database storage which will have connection
pools and such that are shared system-wide.
Since this storage system isn’t actually used yet, the PR for now is
just a massive refactoring and does not introduce any functional
changes.
This PR makes the storage_uri (aliased as data_dir) config option
mandatory and drops both it being read from an environment variable or
defaulting to ./data. Because of this, this is a breaking change.
This PR refactors how requests are processed in Krill. It creates a
clear distinction between the HTTP server running async on a Tokio
runtime and the core of Krill running as regular sync code on a thread
pool.
This means that those portions of the core that were previously async,
notable the HTTP requests to remote parents and publishers, end up
blocking a thread now. For most things this should be fine. For
potentially long-running tasks, we have a separate thread pool so they
won’t block all of Krill.
This PR fixes a bug introduced in 0.15.0 where CAs do to not clear
fulfilled certification requests causing them to re-request a
certificate every time they contact their parent.