Uploaded image for project: 'Brooklyn'
  1. Brooklyn
  2. BROOKLYN-171

Mapping propagated sensor causes excessive CPU load

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • None
    • 0.9.0
    • None

    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

      Attachments

        Activity

          People

            Unassigned Unassigned
            nakomis Martin Harris
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: