Open pshirshov opened 11 months ago
By doing this we'd lose the guarantee that all our components are singleton and make things too complex / untraceable. As for reading from a role config instead of shared config, we could make this explicit:
makeRoleConfig[PostgresConfig](Role.id)("postgres")
Currently we may have effective role incompatibilities caused by the need in config variations. We may have a shared component S requiring config section C and two roles, R1 and R2. If these two roles need to have some value in C set to different/conflicting values we are screwed.
Current state
Currently we can only alleviate this problem by redesigning our application in order to avoid configuration conflicts.
For example:
Instead of having
We may write
Then we'll need a smart connection component which would reuse underlying connection for the same URIs.
Desired changes
We might automate this.
The key idea is simple:
We can definitely do the splits because we know that the graph has specific shape: generally there are NO dependencies between the roots.
I can't see a way to fit this into existing tracing pass, so probably this should be done as a separate pass which happens right after semigraph resolution.