Skip to content

Exceptions collecting container.stats.memory.percent and container.stats.cpu.percent #379

@aledsage

Description

@aledsage

In the logs, I see the two exceptions shown below:

2016-10-25 21:50:16,015 WARN  117 o.a.b.c.f.AttributePollHandler [r-NmGPUwnZ-30374] unable to compute VanillaSoftwareProcessImpl{id=cb3pwep5pc}->Sensor: container.stats.memory.percent (java.lang.Double); on val=org.apache.brooklyn.feed.ssh.SshPollValue@1df4a1b0
org.apache.brooklyn.util.javalang.coerce.ClassCoercionException: Cannot coerce "70   0.00%" to java.lang.Double (70   0.00%): adapting failed
        at org.apache.brooklyn.util.javalang.coerce.PrimitiveStringTypeCoercions.stringToPrimitive(PrimitiveStringTypeCoercions.java:202)[140:org.apache.brooklyn.utils-common:0.10.0.20161011_2234]
        at org.apache.brooklyn.util.javalang.coerce.PrimitiveStringTypeCoercions.tryCoerce(PrimitiveStringTypeCoercions.java:47)[140:org.apache.brooklyn.utils-common:0.10.0.20161011_2234]
        at org.apache.brooklyn.util.javalang.coerce.TypeCoercerExtensible.tryCoerceInternal(TypeCoercerExtensible.java:131)[140:org.apache.brooklyn.utils-common:0.10.0.20161011_2234]
        at org.apache.brooklyn.util.javalang.coerce.TypeCoercerExtensible.tryCoerce(TypeCoercerExtensible.java:107)[140:org.apache.brooklyn.utils-common:0.10.0.20161011_2234]
        at org.apache.brooklyn.util.javalang.coerce.TypeCoercerExtensible.coerce(TypeCoercerExtensible.java:97)[140:org.apache.brooklyn.utils-common:0.10.0.20161011_2234]
        at org.apache.brooklyn.util.javalang.coerce.TypeCoercerExtensible.coerce(TypeCoercerExtensible.java:93)[140:org.apache.brooklyn.utils-common:0.10.0.20161011_2234]
        at org.apache.brooklyn.util.core.flags.TypeCoercions.coerce(TypeCoercions.java:79)[117:org.apache.brooklyn.core:0.10.0.20161011_2234]
        at org.apache.brooklyn.core.sensor.ssh.SshCommandSensor$3.apply(SshCommandSensor.java:130)[117:org.apache.brooklyn.core:0.10.0.20161011_2234]
        at org.apache.brooklyn.core.sensor.ssh.SshCommandSensor$3.apply(SshCommandSensor.java:127)[117:org.apache.brooklyn.core:0.10.0.20161011_2234]
        at com.google.common.base.Functions$FunctionComposition.apply(Functions.java:211)[67:com.google.guava:16.0.1]
        at org.apache.brooklyn.core.feed.AttributePollHandler.transformValueOnSuccess(AttributePollHandler.java:114)[117:org.apache.brooklyn.core:0.10.0.20161011_2234]
        at org.apache.brooklyn.core.feed.AttributePollHandler.onSuccess(AttributePollHandler.java:101)[117:org.apache.brooklyn.core:0.10.0.20161011_2234]
        at org.apache.brooklyn.core.feed.DelegatingPollHandler.onSuccess(DelegatingPollHandler.java:51)[117:org.apache.brooklyn.core:0.10.0.20161011_2234]
        at org.apache.brooklyn.core.feed.Poller$PollJob$1.run(Poller.java:78)[117:org.apache.brooklyn.core:0.10.0.20161011_2234]
        at org.apache.brooklyn.core.feed.Poller$1$1.call(Poller.java:156)[117:org.apache.brooklyn.core:0.10.0.20161011_2234]
        at org.apache.brooklyn.core.feed.Poller$1$1.call(Poller.java:149)[117:org.apache.brooklyn.core:0.10.0.20161011_2234]
        at org.apache.brooklyn.util.core.task.DynamicSequentialTask$DstJob.call(DynamicSequentialTask.java:359)[117:org.apache.brooklyn.core:0.10.0.20161011_2234]
        at org.apache.brooklyn.util.core.task.BasicExecutionManager$ScheduledTaskCallable$1.call(BasicExecutionManager.java:436)[117:org.apache.brooklyn.core:0.10.0.20161011_2234]
        at org.apache.brooklyn.util.core.task.BasicExecutionManager$SubmissionCallable.call(BasicExecutionManager.java:519)[117:org.apache.brooklyn.core:0.10.0.20161011_2234]
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)[:1.8.0_101]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)[:1.8.0_101]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)[:1.8.0_101]
        at java.lang.Thread.run(Thread.java:745)[:1.8.0_101]


