Martin Harris created BROOKLYN-171:
--------------------------------------

             Summary: 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)

Reply via email to