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

ASF GitHub Bot commented on BROOKLYN-268:
-----------------------------------------

GitHub user aledsage opened a pull request:

    https://github.com/apache/brooklyn-server/pull/140

    Fix BROOKLYN-268: DynamicCluster on-fire when initially empty

    Fixes `DynamicClusterTest.testServiceUpAfterStartingWithNoMembers`

You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/aledsage/brooklyn-server BROOKLYN-268

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/brooklyn-server/pull/140.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #140
    
----
commit 293448c6cf84b7842640b6c68253ef8c0df976d6
Author: Aled Sage <[email protected]>
Date:   2016-05-17T14:23:18Z

    Fix BROOKLYN-268: DynamicCluster on-fire when initially empty

----


> DynamicClusterTest.testServiceUpAfterStartingWithNoMembers failing
> ------------------------------------------------------------------
>
>                 Key: BROOKLYN-268
>                 URL: https://issues.apache.org/jira/browse/BROOKLYN-268
>             Project: Brooklyn
>          Issue Type: Bug
>            Reporter: Aled Sage
>            Priority: Minor
>
> The test {{DynamicClusterTest.testServiceUpAfterStartingWithNoMembers}} is 
> failing for me locally with 0.10.0-SNAPSHOT (exception below).
> {noformat}
> FAILED: testServiceUpAfterStartingWithNoMembers
> org.apache.brooklyn.util.exceptions.PropagatedRuntimeException: failed 
> succeeds-eventually, 69 attempts, 30003ms elapsed: AssertionError: 
> entity=DynamicClusterImpl{id=odZv4xRV}; attribute=Sensor: service.state 
> (org.apache.brooklyn.core.entity.lifecycle.Lifecycle) expected [running] but 
> found [on-fire]
>       at 
> org.apache.brooklyn.util.exceptions.Exceptions.propagate(Exceptions.java:164)
>       at 
> org.apache.brooklyn.util.exceptions.Exceptions.propagateAnnotated(Exceptions.java:144)
>       at org.apache.brooklyn.test.Asserts.succeedsEventually(Asserts.java:963)
>       at org.apache.brooklyn.test.Asserts.succeedsEventually(Asserts.java:854)
>       at 
> org.apache.brooklyn.core.entity.EntityAsserts.assertAttributeEqualsEventually(EntityAsserts.java:67)
>       at 
> org.apache.brooklyn.core.entity.EntityAsserts.assertAttributeEqualsEventually(EntityAsserts.java:62)
>       at 
> org.apache.brooklyn.entity.group.DynamicClusterTest.testServiceUpAfterStartingWithNoMembers(DynamicClusterTest.java:172)
>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>       at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>       at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>       at java.lang.reflect.Method.invoke(Method.java:606)
>       at 
> org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:84)
>       at org.testng.internal.Invoker.invokeMethod(Invoker.java:714)
>       at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:901)
>       at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1231)
>       at 
> org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:127)
>       at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:111)
>       at org.testng.TestRunner.privateRun(TestRunner.java:767)
>       at org.testng.TestRunner.run(TestRunner.java:617)
>       at org.testng.SuiteRunner.runTest(SuiteRunner.java:348)
>       at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:343)
>       at org.testng.SuiteRunner.privateRun(SuiteRunner.java:305)
>       at org.testng.SuiteRunner.run(SuiteRunner.java:254)
>       at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
>       at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
>       at org.testng.TestNG.runSuitesSequentially(TestNG.java:1224)
>       at org.testng.TestNG.runSuitesLocally(TestNG.java:1149)
>       at org.testng.TestNG.run(TestNG.java:1057)
>       at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:115)
>       at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:207)
>       at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:178)
> Caused by: java.lang.AssertionError: entity=DynamicClusterImpl{id=odZv4xRV}; 
> attribute=Sensor: service.state 
> (org.apache.brooklyn.core.entity.lifecycle.Lifecycle) expected [running] but 
> found [on-fire]
>       at org.apache.brooklyn.test.Asserts.fail(Asserts.java:721)
>       at org.apache.brooklyn.test.Asserts.failNotEquals(Asserts.java:114)
>       at org.apache.brooklyn.test.Asserts.assertEquals(Asserts.java:436)
>       at 
> org.apache.brooklyn.core.entity.EntityAsserts.assertAttributeEquals(EntityAsserts.java:54)
>       at 
> org.apache.brooklyn.core.entity.EntityAsserts$1.run(EntityAsserts.java:70)
>       at 
> org.apache.brooklyn.test.Asserts$RunnableAdapter.call(Asserts.java:1277)
>       at org.apache.brooklyn.test.Asserts.succeedsEventually(Asserts.java:930)
>       ... 28 more
> {noformat}
> Running the test with logging at trace, and searching for {{service.isUp}}, I 
> see the logging below:
> {noformat}
> 2016-05-17 15:14:03,135 TRACE o.a.b.c.entity.AbstractEntity 
> [brooklyn-execmanager-RRpMDRbG-0]: DynamicClusterImpl{id=UQli154h} 
> setAttribute Sensor: service.isUp (java.lang.Boolean) true
> 2016-05-17 15:14:03,137 TRACE o.a.b.u.c.task.ValueResolver 
> [brooklyn-execmanager-RRpMDRbG-0]: ValueResolver[Object Sensor: service.isUp 
> (java.lang.Boolean)] evaluated as Present[value=Sensor: service.isUp 
> (java.lang.Boolean)]
> 2016-05-17 15:14:03,138 TRACE o.a.b.u.c.task.ValueResolver 
> [brooklyn-execmanager-RRpMDRbG-0]: ValueResolver[Sensor Sensor: service.isUp 
> (java.lang.Boolean)] evaluated as Present[value=Sensor: service.isUp 
> (java.lang.Boolean)]
> 2016-05-17 15:14:03,173 DEBUG o.a.b.c.m.i.LocalSubscriptionManager [main]: 
> Creating subscription iJMHeDc3 for DynamicClusterImpl{id=UQli154h} on 
> DynamicClusterImpl{id=UQli154h} Sensor: service.isUp (java.lang.Boolean) in 
> SubscriptionContext(huqO8)
> 2016-05-17 15:14:03,174 DEBUG o.a.b.c.m.i.LocalSubscriptionManager [main]: 
> Creating subscription aSdTf34a for DynamicClusterImpl{id=UQli154h} on null 
> Sensor: service.isUp (java.lang.Boolean) in SubscriptionContext(huqO8)
> 2016-05-17 15:14:03,178 TRACE o.a.b.e.s.AbstractTransformer 
> [brooklyn-execmanager-RRpMDRbG-2]: Enricher 
> Transformer{uniqueTag=service.isUp if no service.notUp.indicators, 
> running=true, entity=DynamicClusterImpl{id=UQli154h}, id=etHYCO6U} computed 
> java.lang.Object@1a0a1852 from DynamicClusterImpl{id=UQli154h}.Sensor: 
> service.notUp.indicators (java.util.Map)=null @ 1463494443173
> 2016-05-17 15:14:03,178 TRACE o.a.b.c.entity.AbstractEntity 
> [brooklyn-execmanager-RRpMDRbG-2]: DynamicClusterImpl{id=UQli154h} 
> removeAttribute Sensor: service.isUp (java.lang.Boolean)
> 2016-05-17 15:14:03,178 DEBUG o.a.b.core.sensor.AttributeMap 
> [brooklyn-execmanager-RRpMDRbG-2]: removing attribute service.isUp on 
> DynamicClusterImpl{id=UQli154h}
> {noformat}
> In {{DynamicClusterImpl.initEnrichers}}, it has explicitly set service.isUp 
> to true (and also UP_QUORUM_CHECK to atLeastOneUnlessEmpty, and then 
> registered this enricher). But because the SERVICE_NOT_UP_INDICATORS is null 
> another enricher clears the service.isUp value.
> Subsequently, when service.state.expected is set to "running", it computes 
> that the cluster is on-fire because service.isUp is still null.
> {noformat}
> 2016-05-17 15:14:03,595 WARN  o.a.b.c.e.l.ServiceStateLogic 
> [brooklyn-execmanager-RRpMDRbG-6]: Setting DynamicClusterImpl{id=UQli154h} 
> on-fire due to problems when expected running, up=null, not-up-indicators: 
> null
> {noformat}



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

Reply via email to