2016-11-10 19:06:31,400 WARN  117 o.a.b.c.f.AttributePollHandler [-NmGPUwnZ-229662] unable to compute VanillaSoftwareProcessImpl{id=q9wq6umn7m}->Sensor: container.stats.cpu.percent (java.lang.Double); on val=org.apache.brooklyn.feed.ssh.SshPollValue@66242ba5
org.apache.brooklyn.util.javalang.coerce.ClassCoercionException: Cannot coerce "205b7205497b8f7887f5" to java.lang.Double (205b7205497b8f7887f5): adapting failed
        at org.apache.brooklyn.util.javalang.coerce.PrimitiveStringTypeCoercions.stringToPrimitive(PrimitiveStringTypeCoercions.java:202)[140:org.apache.brooklyn.utils-common:0.10.0.20161011_2234]
        at org.apache.brooklyn.util.javalang.coerce.PrimitiveStringTypeCoercions.tryCoerce(PrimitiveStringTypeCoercions.java:47)[140:org.apache.brooklyn.utils-common:0.10.0.20161011_2234]
        at org.apache.brooklyn.util.javalang.coerce.TypeCoercerExtensible.tryCoerceInternal(TypeCoercerExtensible.java:131)[140:org.apache.brooklyn.utils-common:0.10.0.20161011_2234]
        at org.apache.brooklyn.util.javalang.coerce.TypeCoercerExtensible.tryCoerce(TypeCoercerExtensible.java:107)[140:org.apache.brooklyn.utils-common:0.10.0.20161011_2234]
        at org.apache.brooklyn.util.javalang.coerce.TypeCoercerExtensible.coerce(TypeCoercerExtensible.java:97)[140:org.apache.brooklyn.utils-common:0.10.0.20161011_2234]
        at org.apache.brooklyn.util.javalang.coerce.TypeCoercerExtensible.coerce(TypeCoercerExtensible.java:93)[140:org.apache.brooklyn.utils-common:0.10.0.20161011_2234]
        at org.apache.brooklyn.util.core.flags.TypeCoercions.coerce(TypeCoercions.java:79)[117:org.apache.brooklyn.core:0.10.0.20161011_2234]
        at org.apache.brooklyn.core.sensor.ssh.SshCommandSensor$3.apply(SshCommandSensor.java:130)[117:org.apache.brooklyn.core:0.10.0.20161011_2234]
        at org.apache.brooklyn.core.sensor.ssh.SshCommandSensor$3.apply(SshCommandSensor.java:127)[117:org.apache.brooklyn.core:0.10.0.20161011_2234]
        at com.google.common.base.Functions$FunctionComposition.apply(Functions.java:211)[67:com.google.guava:16.0.1]
        at org.apache.brooklyn.core.feed.AttributePollHandler.transformValueOnSuccess(AttributePollHandler.java:114)[117:org.apache.brooklyn.core:0.10.0.20161011_2234]
        at org.apache.brooklyn.core.feed.AttributePollHandler.onSuccess(AttributePollHandler.java:101)[117:org.apache.brooklyn.core:0.10.0.20161011_2234]
        at org.apache.brooklyn.core.feed.DelegatingPollHandler.onSuccess(DelegatingPollHandler.java:51)[117:org.apache.brooklyn.core:0.10.0.20161011_2234]
        at org.apache.brooklyn.core.feed.Poller$PollJob$1.run(Poller.java:78)[117:org.apache.brooklyn.core:0.10.0.20161011_2234]
        at org.apache.brooklyn.core.feed.Poller$1$1.call(Poller.java:156)[117:org.apache.brooklyn.core:0.10.0.20161011_2234]
        at org.apache.brooklyn.core.feed.Poller$1$1.call(Poller.java:149)[117:org.apache.brooklyn.core:0.10.0.20161011_2234]
        at org.apache.brooklyn.util.core.task.DynamicSequentialTask$DstJob.call(DynamicSequentialTask.java:359)[117:org.apache.brooklyn.core:0.10.0.20161011_2234]
        at org.apache.brooklyn.util.core.task.BasicExecutionManager$ScheduledTaskCallable$1.call(BasicExecutionManager.java:436)[117:org.apache.brooklyn.core:0.10.0.20161011_2234]
        at org.apache.brooklyn.util.core.task.BasicExecutionManager$SubmissionCallable.call(BasicExecutionManager.java:519)[117:org.apache.brooklyn.core:0.10.0.20161011_2234]
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)[:1.8.0_101]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)[:1.8.0_101]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)[:1.8.0_101]
        at java.lang.Thread.run(Thread.java:745)[:1.8.0_101]

This tells us that the bash below (from https://github.com/brooklyncentral/clocker/blob/master/common/catalog/docker/docker.bom#L543-L562) is incorrect - i.e. the cut commands are picking up the wrong characters. It looks really brittle. I'd have though we should split it on the separator, rather than looking for a specific character range.

        - type: org.apache.brooklyn.core.sensor.ssh.SshCommandSensor
          brooklyn.config:
            name: container.stats.cpu.percent
            period: 1m
            targetType: double
            command: |
              test -f pid.txt &&
                ( docker stats --no-stream $(cat pid.txt) |
                  tail -n +2 |
                  cut -c21-40 )
        - type: org.apache.brooklyn.core.sensor.ssh.SshCommandSensor
          brooklyn.config:
            name: container.stats.memory.percent
            period: 1m
            targetType: double
            command: |
              test -f pid.txt &&
                ( docker stats --no-stream $(cat pid.txt) |
                  tail -n +2 |
                  cut -c63-82 )

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions