[
https://issues.apache.org/jira/browse/BROOKLYN-171?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Martin Harris updated BROOKLYN-171:
-----------------------------------
Description:
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:
{{
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")
}}
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
was:
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:
```
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")
```
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
> 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:
> {{
> 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")
> }}
> 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)