-
-
Notifications
You must be signed in to change notification settings - Fork 4
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
Restructure configuration mechanism #89
Conversation
Not necessarily "atomic binding", but by making a two-step process we can first verify the configuration provider (and perform some meta-configuration, i.e. the file watcher option in yaml) before returning to the manager that it should be initialized, so we only initialize those that are correctly instantiated. |
On the meta-configuration level: It is not the manager's responsibility to figure out which provider should be added. It's the provider's own responsibility. For example, if no yaml configuraiton file exists, the provider will report false back to the manager and should not be initialized. |
- Using alpine should yield faster runs as it's smaller; - Using jdk 21 is the first step towards bumping the requirement,
This should allow for a simpler management and easier collaboration.
So we can verify that a project fully runs and all the lifecycle works.
With this commit the yaml config module now requires to have one of the three dependencies so it can properly read the yaml configuration. More libraries should come but those three are arguably the most popular ones for now so it makes sense to allow for something that the users might be already using.
This should allow for more granular control over the flags of each module. Additionally, we are officially bumping the dependency requirement to JDK21, so this implies bumping to a new 0.8.x branch
The old configuration mechanism is effectively replaced by the new one. This allows us to remove a lot of unnecessary methods, classes and interfaces and the penna-dev project. The latter had two different justifications for being developed in the first place: - Allow for a development-runtime that shows up the logs in human-readable format. That can be much more effectively be replaced by fblog or other alternatives, so it doesn't stand on its own here; - Allow for runtime level tweaking, so tests can change the verbosity of the logs if necessary. This is effectively replaced by the new config interfaces, so that in itself also doesn't sustain a strong reason for maintaining this module. Therefore, it is better to remove it not to bloat penna, so the surface can remain small and the focus can be on the important features.
Any further cleanups should happen in a subsequent PR as this one scope creeped a bit and is gigantic already. |
This is a new take on the configuration mechanism. This is PR also changes the required JDK version to 21, effectively bumping Penna out of the 0.7.x branch.
It proposes a few fundamental changes:
Tasks needed on this PR before merging:
Desirable/Maybe in a follow-up PR: