You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@brooklyn.apache.org by "Alex Heneveld (JIRA)" <ji...@apache.org> on 2016/12/02 10:02:58 UTC
[jira] [Commented] (BROOKLYN-329) $brooklyn:config hangs, rather
than getting default brooklyn.parameter value
[ https://issues.apache.org/jira/browse/BROOKLYN-329?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15714672#comment-15714672 ]
Alex Heneveld commented on BROOKLYN-329:
----------------------------------------
The test above seems to hang and that makes sense. We say
brooklyn.config: { my.param.key: $brooklyn:scopeRoot().config(\"my.param.key\") }
The `scopeRoot` does nothing, correctly as I understand it: the parent, ie the Application, does not have the same catalog item ID, so it returns the child entity. (It only make sense to see runtime instances; I think the bug report's claim it returns `entity-with-tests` (meaning `entity-with-keys` ?) is mistaken.)
Essentially we are saying that . `my.param.key` should be resolved to the value of `my.param.key`, ie setting up an infinite loop of tasks and making the system crap out.
So concretely:
1) clarify what the test is meant to do; I think it wants to remove the brooklyn.config from wrapper-entity ? such a test passes for me (with the changes in #440 and #462, probably the former) and suggests the original bug reported here is fixed ?
2) test for recursive references in config evaluation and throw an exception (add task tags? traverse parent tasks?) -- it's a nasty issue to debug otherwise
[~aled.sage] does that sound right?
> $brooklyn:config hangs, rather than getting default brooklyn.parameter value
> ----------------------------------------------------------------------------
>
> Key: BROOKLYN-329
> URL: https://issues.apache.org/jira/browse/BROOKLYN-329
> Project: Brooklyn
> Issue Type: Bug
> Reporter: Aled Sage
> Priority: Minor
>
> Using 0.10.0-SNAPSHOT...
> I wrote a YAML entity where CouchDB was configured with an initial username/password, and another app that included CouchDB would inject it.
> In each blueprint, I defined a brooklyn.parameter with a default value for the username/password. I used the same config key name in each.
> However, when I ran my blueprint it hung. The CouchDB was waiting forever for the username/password config value.
> I recreated this behaviour in the simpler test case below (which I'll add to {{ConfigParametersYamlTest}}).
> The workaround is to use a different name for the config key in each blueprint. For example, in the outer blueprint above if youchange the name to {{my.param.key2}} then the test passes.
> Debugging it, one surprising thing I noticed is that {{scopeRoot()}} evaluates to be "entity-with-tests" rather than {{wrapper-entity}}.
> {noformat}
> public void testConfigParameterPassedFromOuterConfigParameter() throws Exception {
> addCatalogItems(
> "brooklyn.catalog:",
> " itemType: entity",
> " items:",
> " - id: entity-with-keys",
> " item:",
> " type: "+TestEntity.class.getName(),
> " brooklyn.parameters:",
> " - name: my.param.key",
> " type: string",
> " default: myDefaultVal",
> " brooklyn.config:",
> " my.other.key: $brooklyn:config(\"my.param.key\")");
> addCatalogItems(
> "brooklyn.catalog:",
> " itemType: entity",
> " items:",
> " - id: wrapper-entity",
> " item:",
> " brooklyn.parameters:",
> " - name: my.param.key",
> " type: string",
> " default: myDefaultValInOuter",
> " type: entity-with-keys",
> " brooklyn.config:",
> " my.param.key: $brooklyn:scopeRoot().config(\"my.param.key\")");
>
> String yaml = Joiner.on("\n").join(
> "services:",
> "- type: wrapper-entity");
>
> Entity app = createStartWaitAndLogApplication(yaml);
> final TestEntity entity = (TestEntity) Iterables.getOnlyElement(app.getChildren());
> Asserts.assertReturnsEventually(new Runnable() {
> public void run() {
> assertEquals(entity.config().get(ConfigKeys.newStringConfigKey("my.other.key")), "myDefaultValInOuter");
> }},
> Asserts.DEFAULT_LONG_TIMEOUT);
> }
> {noformat}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)