Current implementation of syncman has multiple issues like:
Several deadlocks are present which can cause SC to freeze
Config management in all modules is not declarative which makes each module more prone to bugs
How can we solve it?
Migrate the core config management module to caddy.
Here's how we will go about:
All our Providers (database / rpc / graphql) will be caddy apps.
Each app will handle it's own Provisioning and CleanUp phases. Caddy will be resposible to call the appropriate hooks as and when config changes. Caddy also has built in helpers to create stickly objects for things like database connections to prevent reloading them on every config change.
Each provider will provide a specific piece of functionality like GraphQL Engine, Database & `RPC.
All configuration objects (Sources) will be caddy modules belonging to the Source Manager App.
Each source is a caddy module in the source namespace. The Source Manager app will be responsible to:
1. Provision the source (E.g. initialise a database driver)
2. Distribute the source objects to the applicable providers. A source will define which providers it is meant for and will have to implement the appropriate interfaces that the provider requires.
If you want this feature to be implemented, give it a thumbs up reaction, so that we can determine which features are important to you.
👍
The problem faced currently?
Current implementation of syncman has multiple issues like:
How can we solve it?
Migrate the core config management module to caddy.
Here's how we will go about:
All our
Providers
(database / rpc / graphql) will be caddyapps
.Each app will handle it's own
Provisioning
andCleanUp
phases. Caddy will be resposible to call the appropriate hooks as and when config changes. Caddy also has built in helpers to create stickly objects for things like database connections to prevent reloading them on every config change.Each provider will provide a specific piece of functionality like
GraphQL Engine
,Database
& `RPC.All configuration objects (
Sources
) will be caddymodules
belonging to theSource Manager
App.Each source is a caddy module in the
source
namespace. TheSource Manager
app will be responsible to: