You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When S3VersionResolver calls a key (S3_Bucket) on a ResolvableProperty (sceptre_user_data) sceptre will enter into a recursion and fail. If the Resolver that is called is called does not reference a ResolvableProperty then sceptre will execute normally.
Suggested fix
It won't be ideal, but adding a class that stores the global state of all ResolvableProperties by namespace would probably solve this issue. When a ResolvableProperty is called it will first check the cache for the state.
States:
"unresolved"
"resolving"
"resolved"
If "resolved" the value will be used from the cache. Else trigger the property to be resolved ("unresolved" -> "resolving") or wait for the value to be resolved ("resolving" -> "resolved").
We could/should additionally add an option for users to update/skip the cache so that the value is fresh each time.
There is a good chance we will need to add a DAG to manage the dependencies of Resolvers so that we don't have circular dependencies between ResolvableProperties.
The text was updated successfully, but these errors were encountered:
Resolving Stack.sceptre_user_data for the first time could explode the
stack if a resolver contained a reference to .sceptre_user_data.
The fix introduces a 2-pass resolution of that property to avoid the
problem.
Resolving Stack.sceptre_user_data for the first time could explode the
stack if a resolver contained a reference to .sceptre_user_data.
The fix introduces a 2-pass resolution of that property to avoid the
problem.
Resolving Stack.sceptre_user_data for the first time could explode the
stack if a resolver contained a reference to .sceptre_user_data.
The fix introduces a 2-pass resolution of that property to avoid the
problem.
Resolving Stack.sceptre_user_data for the first time could explode the
stack if a resolver contained a reference to .sceptre_user_data.
The fix introduces a 2-pass resolution of that property to avoid the
problem.
Context
Given a stack
bundle/b/y.yaml
When
S3Version
Resolver
calls a key (S3_Bucket) on aResolvableProperty
(sceptre_user_data) sceptre will enter into a recursion and fail. If theResolver
that is called is called does not reference aResolvableProperty
then sceptre will execute normally.Suggested fix
It won't be ideal, but adding a class that stores the global state of all
ResolvableProperties
by namespace would probably solve this issue. When aResolvableProperty
is called it will first check the cache for the state.States:
"unresolved"
"resolving"
"resolved"
If "resolved" the value will be used from the cache. Else trigger the property to be resolved ("unresolved" -> "resolving") or wait for the value to be resolved ("resolving" -> "resolved").
Would result in a object like
We could/should additionally add an option for users to update/skip the cache so that the value is fresh each time.
There is a good chance we will need to add a DAG to manage the dependencies of
Resolvers
so that we don't have circular dependencies betweenResolvableProperties
.The text was updated successfully, but these errors were encountered: