[POC] Attempt to use data and auth as stack providers for function. This won't work. #1983
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Problem
Certain usage patterns of functions end up with
Caused By: ❌ Deployment failed: Error [ValidationError]: Circular dependency between resources:
.This happens is scenarios where it could have been avoided. Just because we pack all functions into same stack and therefore coupling them together.
Changes
This PR is a failed attempt to make
auth
anddata
a "donor" of stack/scope.At some point I realized that such design will be deemed to fail in generic case.
I.e. it would create cyclic compile time problem, where writing an elegant code that would compile is just impossible.
See here.
This perhaps could be further explored by adding "post defineX" APIs. I.e. by exposing additional mutators on construct factories (like
func.useScopeOf(data)
or so).Validation
There are two test projects used to reproduce the original problem:
test-projects/function-stack-1
test-projects/function-stack-2
Both deployed successfully with new setting.
Checklist
run-e2e
label set.By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.