[ 
https://issues.apache.org/jira/browse/BROOKLYN-171?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14738724#comment-14738724
 ] 

Alex Heneveld commented on BROOKLYN-171:
----------------------------------------

Two thoughts:

1.  Can you combine `producer` and `sensorMapping` to get this done with one 
propagator?  (Or could propagator easily be changed so this is the case.)

2. Why on earth does this run so much?  I'm guessing something there is a 
cyclic dependency in sensor enrichers.  This isn't hard to do but in this case 
it looks like there is a bug.  Would be worth introducing a call chain (or 
maybe there is the start of one?) for subscriptions so we can log at some large 
depth and explore the cycle, and terminate eventually, because it is nasty to 
debug (and is an exploit in YAML-space).  And then of course fix the bug 
causing it in this case.


> Mapping propagated sensor causes excessive CPU load
> ---------------------------------------------------
>
>                 Key: BROOKLYN-171
>                 URL: https://issues.apache.org/jira/browse/BROOKLYN-171
>             Project: Brooklyn
>          Issue Type: Bug
>            Reporter: Martin Harris
>
> Mapping a propagated sensor using a second propagator will cause excessive 
> CPU load, and the sensor will fail to propagate. This can be demonstrated 
> using the following YAML:
> {noformat}
> location: localhost
> services:
> - type: org.apache.brooklyn.entity.stock.BasicApplication
>   brooklyn.children:
>   - type: org.apache.brooklyn.entity.software.base.EmptySoftwareProcess
>     id: childid
>   brooklyn.enrichers:
>   - type: org.apache.brooklyn.enricher.stock.Propagator
>     brooklyn.config:
>       producer: $brooklyn:component("child", "childid")
>       propagating:
>       - $brooklyn:sensor("host.name")
>   - type: org.apache.brooklyn.enricher.stock.Propagator
>     brooklyn.config:
>       sensorMapping:
>         $brooklyn:sensor("host.name"): $brooklyn:sensor("host")
> {noformat}
> Running this YAML will cause CPU load on my machine to run to around 600% 
> CPU, and cause the Brooklyn console to become unresponsive. The specs of my 
> machine are as follows:
>   Model Name: MacBook Pro
>   Model Identifier:   MacBookPro11,3
>   Processor Name:     Intel Core i7
>   Processor Speed:    2.8 GHz
>   Number of Processors:       1
>   Total Number of Cores:      4
>   L2 Cache (per Core):        256 KB
>   L3 Cache:   6 MB
>   Memory:     16 GB
> *Context (aka 'Why would you ever want to do this??')*:
> The Redis cluster propagates the hostname of the master RedisStore up to the 
> cluster level [1]. We then added (in the YAML) a propagator with 
> `sensorMapping` to map the sensor `host.name` to `host` in order for it to be 
> consumed by a third party application (CloudFoundry via the 
> Brooklyn-Service-Broker[2])
> In this scenario (i.e. Redis, deploying to AWS from a rBrooklyn server), the 
> server web interface becomes completely unresponsive until the Brooklyn 
> process is terminated and restarted
> [1]: 
> https://github.com/apache/incubator-brooklyn/blob/6f15e8a6d61c2e648547cf7faba03fbc06716421/software/nosql/src/main/java/org/apache/brooklyn/entity/nosql/redis/RedisClusterImpl.java#L73-L76
> [2]: https://github.com/cloudfoundry-incubator/brooklyn-service-broker



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to