Giter Club home page Giter Club logo

brooklyn's People

Contributors

richardcloudsoft avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

brooklyn's Issues

SensorRegistry is not threadsafe

There is no synchronization or any other form of thread safety. So class can't be used in a multi threaded environment safely.

Currently there also is quite a lot of deprecated functionality, so perhaps better to get that out of the way first before fixing something that is going to be changed/removed.

Entity.getLocations

There is no synchronization happening at all. Everybody can peek and poke in this collections,which can lead to race problems, but also to strange situations (e.g. an entity without a location).

I think it is best to return a copy of the list instead of returning the actual list.

Entity.getEnrichers returns non stable collection

The method should return a copy of the collections, not a readonly wrapper. If the readonly wrapper is returned, a user of this wrapper could observe unexpected change happening inside this list, leading to race problems.

Aggregating enricher's use with groups: ignores existing members of group

The CustomAggregatingEnricher can be used with groups, to automatically aggregate the members of the group. However, it does not take into account existing members - only members that are added and removed after the enricher is associated with the group.

When the CustomAggregatingEnricher is registered, it should lookup the members of the group and subscribe to the given sensor for them.

It would also be nice if this contract was more explicit. The code for notifying of "producers" being added/removed is buried away in AbstractGroup. When looking at the CustomAggregatingEnricher, the code at first looks like black-magic. I suggest moving the notifications into the CustomAggregatingEnricher (or its super-class) explicitly by subscribing to member added/removed.

CloudBees Continuous Integration

We should set up an account using the free open-source access tier of CloudBees, to provide community visibility into CI for building/testing Brooklyn.

"[DEPRECATED]" warning messages when running brooklyn

When running brooklyn I get this annoying warning:

2012-05-30 17:00:59,242 WARN  [DEPRECATED] Tag [createLinkTo] is deprecated please use [resource] instead

Here is the full output:

pegasus:bin cosmin$ ./web-server.sh 
Launching brooklyn app: brooklyn.demo.SingleWebServerExample in [localhost]
2012-05-30 17:00:41,136 INFO  Adding application under brooklyn management
2012-05-30 17:00:41,241 INFO  Starting Brooklyn console at http://localhost:8081, running brooklyn.war
2012-05-30 17:00:47,388 INFO  [RuntimeConfiguration] Configuring data source for environment: DEVELOPMENT
2012-05-30 17:00:49,408 INFO  Started Brooklyn console at http://localhost:8081, running brooklyn.war
2012-05-30 17:00:49,414 INFO  Starting brooklyn application: brooklyn.demo.SingleWebServerExample
2012-05-30 17:00:49,438 INFO  Starting entity SingleWebServerExample[id=WjvMw0t4,displayName=SingleWebServerExample:WjvM] at [LocalhostMachineProvisioningLocation[id=f97e2de4-8dec-4e67-94f9-8878b2d96cda,name=localhost]]
2012-05-30 17:00:49,530 INFO  Starting software process entity JBoss7Server[id=GdMsZCxg,displayName=JBoss7Server:GdMs] at [LocalhostMachineProvisioningLocation[id=f97e2de4-8dec-4e67-94f9-8878b2d96cda,name=localhost]]
2012-05-30 17:00:59,075 INFO  Web console using default security provider: brooklyn.web.console.security.ExplicitUsersSecurityProvider
2012-05-30 17:00:59,242 WARN  [DEPRECATED] Tag [createLinkTo] is deprecated please use [resource] instead
2012-05-30 17:00:59,258 WARN  [DEPRECATED] Tag [createLinkTo] is deprecated please use [resource] instead
2012-05-30 17:01:05,877 INFO  Web console allowing default user (admin)
2012-05-30 17:01:05,877 INFO  Web console ExplicitUsersSecurityProvider authenticated user admin
^[[B^[[B^[[B^[[A^[[A^C2012-05-30 17:05:14,304 INFO  Brooklyn launcher's shutdown-hook invoked: shutting down application
2012-05-30 17:05:14,304 INFO  Brooklyn launcher's shutdown-hook invoked: shutting down web-console
2012-05-30 17:05:14,307 INFO  Stopping Brooklyn web console at http://localhost:8081 (brooklyn.war)
Application context shutting down...
2012-05-30 17:05:14,312 INFO  Stopping application SingleWebServerExample[id=WjvMw0t4,displayName=SingleWebServerExample:WjvM]
2012-05-30 17:05:14,320 INFO  Stopping software process entity JBoss7Server[id=GdMsZCxg,displayName=JBoss7Server:GdMs]
Application context shutdown.
2012-05-30 17:05:14,737 INFO  Stopped application SingleWebServerExample[id=WjvMw0t4,displayName=SingleWebServerExample:WjvM]
2012-05-30 17:05:14,749 INFO  Stopped Brooklyn web console at http://localhost:8081

distributed management plane

Management is currently only possible at the instance where Brooklyn is launched.

We'd like to be able to start Brooklyn nodes remotely (1, or 2 for resilience) in each datacenter location where Brooklyn is running, and have them share information. Each entity should be mastered at one management node, as close to the entity as possible, with failover. It could be possible to manage entities at the same node as the process.

This would allow for resilience and scalability, as well as more efficient policy execution.

show task tree in web console

we list activities (tasks) but the tree structure kept in the code (where a task on a parent launches tasks on children) is not apparent; being able to navigate task hierarchies would be very handy

Jmx reconnect for entities (and http plus other polling mechanisms)

If a brooklyn entity loses connection to the physical-thing-being-management, it should automatically re-connect if the network/thing comes back up again. For example, if we the internet connection goes down for a few seconds between Brooklyn and a Tomcat server, we should re-establish connection to the Tomcat server and continue polling it (over jmx).

Entities poll their sensor values by a variety of mechanisms: jmx, http, etc. Let's consider jmx (but this should equally apply to other mechanisms as well). We poll jmx attributes/operations periodically. If the network goes down temporarily, we lose connection and we neer automatically re-establish the connection. Therefore, the entity's sensors never again refresh.


Some useful places in the code to look include:
JmxHelper
JmxNotificationAdapter
JmxAttributeAdapter

Support RabbitMQ

Add a RabbitMQ messaging entity. This should include support for broker clusters and failover, and perhaps deployable erlang plugins. The existing MySQL entity should be useful as a template for installation of native pre-built siftware, and the rest of the sensors and effectors should follow the existing messaging entity patterns.

simple-messaging-pubsub example fails on AWS (IllegalArgumentException)

Running the broker works fine on localhost but I get the following exception when running on AWS:

pegasus:bin cosmin$ ./broker.sh aws-ec2:eu-west-1
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/Users/cosmin/Documents/Cloudsoft/brooklyn/examples/simple-messaging-pubsub/brooklyn-example-simple-messaging-pubsub/lib/slf4j-log4j12-1.5.11.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/Users/cosmin/Documents/Cloudsoft/brooklyn/usage/dist/target/brooklyn-0.4.0-SNAPSHOT-dist/brooklyn/lib/slf4j-log4j12-1.5.11.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
Launching brooklyn app: brooklyn.demo.StandaloneBrokerExample in [aws-ec2:eu-west-1]
2012-06-05 11:47:31,249 WARN multiple definitions for sensor amqp.version on QpidBroker[id=U9s44q54]; preferring Sensor: amqp.version (java.lang.String) to Sensor: amqp.version (java.lang.String)
2012-06-05 11:47:31,644 INFO Adding application under brooklyn management
2012-06-05 11:47:31,669 INFO Starting Brooklyn console at http://localhost:8081, running brooklyn.war
2012-06-05 11:47:35,881 INFO [RuntimeConfiguration] Configuring data source for environment: DEVELOPMENT
2012-06-05 11:47:37,447 INFO Started Brooklyn console at http://localhost:8081, running brooklyn.war
2012-06-05 11:47:37,453 INFO Starting brooklyn application: brooklyn.demo.StandaloneBrokerExample
2012-06-05 11:47:37,461 INFO Starting entity StandaloneBrokerExample[id=IpLa2n7x,displayName=StandaloneBrokerExample:IpLa] at [JcloudsLocation[AKIAI2SPATD5BUGMKDLQ:AWS eu-west]]
2012-06-05 11:47:37,519 INFO Starting software process entity QpidBroker[id=U9s44q54,displayName=QpidBroker:U9s4] at [JcloudsLocation[AKIAI2SPATD5BUGMKDLQ:AWS eu-west]]
2012-06-05 11:47:37,555 INFO SoftwareProcessEntity QpidBroker[id=U9s44q54,displayName=QpidBroker:U9s4] obtaining a new location instance in JcloudsLocation[AKIAI2SPATD5BUGMKDLQ:AWS eu-west] with ports [null, 22, 5672, 1099, 9001]
2012-06-05 11:47:39,034 INFO Creating VM in eu-west-1
2012-06-05 11:47:47,284 INFO Web console using default security provider: brooklyn.web.console.security.ExplicitUsersSecurityProvider
2012-06-05 11:47:47,623 ERROR Failed to start VM: port must be a positive integer < 65535
2012-06-05 11:47:47,628 INFO java.lang.IllegalArgumentException: port must be a positive integer < 65535
at com.google.common.base.Preconditions.checkArgument(Preconditions.java:88)
at org.jclouds.compute.options.TemplateOptions.inboundPorts(TemplateOptions.java:455)
at org.jclouds.ec2.compute.options.EC2TemplateOptions.inboundPorts(EC2TemplateOptions.java:355)
at org.jclouds.aws.ec2.compute.AWSEC2TemplateOptions.inboundPorts(AWSEC2TemplateOptions.java:534)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite$PojoCachedMethodSite.invoke(PojoMetaMethodSite.java:189)
at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(PojoMetaMethodSite.java:53)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)
at brooklyn.location.basic.jclouds.JcloudsLocation$__clinit__closure27.doCall(JcloudsLocation.groovy:404)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:272)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:877)
at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:39)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:124)
at brooklyn.location.basic.jclouds.JcloudsLocation$_buildTemplate_closure4.doCall(JcloudsLocation.groovy:435)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1047)
at groovy.lang.ExpandoMetaClass.invokeMethod(ExpandoMetaClass.java:1110)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:877)
at groovy.lang.Closure.call(Closure.java:412)
at org.codehaus.groovy.runtime.DefaultGroovyMethods.callClosureForMapEntry(DefaultGroovyMethods.java:3578)
at org.codehaus.groovy.runtime.DefaultGroovyMethods.each(DefaultGroovyMethods.java:1405)
at org.codehaus.groovy.runtime.dgm$163.invoke(Unknown Source)
at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite$PojoMetaMethodSiteNoUnwrapNoCoerce.invoke(PojoMetaMethodSite.java:271)
at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(PojoMetaMethodSite.java:53)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)
at brooklyn.location.basic.jclouds.JcloudsLocation.buildTemplate(JcloudsLocation.groovy:433)
at brooklyn.location.basic.jclouds.JcloudsLocation.this$3$buildTemplate(JcloudsLocation.groovy)
at brooklyn.location.basic.jclouds.JcloudsLocation$this$3$buildTemplate.callCurrent(Unknown Source)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:46)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:133)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:153)
at brooklyn.location.basic.jclouds.JcloudsLocation.obtain(JcloudsLocation.groovy:204)
at brooklyn.location.basic.jclouds.JcloudsLocation.obtain(JcloudsLocation.groovy)
at brooklyn.location.MachineProvisioningLocation$obtain.call(Unknown Source)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)
at brooklyn.entity.basic.SoftwareProcessEntity.startInLocation(SoftwareProcessEntity.groovy:200)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1047)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:877)
at groovy.lang.DelegatingMetaClass.invokeMethod(DelegatingMetaClass.java:149)
at groovy.lang.MetaObjectProtocol$invokeMethod.call(Unknown Source)
at brooklyn.entity.basic.AbstractEntity.invokeMethod(AbstractEntity.groovy:821)
at org.codehaus.groovy.runtime.callsite.PogoInterceptableSite.call(PogoInterceptableSite.java:45)
at org.codehaus.groovy.runtime.callsite.PogoInterceptableSite.callCurrent(PogoInterceptableSite.java:55)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:46)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:133)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:141)
at brooklyn.entity.basic.SoftwareProcessEntity.startInLocation(SoftwareProcessEntity.groovy:187)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1047)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:877)
at groovy.lang.DelegatingMetaClass.invokeMethod(DelegatingMetaClass.java:149)
at groovy.lang.MetaObjectProtocol$invokeMethod.call(Unknown Source)
at brooklyn.entity.basic.AbstractEntity.invokeMethod(AbstractEntity.groovy:821)
at org.codehaus.groovy.runtime.callsite.PogoInterceptableSite.call(PogoInterceptableSite.java:45)
at org.codehaus.groovy.runtime.callsite.PogoInterceptableSite.callCurrent(PogoInterceptableSite.java:55)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:46)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:133)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:141)
at brooklyn.entity.basic.SoftwareProcessEntity.start(SoftwareProcessEntity.groovy:176)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1047)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:877)
at groovy.lang.DelegatingMetaClass.invokeMethod(DelegatingMetaClass.java:149)
at groovy.lang.MetaObjectProtocol$invokeMethod.call(Unknown Source)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:124)
at brooklyn.management.internal.AbstractManagementContext.invokeEffectorMethodLocal(AbstractManagementContext.groovy:112)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSiteNoUnwrapNoCoerce.invoke(PogoMetaMethodSite.java:267)
at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.callCurrent(PogoMetaMethodSite.java:52)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:46)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:133)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:149)
at brooklyn.management.internal.AbstractManagementContext.invokeEffectorMethodSync(AbstractManagementContext.groovy:149)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSiteNoUnwrapNoCoerce.invoke(PogoMetaMethodSite.java:267)
at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.call(PogoMetaMethodSite.java:64)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:124)
at brooklyn.entity.basic.AbstractEntity.invokeMethod(AbstractEntity.groovy:808)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1047)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:877)
at groovy.lang.DelegatingMetaClass.invokeMethod(DelegatingMetaClass.java:149)
at groovy.lang.MetaObjectProtocol$invokeMethod.call(Unknown Source)
at brooklyn.entity.basic.AbstractEntity.invokeMethod(AbstractEntity.groovy:821)
at org.codehaus.groovy.runtime.callsite.PogoInterceptableSite.call(PogoInterceptableSite.java:45)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:120)
at brooklyn.entity.basic.MethodEffector.call(AbstractEffector.groovy:219)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1047)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:877)
at groovy.lang.DelegatingMetaClass.invokeMethod(DelegatingMetaClass.java:149)
at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:39)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:120)
at brooklyn.management.internal.AbstractManagementContext$_invokeEffector_closure1.doCall(AbstractManagementContext.groovy:104)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSite.invoke(PogoMetaMethodSite.java:226)
at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.callCurrent(PogoMetaMethodSite.java:52)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:46)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:133)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:141)
at brooklyn.management.internal.AbstractManagementContext$_invokeEffector_closure1.doCall(AbstractManagementContext.groovy)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1047)
at groovy.lang.ExpandoMetaClass.invokeMethod(ExpandoMetaClass.java:1110)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:877)
at groovy.lang.Closure.call(Closure.java:412)
at groovy.lang.Closure.call(Closure.java:406)
at brooklyn.util.task.BasicExecutionManager$3.call(BasicExecutionManager.java:267)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:680)

2012-06-05 11:47:47,642 INFO Execution of effector start on entity U9s44q54 failed with java.util.concurrent.ExecutionException: Error invoking start[locations] on entity QpidBroker[id=U9s44q54,displayName=QpidBroker:U9s4]
2012-06-05 11:47:47,646 WARN Error while running task Taskstart [EFFECTOR, QpidBroker[id=U9s44q54,displayName=QpidBroker:U9s4]]; BuHqFRuIqf: port must be a positive integer < 65535
java.lang.IllegalArgumentException: port must be a positive integer < 65535
at com.google.common.base.Preconditions.checkArgument(Preconditions.java:88)
at org.jclouds.compute.options.TemplateOptions.inboundPorts(TemplateOptions.java:455)
at org.jclouds.ec2.compute.options.EC2TemplateOptions.inboundPorts(EC2TemplateOptions.java:355)
at org.jclouds.aws.ec2.compute.AWSEC2TemplateOptions.inboundPorts(AWSEC2TemplateOptions.java:534)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite$PojoCachedMethodSite.invoke(PojoMetaMethodSite.java:189)
at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(PojoMetaMethodSite.java:53)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)
at brooklyn.location.basic.jclouds.JcloudsLocation$__clinit__closure27.doCall(JcloudsLocation.groovy:404)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:272)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:877)
at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:39)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:124)
at brooklyn.location.basic.jclouds.JcloudsLocation$_buildTemplate_closure4.doCall(JcloudsLocation.groovy:435)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1047)
at groovy.lang.ExpandoMetaClass.invokeMethod(ExpandoMetaClass.java:1110)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:877)
at groovy.lang.Closure.call(Closure.java:412)
at org.codehaus.groovy.runtime.DefaultGroovyMethods.callClosureForMapEntry(DefaultGroovyMethods.java:3578)
at org.codehaus.groovy.runtime.DefaultGroovyMethods.each(DefaultGroovyMethods.java:1405)
at org.codehaus.groovy.runtime.dgm$163.invoke(Unknown Source)
at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite$PojoMetaMethodSiteNoUnwrapNoCoerce.invoke(PojoMetaMethodSite.java:271)
at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(PojoMetaMethodSite.java:53)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)
at brooklyn.location.basic.jclouds.JcloudsLocation.buildTemplate(JcloudsLocation.groovy:433)
at brooklyn.location.basic.jclouds.JcloudsLocation.this$3$buildTemplate(JcloudsLocation.groovy)
at brooklyn.location.basic.jclouds.JcloudsLocation$this$3$buildTemplate.callCurrent(Unknown Source)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:46)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:133)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:153)
at brooklyn.location.basic.jclouds.JcloudsLocation.obtain(JcloudsLocation.groovy:204)
at brooklyn.location.basic.jclouds.JcloudsLocation.obtain(JcloudsLocation.groovy)
at brooklyn.location.MachineProvisioningLocation$obtain.call(Unknown Source)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)
at brooklyn.entity.basic.SoftwareProcessEntity.startInLocation(SoftwareProcessEntity.groovy:200)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1047)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:877)
at groovy.lang.DelegatingMetaClass.invokeMethod(DelegatingMetaClass.java:149)
at groovy.lang.MetaObjectProtocol$invokeMethod.call(Unknown Source)
at brooklyn.entity.basic.AbstractEntity.invokeMethod(AbstractEntity.groovy:821)
at org.codehaus.groovy.runtime.callsite.PogoInterceptableSite.call(PogoInterceptableSite.java:45)
at org.codehaus.groovy.runtime.callsite.PogoInterceptableSite.callCurrent(PogoInterceptableSite.java:55)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:46)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:133)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:141)
at brooklyn.entity.basic.SoftwareProcessEntity.startInLocation(SoftwareProcessEntity.groovy:187)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1047)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:877)
at groovy.lang.DelegatingMetaClass.invokeMethod(DelegatingMetaClass.java:149)
at groovy.lang.MetaObjectProtocol$invokeMethod.call(Unknown Source)
at brooklyn.entity.basic.AbstractEntity.invokeMethod(AbstractEntity.groovy:821)
at org.codehaus.groovy.runtime.callsite.PogoInterceptableSite.call(PogoInterceptableSite.java:45)
at org.codehaus.groovy.runtime.callsite.PogoInterceptableSite.callCurrent(PogoInterceptableSite.java:55)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:46)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:133)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:141)
at brooklyn.entity.basic.SoftwareProcessEntity.start(SoftwareProcessEntity.groovy:176)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1047)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:877)
at groovy.lang.DelegatingMetaClass.invokeMethod(DelegatingMetaClass.java:149)
at groovy.lang.MetaObjectProtocol$invokeMethod.call(Unknown Source)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:124)
at brooklyn.management.internal.AbstractManagementContext.invokeEffectorMethodLocal(AbstractManagementContext.groovy:112)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSiteNoUnwrapNoCoerce.invoke(PogoMetaMethodSite.java:267)
at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.callCurrent(PogoMetaMethodSite.java:52)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:46)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:133)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:149)
at brooklyn.management.internal.AbstractManagementContext.invokeEffectorMethodSync(AbstractManagementContext.groovy:149)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSiteNoUnwrapNoCoerce.invoke(PogoMetaMethodSite.java:267)
at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.call(PogoMetaMethodSite.java:64)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:124)
at brooklyn.entity.basic.AbstractEntity.invokeMethod(AbstractEntity.groovy:808)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1047)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:877)
at groovy.lang.DelegatingMetaClass.invokeMethod(DelegatingMetaClass.java:149)
at groovy.lang.MetaObjectProtocol$invokeMethod.call(Unknown Source)
at brooklyn.entity.basic.AbstractEntity.invokeMethod(AbstractEntity.groovy:821)
at org.codehaus.groovy.runtime.callsite.PogoInterceptableSite.call(PogoInterceptableSite.java:45)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:120)
at brooklyn.entity.basic.MethodEffector.call(AbstractEffector.groovy:219)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1047)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:877)
at groovy.lang.DelegatingMetaClass.invokeMethod(DelegatingMetaClass.java:149)
at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:39)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:120)
at brooklyn.management.internal.AbstractManagementContext$_invokeEffector_closure1.doCall(AbstractManagementContext.groovy:104)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSite.invoke(PogoMetaMethodSite.java:226)
at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.callCurrent(PogoMetaMethodSite.java:52)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:46)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:133)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:141)
at brooklyn.management.internal.AbstractManagementContext$_invokeEffector_closure1.doCall(AbstractManagementContext.groovy)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1047)
at groovy.lang.ExpandoMetaClass.invokeMethod(ExpandoMetaClass.java:1110)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:877)
at groovy.lang.Closure.call(Closure.java:412)
at groovy.lang.Closure.call(Closure.java:406)
at brooklyn.util.task.BasicExecutionManager$3.call(BasicExecutionManager.java:267)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:680)
2012-06-05 11:47:47,650 WARN Error while running task Task[StandaloneBrokerExample[id=IpLa2n7x,displayName=StandaloneBrokerExample:IpLa]]; eQmbkOcXIx: java.util.concurrent.ExecutionException: java.lang.IllegalArgumentException: port must be a positive integer < 65535
org.codehaus.groovy.runtime.InvokerInvocationException: java.util.concurrent.ExecutionException: java.lang.IllegalArgumentException: port must be a positive integer < 65535
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:97)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1047)
at groovy.lang.ExpandoMetaClass.invokeMethod(ExpandoMetaClass.java:1110)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:877)
at groovy.lang.Closure.call(Closure.java:412)
at groovy.lang.Closure.call(Closure.java:406)
at brooklyn.util.task.BasicExecutionManager$3.call(BasicExecutionManager.java:267)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:680)
Caused by: java.util.concurrent.ExecutionException: java.lang.IllegalArgumentException: port must be a positive integer < 65535
at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:222)
at java.util.concurrent.FutureTask.get(FutureTask.java:83)
at brooklyn.util.task.BasicTask.get(BasicTask.java:217)
at java_util_concurrent_Future$get.call(Unknown Source)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:112)
at brooklyn.entity.basic.Entities$_invokeEffectorList_closure1_closure5.doCall(Entities.groovy:40)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
... 12 more
Caused by: java.lang.IllegalArgumentException: port must be a positive integer < 65535
at com.google.common.base.Preconditions.checkArgument(Preconditions.java:88)
at org.jclouds.compute.options.TemplateOptions.inboundPorts(TemplateOptions.java:455)
at org.jclouds.ec2.compute.options.EC2TemplateOptions.inboundPorts(EC2TemplateOptions.java:355)
at org.jclouds.aws.ec2.compute.AWSEC2TemplateOptions.inboundPorts(AWSEC2TemplateOptions.java:534)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite$PojoCachedMethodSite.invoke(PojoMetaMethodSite.java:189)
at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(PojoMetaMethodSite.java:53)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)
at brooklyn.location.basic.jclouds.JcloudsLocation$__clinit__closure27.doCall(JcloudsLocation.groovy:404)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:272)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:877)
at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:39)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:124)
at brooklyn.location.basic.jclouds.JcloudsLocation$_buildTemplate_closure4.doCall(JcloudsLocation.groovy:435)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1047)
at groovy.lang.ExpandoMetaClass.invokeMethod(ExpandoMetaClass.java:1110)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:877)
at groovy.lang.Closure.call(Closure.java:412)
at org.codehaus.groovy.runtime.DefaultGroovyMethods.callClosureForMapEntry(DefaultGroovyMethods.java:3578)
at org.codehaus.groovy.runtime.DefaultGroovyMethods.each(DefaultGroovyMethods.java:1405)
at org.codehaus.groovy.runtime.dgm$163.invoke(Unknown Source)
at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite$PojoMetaMethodSiteNoUnwrapNoCoerce.invoke(PojoMetaMethodSite.java:271)
at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(PojoMetaMethodSite.java:53)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)
at brooklyn.location.basic.jclouds.JcloudsLocation.buildTemplate(JcloudsLocation.groovy:433)
at brooklyn.location.basic.jclouds.JcloudsLocation.this$3$buildTemplate(JcloudsLocation.groovy)
at brooklyn.location.basic.jclouds.JcloudsLocation$this$3$buildTemplate.callCurrent(Unknown Source)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:46)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:133)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:153)
at brooklyn.location.basic.jclouds.JcloudsLocation.obtain(JcloudsLocation.groovy:204)
at brooklyn.location.basic.jclouds.JcloudsLocation.obtain(JcloudsLocation.groovy)
at brooklyn.location.MachineProvisioningLocation$obtain.call(Unknown Source)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)
at brooklyn.entity.basic.SoftwareProcessEntity.startInLocation(SoftwareProcessEntity.groovy:200)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1047)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:877)
at groovy.lang.DelegatingMetaClass.invokeMethod(DelegatingMetaClass.java:149)
at groovy.lang.MetaObjectProtocol$invokeMethod.call(Unknown Source)
at brooklyn.entity.basic.AbstractEntity.invokeMethod(AbstractEntity.groovy:821)
at org.codehaus.groovy.runtime.callsite.PogoInterceptableSite.call(PogoInterceptableSite.java:45)
at org.codehaus.groovy.runtime.callsite.PogoInterceptableSite.callCurrent(PogoInterceptableSite.java:55)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:46)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:133)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:141)
at brooklyn.entity.basic.SoftwareProcessEntity.startInLocation(SoftwareProcessEntity.groovy:187)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1047)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:877)
at groovy.lang.DelegatingMetaClass.invokeMethod(DelegatingMetaClass.java:149)
at groovy.lang.MetaObjectProtocol$invokeMethod.call(Unknown Source)
at brooklyn.entity.basic.AbstractEntity.invokeMethod(AbstractEntity.groovy:821)
at org.codehaus.groovy.runtime.callsite.PogoInterceptableSite.call(PogoInterceptableSite.java:45)
at org.codehaus.groovy.runtime.callsite.PogoInterceptableSite.callCurrent(PogoInterceptableSite.java:55)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:46)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:133)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:141)
at brooklyn.entity.basic.SoftwareProcessEntity.start(SoftwareProcessEntity.groovy:176)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1047)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:877)
at groovy.lang.DelegatingMetaClass.invokeMethod(DelegatingMetaClass.java:149)
at groovy.lang.MetaObjectProtocol$invokeMethod.call(Unknown Source)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:124)
at brooklyn.management.internal.AbstractManagementContext.invokeEffectorMethodLocal(AbstractManagementContext.groovy:112)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSiteNoUnwrapNoCoerce.invoke(PogoMetaMethodSite.java:267)
at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.callCurrent(PogoMetaMethodSite.java:52)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:46)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:133)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:149)
at brooklyn.management.internal.AbstractManagementContext.invokeEffectorMethodSync(AbstractManagementContext.groovy:149)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSiteNoUnwrapNoCoerce.invoke(PogoMetaMethodSite.java:267)
at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.call(PogoMetaMethodSite.java:64)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:124)
at brooklyn.entity.basic.AbstractEntity.invokeMethod(AbstractEntity.groovy:808)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1047)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:877)
at groovy.lang.DelegatingMetaClass.invokeMethod(DelegatingMetaClass.java:149)
at groovy.lang.MetaObjectProtocol$invokeMethod.call(Unknown Source)
at brooklyn.entity.basic.AbstractEntity.invokeMethod(AbstractEntity.groovy:821)
at org.codehaus.groovy.runtime.callsite.PogoInterceptableSite.call(PogoInterceptableSite.java:45)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:120)
at brooklyn.entity.basic.MethodEffector.call(AbstractEffector.groovy:219)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1047)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:877)
at groovy.lang.DelegatingMetaClass.invokeMethod(DelegatingMetaClass.java:149)
at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:39)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:120)
at brooklyn.management.internal.AbstractManagementContext$_invokeEffector_closure1.doCall(AbstractManagementContext.groovy:104)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSite.invoke(PogoMetaMethodSite.java:226)
at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.callCurrent(PogoMetaMethodSite.java:52)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:46)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:133)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:141)
at brooklyn.management.internal.AbstractManagementContext$_invokeEffector_closure1.doCall(AbstractManagementContext.groovy)
... 17 more
2012-06-05 11:47:47,655 WARN Error while running task Taskcompound [compound, StandaloneBrokerExample[id=IpLa2n7x,displayName=StandaloneBrokerExample:IpLa]]; 6nyqECjWyf: org.codehaus.groovy.runtime.InvokerInvocationException: java.util.concurrent.ExecutionException: java.lang.IllegalArgumentException: port must be a positive integer < 65535
java.util.concurrent.ExecutionException: org.codehaus.groovy.runtime.InvokerInvocationException: java.util.concurrent.ExecutionException: java.lang.IllegalArgumentException: port must be a positive integer < 65535
at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:222)
at java.util.concurrent.FutureTask.get(FutureTask.java:83)
at brooklyn.util.task.BasicTask.get(BasicTask.java:217)
at brooklyn.util.task.ParallelTask.runJobs(ParallelTask.java:28)
at brooklyn.util.task.CompoundTask$1.call(CompoundTask.java:53)
at brooklyn.util.task.CompoundTask$1.call(CompoundTask.java:1)
at brooklyn.util.task.BasicExecutionManager$3.call(BasicExecutionManager.java:267)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:680)
Caused by: org.codehaus.groovy.runtime.InvokerInvocationException: java.util.concurrent.ExecutionException: java.lang.IllegalArgumentException: port must be a positive integer < 65535
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:97)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1047)
at groovy.lang.ExpandoMetaClass.invokeMethod(ExpandoMetaClass.java:1110)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:877)
at groovy.lang.Closure.call(Closure.java:412)
at groovy.lang.Closure.call(Closure.java:406)
... 6 more
Caused by: java.util.concurrent.ExecutionException: java.lang.IllegalArgumentException: port must be a positive integer < 65535
at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:222)
at java.util.concurrent.FutureTask.get(FutureTask.java:83)
at brooklyn.util.task.BasicTask.get(BasicTask.java:217)
at java_util_concurrent_Future$get.call(Unknown Source)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:112)
at brooklyn.entity.basic.Entities$_invokeEffectorList_closure1_closure5.doCall(Entities.groovy:40)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
... 12 more
Caused by: java.lang.IllegalArgumentException: port must be a positive integer < 65535
at com.google.common.base.Preconditions.checkArgument(Preconditions.java:88)
at org.jclouds.compute.options.TemplateOptions.inboundPorts(TemplateOptions.java:455)
at org.jclouds.ec2.compute.options.EC2TemplateOptions.inboundPorts(EC2TemplateOptions.java:355)
at org.jclouds.aws.ec2.compute.AWSEC2TemplateOptions.inboundPorts(AWSEC2TemplateOptions.java:534)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite$PojoCachedMethodSite.invoke(PojoMetaMethodSite.java:189)
at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(PojoMetaMethodSite.java:53)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)
at brooklyn.location.basic.jclouds.JcloudsLocation$__clinit__closure27.doCall(JcloudsLocation.groovy:404)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:272)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:877)
at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:39)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:124)
at brooklyn.location.basic.jclouds.JcloudsLocation$_buildTemplate_closure4.doCall(JcloudsLocation.groovy:435)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1047)
at groovy.lang.ExpandoMetaClass.invokeMethod(ExpandoMetaClass.java:1110)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:877)
at groovy.lang.Closure.call(Closure.java:412)
at org.codehaus.groovy.runtime.DefaultGroovyMethods.callClosureForMapEntry(DefaultGroovyMethods.java:3578)
at org.codehaus.groovy.runtime.DefaultGroovyMethods.each(DefaultGroovyMethods.java:1405)
at org.codehaus.groovy.runtime.dgm$163.invoke(Unknown Source)
at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite$PojoMetaMethodSiteNoUnwrapNoCoerce.invoke(PojoMetaMethodSite.java:271)
at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(PojoMetaMethodSite.java:53)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)
at brooklyn.location.basic.jclouds.JcloudsLocation.buildTemplate(JcloudsLocation.groovy:433)
at brooklyn.location.basic.jclouds.JcloudsLocation.this$3$buildTemplate(JcloudsLocation.groovy)
at brooklyn.location.basic.jclouds.JcloudsLocation$this$3$buildTemplate.callCurrent(Unknown Source)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:46)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:133)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:153)
at brooklyn.location.basic.jclouds.JcloudsLocation.obtain(JcloudsLocation.groovy:204)
at brooklyn.location.basic.jclouds.JcloudsLocation.obtain(JcloudsLocation.groovy)
at brooklyn.location.MachineProvisioningLocation$obtain.call(Unknown Source)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)
at brooklyn.entity.basic.SoftwareProcessEntity.startInLocation(SoftwareProcessEntity.groovy:200)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1047)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:877)
at groovy.lang.DelegatingMetaClass.invokeMethod(DelegatingMetaClass.java:149)
at groovy.lang.MetaObjectProtocol$invokeMethod.call(Unknown Source)
at brooklyn.entity.basic.AbstractEntity.invokeMethod(AbstractEntity.groovy:821)
at org.codehaus.groovy.runtime.callsite.PogoInterceptableSite.call(PogoInterceptableSite.java:45)
at org.codehaus.groovy.runtime.callsite.PogoInterceptableSite.callCurrent(PogoInterceptableSite.java:55)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:46)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:133)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:141)
at brooklyn.entity.basic.SoftwareProcessEntity.startInLocation(SoftwareProcessEntity.groovy:187)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1047)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:877)
at groovy.lang.DelegatingMetaClass.invokeMethod(DelegatingMetaClass.java:149)
at groovy.lang.MetaObjectProtocol$invokeMethod.call(Unknown Source)
at brooklyn.entity.basic.AbstractEntity.invokeMethod(AbstractEntity.groovy:821)
at org.codehaus.groovy.runtime.callsite.PogoInterceptableSite.call(PogoInterceptableSite.java:45)
at org.codehaus.groovy.runtime.callsite.PogoInterceptableSite.callCurrent(PogoInterceptableSite.java:55)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:46)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:133)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:141)
at brooklyn.entity.basic.SoftwareProcessEntity.start(SoftwareProcessEntity.groovy:176)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1047)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:877)
at groovy.lang.DelegatingMetaClass.invokeMethod(DelegatingMetaClass.java:149)
at groovy.lang.MetaObjectProtocol$invokeMethod.call(Unknown Source)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:124)
at brooklyn.management.internal.AbstractManagementContext.invokeEffectorMethodLocal(AbstractManagementContext.groovy:112)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSiteNoUnwrapNoCoerce.invoke(PogoMetaMethodSite.java:267)
at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.callCurrent(PogoMetaMethodSite.java:52)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:46)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:133)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:149)
at brooklyn.management.internal.AbstractManagementContext.invokeEffectorMethodSync(AbstractManagementContext.groovy:149)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSiteNoUnwrapNoCoerce.invoke(PogoMetaMethodSite.java:267)
at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.call(PogoMetaMethodSite.java:64)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:124)
at brooklyn.entity.basic.AbstractEntity.invokeMethod(AbstractEntity.groovy:808)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1047)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:877)
at groovy.lang.DelegatingMetaClass.invokeMethod(DelegatingMetaClass.java:149)
at groovy.lang.MetaObjectProtocol$invokeMethod.call(Unknown Source)
at brooklyn.entity.basic.AbstractEntity.invokeMethod(AbstractEntity.groovy:821)
at org.codehaus.groovy.runtime.callsite.PogoInterceptableSite.call(PogoInterceptableSite.java:45)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:120)
at brooklyn.entity.basic.MethodEffector.call(AbstractEffector.groovy:219)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1047)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:877)
at groovy.lang.DelegatingMetaClass.invokeMethod(DelegatingMetaClass.java:149)
at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:39)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
at org

Entity.getPolicies returns non stable collection

The getPolicies returns a readonly wrapper that is backed up by the real policy set.

So if a user would use this collection, the collection maybe change while he is working on it. This can lead to all kinds of exceptions.

So instead of returning a readonly wrapper, return a copy.

Add messaging example application

  • Write an example/demo application that uses JMS with a broker (preferably Apache Qpid) and demonstrates scaling clients based on queue depth.
  • Document the example and the use of the messaging entities

Running brooklyn example fails with ssh problems

When running a brooklyn example like ./demo-web-cluster.sh from examples/simple-web-cluster you get ssh problems:

2012-05-07 14:26:51,450 INFO << (cosmin@localhost:22) error acquiring {hostAndPort=localhost:22, user=cosmin, ssh=1506268053, password=null, privateKeyFile=null, privateKey=xxxxxx, connectTimeout=0, sessionTimeout=0} (attempt 1 of 4): Exhausted available authentication methods

There is already a comment that talks about this and a fix here so this will probably get resolved soon.

As a workaround in the meanwhile, you can update the CLASSPATH environment variable before running the example:

export CLASSPATH=~/.m2/repository/org/bouncycastle/bcprov-jdk16/1.46/bcprov-jdk16-1.46.jar:~/.m2/repository/io/brooklyn/brooklyn-all/0.4.0-SNAPSHOT/brooklyn-all-0.4.0-SNAPSHOT.jar

Brooklyn fails to compile with GroovyEclipseBug, for private static method SshjTool.getMandatoryVal

Brooklyn fails to compile in Eclipse with the GroovyEclipseBug shown below.

This is with org.codehause.groovy.eclipse version 2.6.0, in Eclipse Indigo Service Release 2.

The method:
private static T getMandatoryVal(Map<String,?> map, String key, Class clazz)
is delcared in SshjTool.

The class reporting the compile error is EffectorSayHiTest.groovy, at line 0.

General error during class generation: Cannot find type variable on method declaring element private static T getMandatoryVal(Map<java.lang.String,?>, java.lang.String, Class)

org.codehaus.jdt.groovy.internal.compiler.ast.GroovyEclipseBug: Cannot find type variable on method declaring element private static T getMandatoryVal(Map<java.lang.String,?>, java.lang.String, Class)
ย  ย at org.codehaus.jdt.groovy.internal.compiler.ast.JDTResolver.createClassNode(JDTResolver.java:531)
ย  ย at org.codehaus.jdt.groovy.internal.compiler.ast.JDTResolver.createJDTClassNode(JDTResolver.java:448)
ย  ย at org.codehaus.jdt.groovy.internal.compiler.ast.JDTResolver.convertToClassNode(JDTResolver.java:436)
ย  ย at org.codehaus.jdt.groovy.internal.compiler.ast.JDTClassNode.methodBindingToMethodNode(JDTClassNode.java:336)
ย  ย at org.codehaus.jdt.groovy.internal.compiler.ast.JDTClassNode.initializeMembers(JDTClassNode.java:298)
ย  ย at org.codehaus.jdt.groovy.internal.compiler.ast.JDTClassNode.initialize(JDTClassNode.java:231)
ย  ย at org.codehaus.jdt.groovy.internal.compiler.ast.JDTClassNode.lazyClassInit(JDTClassNode.java:155)
ย  ย at org.codehaus.groovy.ast.ClassNode.getInterfaces(ClassNode.java:444)
ย  ย at org.codehaus.groovy.ast.ClassNode.declaresInterface(ClassNode.java:1051)
ย  ย at org.codehaus.groovy.ast.ClassNode.implementsInterface(ClassNode.java:1031)
ย  ย at org.codehaus.groovy.ast.ClassNode.isDerivedFromGroovyObject(ClassNode.java:1021)
ย  ย at org.codehaus.groovy.classgen.AsmClassGenerator.loadWrapper(AsmClassGenerator.java:1509)
ย  ย at org.codehaus.groovy.classgen.asm.CallSiteWriter.makeCallSite(CallSiteWriter.java:303)
ย  ย at org.codehaus.groovy.classgen.asm.InvocationWriter.makeCall(InvocationWriter.java:187)
ย  ย at org.codehaus.groovy.classgen.asm.InvocationWriter.makeCall(InvocationWriter.java:89)
ย  ย at org.codehaus.groovy.classgen.asm.InvocationWriter.makeInvokeMethodCall(InvocationWriter.java:73)
ย  ย at org.codehaus.groovy.classgen.asm.InvocationWriter.writeInvokeMethod(InvocationWriter.java:292)
ย  ย at org.codehaus.groovy.classgen.AsmClassGenerator.visitMethodCallExpression(AsmClassGenerator.java:657)
ย  ย at org.codehaus.groovy.ast.expr.MethodCallExpression.visit(MethodCallExpression.java:75)
ย  ย at org.codehaus.groovy.classgen.asm.StatementWriter.writeReturn(StatementWriter.java:579)
ย  ย at org.codehaus.groovy.classgen.asm.OptimizingStatementWriter.writeReturn(OptimizingStatementWriter.java:316)
ย  ย at org.codehaus.groovy.classgen.AsmClassGenerator.visitReturnStatement(AsmClassGenerator.java:499)
ย  ย at org.codehaus.groovy.ast.stmt.ReturnStatement.visit(ReturnStatement.java:47)
ย  ย at org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitClassCodeContainer(ClassCodeVisitorSupport.java:102)
ย  ย at org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitConstructorOrMethod(ClassCodeVisitorSupport.java:113)
ย  ย at org.codehaus.groovy.classgen.AsmClassGenerator.visitStdMethod(AsmClassGenerator.java:313)
ย  ย at org.codehaus.groovy.classgen.AsmClassGenerator.visitConstructorOrMethod(AsmClassGenerator.java:270)
ย  ย at org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitMethod(ClassCodeVisitorSupport.java:124)
ย  ย at org.codehaus.groovy.classgen.AsmClassGenerator.visitMethod(AsmClassGenerator.java:390)
ย  ย at org.codehaus.groovy.ast.ClassNode.visitContents(ClassNode.java:1170)
ย  ย at org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitClass(ClassCodeVisitorSupport.java:51)
ย  ย at org.codehaus.groovy.classgen.AsmClassGenerator.visitClass(AsmClassGenerator.java:174)
ย  ย at org.codehaus.groovy.control.CompilationUnit$6.call(CompilationUnit.java:829)
ย  ย at org.codehaus.groovy.control.CompilationUnit.applyToPrimaryClassNodes(CompilationUnit.java:1122)
ย  ย at org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:594)
ย  ย at org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:572)
ย  ย at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:549)
ย  ย at org.codehaus.jdt.groovy.internal.compiler.ast.GroovyCompilationUnitDeclaration.processToPhase(GroovyCompilationUnitDeclaration.java:171)
ย  ย at org.codehaus.jdt.groovy.internal.compiler.ast.GroovyCompilationUnitDeclaration.generateCode(GroovyCompilationUnitDeclaration.java:1526)
ย  ย at org.eclipse.jdt.internal.compiler.Compiler.process(Compiler.java:831)
ย  ย at org.eclipse.jdt.internal.compiler.ProcessTaskManager.run(ProcessTaskManager.java:137)
ย  ย at java.lang.Thread.run(Thread.java:680)

maven assembly of tar.gz

We'd like on the download page to offer a tar.gz containing the jars and a start script that uses Java6 -cp lib/*.jar syntax.

A maven assembly task can build the artifact and should be part of CI.

The examples should be updated so that they can use this (if a BROOKLYN_HOME var is set?) as well as the all jar from a local maven repo.

The docs for download and examples should be updated to reflect this.

Extensible Entities-in-Locations Model

With CloudFoundry (#15) and OpenShift (and more on the way), we need a clean way in Brooklyn to support deploying entities to locations which may not be known (and which shouldn't be in classpath) when the entities themselves were made.

There are at least two parts to this:

(1) the CommandLineLocations (in core) should have an extension mechanism -- whereby e.g. it can construct a CloudFoundryLocation at runtime given a string "cloudfoundry", if the cloudfoundry project is present (without have cloudfoundry deps/refs in core itself)

(2) specific Entity or EntityFactory implementations interfaces (eg WebClusterFactory) should have a way that they can, if desired, allow downstream projects to supply additional implementations or drivers (eg cloudfoundry project can supply a WebClusterFabric)

remove jsch

JSch has been replaced by sshj, so it can be removed

General usability issues with 0.4.0-M1, esp examples

There are a number of problems with how people download and use the examples, in order for them to be familiar and usable.

Cosmin has suggested that we get rid of the distribution directory which is generated for each examples, and remove the scripts, and instead use a short text file in the root containing instructions for running from plain vanilla jars (and minimal additional dependencies).

Let's do that, and update the following which I've observed:

  • The docs/ for don't work, as they leave out the step for downloading and setting up brooklyn !
  • download instructions should describe where to get release repo, and where to get the dist TGZ
    http://ccweb.cloudsoftcorp.com/maven/libs-release-local/io/brooklyn/brooklyn-dist/0.4.0-M1/brooklyn-dist-0.4.0-M1-dist.tar.gz
  • download links are broken for releases ("snapshot" is hardcoded).
  • we should use "cloudsoft-{release,snapshot}" repos (for clarity when working with examples) rather than "lib-*-local"
  • "dist" artifacts should put things into a directory called brooklyn-$VERSION e.g. brooklyn-0.4.0-M1 (not brooklyn)
  • why refer to "dist" twice in the artifact basename -- ie "brooklyn-dist-VERSION-dist" ... prefer "brooklyn-VERSION-dist"
    should have a README (maybe containing a one sentence intro, pointer to website, and pointer to examples repo) and a
    LICENSE.TXT in the root dir of the dist

simplify launching

A generic command-line tool which could take a groovy deployment script (or JSON representation as per #3) would be very helpful, meaning people don't need to recompile anything to make a change.

This could also standardise the --port N option, and location arguments, used in the examples.

The examples and the documentation should be updated to use this. This could also build on #1.

port web console webapp

grails 1.7 is long-in-the-tooth, and we've done some hacks to make it work with groovy 1.8.

switching to grails 2.0 would solve this.

or could move away from grails if people prefer? it makes some things easier but some things harder.

IOException when running WebClusterExample or GlobalWebFabricExample

This is possibly related to issue #143. When I try to run the WebClusterExample from simple-web-cluster I get an IOException that looks to be related to the JBoss7Server entity.

UPDATE: Looks like the GlobalWebFabricExample is also affected by this

Apart from the exception everything seems to be working fine.

The only things that looks worrying in the web console is the fact that NGINX has been started and then restarted:

DynamicWebAppCluster:gICn   start    2012-05-31 10:37:48    2012-05-31 10:37:51 Ended normally
JBoss7Server:B9lL   start    2012-05-31 10:37:48    2012-05-31 10:37:51 Ended normally
NginxController:W86T    restart 2012-05-31 10:38:18 2012-05-31 10:38:18 Ended normally
NginxController:W86T    start   2012-05-31 10:37:48 2012-05-31 10:38:18 Ended normally
WebApp cluster  start    2012-05-31 10:37:48    2012-05-31 10:38:18 Ended normally

Here is the full output I get when running the example:

pegasus:bin cosmin$ ./web-cluster.sh 
Launching brooklyn app: brooklyn.demo.WebClusterExample in [localhost]
2012-05-31 11:37:42,072 INFO  Adding application under brooklyn management
2012-05-31 11:37:42,098 INFO  Starting Brooklyn console at http://localhost:8081, running brooklyn.war
2012-05-31 11:37:46,506 INFO  [RuntimeConfiguration] Configuring data source for environment: DEVELOPMENT
2012-05-31 11:37:48,089 INFO  Started Brooklyn console at http://localhost:8081, running brooklyn.war
2012-05-31 11:37:48,095 INFO  Starting brooklyn application: brooklyn.demo.WebClusterExample
2012-05-31 11:37:48,107 INFO  Starting entity WebClusterExample[id=WAdCBqvV,displayName=WebClusterExample:WAdC] at [LocalhostMachineProvisioningLocation[id=8f3faa62-c7e1-42ad-b66d-3b7c98028ef4,name=localhost]]
2012-05-31 11:37:48,239 INFO  Activating local management for DynamicWebAppCluster[id=gICnhR5c,displayName=DynamicWebAppCluster:gICn] on start
2012-05-31 11:37:48,240 INFO  Activating local management for NginxController[id=W86ToF05,displayName=NginxController:W86T] on start
2012-05-31 11:37:48,244 INFO  adding policy to NginxController[id=W86ToF05,displayName=NginxController:W86T]
2012-05-31 11:37:48,247 INFO  Resize DynamicWebAppCluster[id=gICnhR5c,displayName=DynamicWebAppCluster:gICn] from 0 to 1; delta = 1
2012-05-31 11:37:48,281 INFO  Starting software process entity NginxController[id=W86ToF05,displayName=NginxController:W86T] at [LocalhostMachineProvisioningLocation[id=8f3faa62-c7e1-42ad-b66d-3b7c98028ef4,name=localhost]]
2012-05-31 11:37:48,345 INFO  Activating local management for JBoss7Server[id=B9lLt7JA,displayName=JBoss7Server:B9lL] on start
2012-05-31 11:37:48,348 INFO  Starting software process entity JBoss7Server[id=B9lLt7JA,displayName=JBoss7Server:B9lL] at [LocalhostMachineProvisioningLocation[id=8f3faa62-c7e1-42ad-b66d-3b7c98028ef4,name=localhost]]
2012-05-31 11:37:49,512 INFO  JBoss7Server[id=B9lLt7JA,displayName=JBoss7Server:B9lL] deploying classpath://hello-world-webapp.war to localhost:/tmp/brooklyn/apps/WAdCBqvV/entities/JBoss7Server_7.1.1.Final_B9lLt7JA/standalone/deployments/ROOT.war
2012-05-31 11:37:49,685 WARN  including legacy SSH config property backup for localhost/127.0.0.1; either prefix with sshconfig or add to NON_SSH_PROPS
2012-05-31 11:37:51,644 WARN  error reading brooklyn.event.adapter.HttpPollHelper@14f36a2e[JBoss7Server[id=B9lLt7JA,displayName=JBoss7Server:B9lL]] from JBoss7Server[id=B9lLt7JA,displayName=JBoss7Server:B9lL]: java.io.IOException: Server returned HTTP response code: 500 for URL: http://localhost:9990/management/subsystem/web/connector/http/read-resource?include-runtime=true
java.io.IOException: Server returned HTTP response code: 500 for URL: http://localhost:9990/management/subsystem/web/connector/http/read-resource?include-runtime=true
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
    at sun.net.www.protocol.http.HttpURLConnection$6.run(HttpURLConnection.java:1491)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.net.www.protocol.http.HttpURLConnection.getChainedException(HttpURLConnection.java:1485)
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1139)
    at java.net.URLConnection.getContent(URLConnection.java:688)
    at java_net_URLConnection$getContent.call(Unknown Source)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:112)
    at brooklyn.event.adapter.HttpResponseContext.<init>(HttpResponseContext.groovy:33)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
    at org.codehaus.groovy.reflection.CachedConstructor.invoke(CachedConstructor.java:77)
    at org.codehaus.groovy.runtime.callsite.ConstructorSite$ConstructorSiteNoUnwrapNoCoerce.callConstructor(ConstructorSite.java:102)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallConstructor(CallSiteArray.java:54)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:182)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:190)
    at brooklyn.event.adapter.HttpPollHelper.executePollOnSuccess(HttpPollHelper.groovy:41)
    at brooklyn.event.adapter.AbstractPollHelper.executePoll(AbstractPollHelper.groovy:63)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
    at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1047)
    at groovy.lang.ExpandoMetaClass.invokeMethod(ExpandoMetaClass.java:1110)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:877)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:992)
    at groovy.lang.ExpandoMetaClass.invokeMethod(ExpandoMetaClass.java:1110)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:877)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:697)
    at groovy.lang.GroovyObjectSupport.invokeMethod(GroovyObjectSupport.java:44)
    at groovy.lang.MetaClassImpl.invokeMethodOnGroovyObject(MetaClassImpl.java:1112)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1006)
    at groovy.lang.ExpandoMetaClass.invokeMethod(ExpandoMetaClass.java:1110)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:877)
    at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:66)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:46)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:133)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:137)
    at brooklyn.event.adapter.AbstractPollHelper$_activatePoll_closure3_closure5.doCall(AbstractPollHelper.groovy:40)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSite.invoke(PogoMetaMethodSite.java:226)
    at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.callCurrent(PogoMetaMethodSite.java:52)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:46)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:133)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:141)
    at brooklyn.event.adapter.AbstractPollHelper$_activatePoll_closure3_closure5.doCall(AbstractPollHelper.groovy)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
    at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1047)
    at groovy.lang.ExpandoMetaClass.invokeMethod(ExpandoMetaClass.java:1110)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:877)
    at groovy.lang.Closure.call(Closure.java:412)
    at groovy.lang.Closure.call(Closure.java:406)
    at brooklyn.util.task.BasicExecutionManager$2$1.call(BasicExecutionManager.java:225)
    at brooklyn.util.task.BasicExecutionManager$3.call(BasicExecutionManager.java:267)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
    at java.util.concurrent.FutureTask.run(FutureTask.java:138)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:680)
Caused by: java.io.IOException: Server returned HTTP response code: 500 for URL: http://localhost:9990/management/subsystem/web/connector/http/read-resource?include-runtime=true
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1436)
    at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:379)
    at java_net_HttpURLConnection$getResponseCode.call(Unknown Source)
    ... 66 more
2012-05-31 11:37:51,895 INFO  Adding to NginxController:W86T, new member JBoss7Server:B9lL in locations [localhost/127.0.0.1]
2012-05-31 11:37:59,380 INFO  Web console using default security provider: brooklyn.web.console.security.ExplicitUsersSecurityProvider
2012-05-31 11:37:59,560 WARN  [DEPRECATED] Tag [createLinkTo] is deprecated please use [resource] instead
2012-05-31 11:37:59,578 WARN  [DEPRECATED] Tag [createLinkTo] is deprecated please use [resource] instead
2012-05-31 11:38:05,516 INFO  Web console allowing default user (admin)
2012-05-31 11:38:05,516 INFO  Web console ExplicitUsersSecurityProvider authenticated user admin
2012-05-31 11:38:16,410 INFO  Reconfiguring NginxController:W86T, members are [localhost:8080]
2012-05-31 11:38:17,996 INFO  updating NginxController[id=W86ToF05,displayName=NginxController:W86T]
2012-05-31 11:38:17,996 INFO  Reconfiguring NginxController:W86T, members are [localhost:8080]
2012-05-31 11:38:18,183 INFO  Started application WebClusterExample[id=WAdCBqvV,displayName=WebClusterExample:WAdC]
WebClusterExample[id=WAdCBqvV,displayName=WebClusterExample:WAdC]
    service.isUp: true
  ControlledDynamicWebAppCluster[id=eD9ViDNQ,displayName=WebApp cluster]
      cluster.initial.size = 1
      http.port = 8080,18000-65535
      host.name: localhost
      service.isUp: true
      webapp.url: http://localhost:8000/
    NginxController[id=W86ToF05,displayName=NginxController:W86T]
        install.version = 1.2.0
        proxy.http.port = 8000
        proxy.protocol = http
        proxy.domainName = anonymous
        webapp.url: http://localhost:8000/
        proxy.http.port: 8000
        proxy.protocol: http
        proxy.domainName: anonymous
        proxy.url: http://localhost:8000/
        proxy.targets: [localhost:8080]
        host.name: localhost
        host.address: 127.0.0.1
        service.state: running
        service.isUp: true
    DynamicWebAppCluster[id=gICnhR5c,displayName=DynamicWebAppCluster:gICn]
        http.port = 8080,18000-65535
        cluster.initial.size = 1
        cluster.reqs.count.total: 1
        cluster.reqs.count.average: 1.0
        cluster.reqs.errors.total: 0
        cluster.reqs.errors.average: 0.0
        cluster.reqs.persec.total: 0.10046296296296296
        cluster.reqs.persec.average: 0.10046296296296296
        cluster.reqs.processing-time.total: 67
        cluster.reqs.processing-time.average: 67.0
        service.isUp: true
        group.members.count: 1
      JBoss7Server[id=B9lLt7JA,displayName=JBoss7Server:B9lL]
          install.version = 7.1.1.Final
          webapp.jboss.managementPort = 9990-65535
          webapp.jboss.managementNativePort = 10999-65535
          webapp.jboss.portIncrement = 0
          wars.root = classpath://hello-world-webapp.war
          http.port = 8080-65535
          webapp.jboss.managementPort: 9990
          webapp.jboss.managementNativePort: 10999
          webapp.jboss.portIncrement: 0
          webapp.jboss.managementStatus: 200
          http.port: 8080
          webapp.reqs.errors: 0
          webpp.reqs.processing.max: 67
          webapp.reqs.total: 1
          webapp.reqs.processing.time: 67
          webapp.reqs.bytes.received: 0
          webapp.reqs.bytes.sent: 520
          webapp.reqs.persec.last: 4.62962962962963
          webapp.reqs.persec.avg.10000: 0.10046296296296296
          webapp.url: http://localhost:8080/
          host.name: localhost
          host.address: 127.0.0.1
          service.state: running
          service.isUp: true
2012-05-31 11:38:18,226 INFO  Launched application; now blocking to wait for cntrl-c or kill
^C2012-05-31 11:43:21,576 INFO  Brooklyn launcher's shutdown-hook invoked: shutting down application
2012-05-31 11:43:21,576 INFO  Brooklyn launcher's shutdown-hook invoked: shutting down web-console
2012-05-31 11:43:21,578 INFO  Stopping Brooklyn web console at http://localhost:8081 (brooklyn.war)
Application context shutting down...
2012-05-31 11:43:21,583 INFO  Stopping application WebClusterExample[id=WAdCBqvV,displayName=WebClusterExample:WAdC]
2012-05-31 11:43:21,590 INFO  Stopping software process entity NginxController[id=W86ToF05,displayName=NginxController:W86T]
Application context shutdown.
2012-05-31 11:43:21,835 INFO  Resize DynamicWebAppCluster[id=gICnhR5c,displayName=DynamicWebAppCluster:gICn] from 1 to 0; delta = -1
2012-05-31 11:43:21,844 INFO  Stopping software process entity JBoss7Server[id=B9lLt7JA,displayName=JBoss7Server:B9lL]
2012-05-31 11:43:21,905 INFO  Stopped Brooklyn web console at http://localhost:8081
2012-05-31 11:43:22,017 INFO  Stopped application WebClusterExample[id=WAdCBqvV,displayName=WebClusterExample:WAdC]

Here is the output for the global-web-fabric example:

pegasus:bin cosmin$ ./demo.sh 
Launching brooklyn app: brooklyn.demo.GlobalWebFabricExample in [localhost]
2012-05-31 12:20:50,225 INFO  Adding application under brooklyn management
2012-05-31 12:20:50,238 INFO  GeoScaling service will configure redirection for 'brooklyn-OPM2uWQ9.cloudsoft.geopaas.org' domain
2012-05-31 12:20:50,274 INFO  Starting Brooklyn console at http://localhost:8081, running brooklyn.war
2012-05-31 12:20:54,604 INFO  [RuntimeConfiguration] Configuring data source for environment: DEVELOPMENT
2012-05-31 12:20:56,006 INFO  Started Brooklyn console at http://localhost:8081, running brooklyn.war
2012-05-31 12:20:56,012 INFO  Starting brooklyn application: brooklyn.demo.GlobalWebFabricExample
2012-05-31 12:20:56,024 INFO  Starting entity GlobalWebFabricExample[id=vHnhK5ra,displayName=GlobalWebFabricExample:vHnh] at [LocalhostMachineProvisioningLocation[id=a0a2b4a8-fc45-421d-ab1b-d01e3f7484a7,name=localhost]]
2012-05-31 12:20:56,074 INFO  Adding a cluster to DynamicFabric[id=LgUQ0bTK,displayName=Web Fabric] in LocalhostMachineProvisioningLocation[id=a0a2b4a8-fc45-421d-ab1b-d01e3f7484a7,name=localhost] with properties {}
2012-05-31 12:20:56,133 INFO  Activating local management for ControlledDynamicWebAppCluster[id=VHEiC3Cl,displayName=ControlledDynamicWebAppCluster:VHEi (localhost)] on start
2012-05-31 12:20:56,261 INFO  Activating local management for DynamicWebAppCluster[id=TxeqHX3I,displayName=DynamicWebAppCluster:Txeq] on start
2012-05-31 12:20:56,261 INFO  Activating local management for NginxController[id=wmkvXHkT,displayName=NginxController:wmkv] on start
2012-05-31 12:20:56,264 INFO  adding policy to NginxController[id=wmkvXHkT,displayName=NginxController:wmkv]
2012-05-31 12:20:56,267 INFO  Resize DynamicWebAppCluster[id=TxeqHX3I,displayName=DynamicWebAppCluster:Txeq] from 0 to 1; delta = 1
2012-05-31 12:20:56,289 INFO  Starting software process entity NginxController[id=wmkvXHkT,displayName=NginxController:wmkv] at [LocalhostMachineProvisioningLocation[id=a0a2b4a8-fc45-421d-ab1b-d01e3f7484a7,name=localhost]]
2012-05-31 12:20:56,349 INFO  Activating local management for JBoss7Server[id=Zuwt1i1J,displayName=JBoss7Server:Zuwt] on start
2012-05-31 12:20:56,351 INFO  Starting software process entity JBoss7Server[id=Zuwt1i1J,displayName=JBoss7Server:Zuwt] at [LocalhostMachineProvisioningLocation[id=a0a2b4a8-fc45-421d-ab1b-d01e3f7484a7,name=localhost]]
2012-05-31 12:20:57,525 INFO  JBoss7Server[id=Zuwt1i1J,displayName=JBoss7Server:Zuwt] deploying classpath://hello-world-webapp.war to localhost:/tmp/brooklyn/apps/vHnhK5ra/entities/JBoss7Server_7.1.1.Final_Zuwt1i1J/standalone/deployments/ROOT.war
2012-05-31 12:20:57,701 WARN  including legacy SSH config property backup for localhost/127.0.0.1; either prefix with sshconfig or add to NON_SSH_PROPS
2012-05-31 12:20:59,281 INFO  Web console using default security provider: brooklyn.web.console.security.ExplicitUsersSecurityProvider
2012-05-31 12:20:59,293 INFO  redirecting Session Content:
 from dashboard to login page
2012-05-31 12:20:59,293 INFO  redirecting Session Content:
 from entity to login page
2012-05-31 12:20:59,293 INFO  redirecting Session Content:
 from entity to login page
2012-05-31 12:20:59,597 WARN  [DEPRECATED] Tag [createLinkTo] is deprecated please use [resource] instead
2012-05-31 12:20:59,641 WARN  [DEPRECATED] Tag [createLinkTo] is deprecated please use [resource] instead
2012-05-31 12:20:59,764 WARN  error reading brooklyn.event.adapter.HttpPollHelper@63e5a3e[JBoss7Server[id=Zuwt1i1J,displayName=JBoss7Server:Zuwt]] from JBoss7Server[id=Zuwt1i1J,displayName=JBoss7Server:Zuwt]: java.io.IOException: Server returned HTTP response code: 500 for URL: http://localhost:9990/management/subsystem/web/connector/http/read-resource?include-runtime=true
java.io.IOException: Server returned HTTP response code: 500 for URL: http://localhost:9990/management/subsystem/web/connector/http/read-resource?include-runtime=true
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
    at sun.net.www.protocol.http.HttpURLConnection$6.run(HttpURLConnection.java:1491)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.net.www.protocol.http.HttpURLConnection.getChainedException(HttpURLConnection.java:1485)
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1139)
    at java.net.URLConnection.getContent(URLConnection.java:688)
    at java_net_URLConnection$getContent.call(Unknown Source)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:112)
    at brooklyn.event.adapter.HttpResponseContext.<init>(HttpResponseContext.groovy:33)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
    at org.codehaus.groovy.reflection.CachedConstructor.invoke(CachedConstructor.java:77)
    at org.codehaus.groovy.runtime.callsite.ConstructorSite$ConstructorSiteNoUnwrapNoCoerce.callConstructor(ConstructorSite.java:102)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallConstructor(CallSiteArray.java:54)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:182)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:190)
    at brooklyn.event.adapter.HttpPollHelper.executePollOnSuccess(HttpPollHelper.groovy:41)
    at brooklyn.event.adapter.AbstractPollHelper.executePoll(AbstractPollHelper.groovy:63)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
    at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1047)
    at groovy.lang.ExpandoMetaClass.invokeMethod(ExpandoMetaClass.java:1110)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:877)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:992)
    at groovy.lang.ExpandoMetaClass.invokeMethod(ExpandoMetaClass.java:1110)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:877)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:697)
    at groovy.lang.GroovyObjectSupport.invokeMethod(GroovyObjectSupport.java:44)
    at groovy.lang.MetaClassImpl.invokeMethodOnGroovyObject(MetaClassImpl.java:1112)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1006)
    at groovy.lang.ExpandoMetaClass.invokeMethod(ExpandoMetaClass.java:1110)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:877)
    at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:66)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:46)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:133)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:137)
    at brooklyn.event.adapter.AbstractPollHelper$_activatePoll_closure3_closure5.doCall(AbstractPollHelper.groovy:40)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSite.invoke(PogoMetaMethodSite.java:226)
    at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.callCurrent(PogoMetaMethodSite.java:52)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:46)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:133)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:141)
    at brooklyn.event.adapter.AbstractPollHelper$_activatePoll_closure3_closure5.doCall(AbstractPollHelper.groovy)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
    at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1047)
    at groovy.lang.ExpandoMetaClass.invokeMethod(ExpandoMetaClass.java:1110)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:877)
    at groovy.lang.Closure.call(Closure.java:412)
    at groovy.lang.Closure.call(Closure.java:406)
    at brooklyn.util.task.BasicExecutionManager$2$1.call(BasicExecutionManager.java:225)
    at brooklyn.util.task.BasicExecutionManager$3.call(BasicExecutionManager.java:267)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
    at java.util.concurrent.FutureTask.run(FutureTask.java:138)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:680)
Caused by: java.io.IOException: Server returned HTTP response code: 500 for URL: http://localhost:9990/management/subsystem/web/connector/http/read-resource?include-runtime=true
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1436)
    at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:379)
    at java_net_HttpURLConnection$getResponseCode.call(Unknown Source)
    ... 66 more
2012-05-31 12:21:00,046 INFO  Adding to NginxController:wmkv, new member JBoss7Server:Zuwt in locations [localhost/127.0.0.1]
2012-05-31 12:21:00,473 INFO  Reconfiguring NginxController:wmkv, members are [localhost:8080]
2012-05-31 12:21:04,861 INFO  Web console allowing default user (admin)
2012-05-31 12:21:04,861 INFO  Web console ExplicitUsersSecurityProvider authenticated user admin
2012-05-31 12:22:16,261 WARN  Software process entity NginxController[id=wmkvXHkT,displayName=NginxController:wmkv] did not appear to start; setting state to indicate problem; consult logs for more details
2012-05-31 12:22:16,277 INFO  updating NginxController[id=wmkvXHkT,displayName=NginxController:wmkv]
2012-05-31 12:22:16,277 INFO  Reconfiguring NginxController:wmkv, members are [localhost:8080]
2012-05-31 12:22:16,278 WARN  error reading brooklyn.event.adapter.HttpPollHelper@23c2e2eb[NginxController[id=wmkvXHkT,displayName=NginxController:wmkv]] from NginxController[id=wmkvXHkT,displayName=NginxController:wmkv]: java.net.ConnectException: Connection refused
java.net.ConnectException: Connection refused
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351)
    at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:432)
    at java.net.Socket.connect(Socket.java:529)
    at java.net.Socket.connect(Socket.java:478)
    at sun.net.NetworkClient.doConnect(NetworkClient.java:163)
    at sun.net.www.http.HttpClient.openServer(HttpClient.java:395)
    at sun.net.www.http.HttpClient.openServer(HttpClient.java:530)
    at sun.net.www.http.HttpClient.<init>(HttpClient.java:234)
    at sun.net.www.http.HttpClient.New(HttpClient.java:307)
    at sun.net.www.http.HttpClient.New(HttpClient.java:324)
    at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:970)
    at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:911)
    at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:836)
    at sun.net.www.protocol.http.HttpURLConnection$connect.call(Unknown Source)
    at brooklyn.event.adapter.HttpPollHelper.executePollOnSuccess(HttpPollHelper.groovy:40)
    at brooklyn.event.adapter.AbstractPollHelper.executePoll(AbstractPollHelper.groovy:63)
    at sun.reflect.GeneratedMethodAccessor114.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
    at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1047)
    at groovy.lang.ExpandoMetaClass.invokeMethod(ExpandoMetaClass.java:1110)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:877)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:992)
    at groovy.lang.ExpandoMetaClass.invokeMethod(ExpandoMetaClass.java:1110)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:877)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:697)
    at groovy.lang.GroovyObjectSupport.invokeMethod(GroovyObjectSupport.java:44)
    at groovy.lang.MetaClassImpl.invokeMethodOnGroovyObject(MetaClassImpl.java:1112)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1006)
    at groovy.lang.ExpandoMetaClass.invokeMethod(ExpandoMetaClass.java:1110)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:877)
    at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:66)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:137)
    at brooklyn.event.adapter.AbstractPollHelper$_activatePoll_closure3_closure5.doCall(AbstractPollHelper.groovy:40)
    at sun.reflect.GeneratedMethodAccessor113.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSite.invoke(PogoMetaMethodSite.java:226)
    at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.callCurrent(PogoMetaMethodSite.java:52)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:141)
    at brooklyn.event.adapter.AbstractPollHelper$_activatePoll_closure3_closure5.doCall(AbstractPollHelper.groovy)
    at sun.reflect.GeneratedMethodAccessor112.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
    at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1047)
    at groovy.lang.ExpandoMetaClass.invokeMethod(ExpandoMetaClass.java:1110)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:877)
    at groovy.lang.Closure.call(Closure.java:412)
    at groovy.lang.Closure.call(Closure.java:406)
    at brooklyn.util.task.BasicExecutionManager$2$1.call(BasicExecutionManager.java:225)
    at brooklyn.util.task.BasicExecutionManager$3.call(BasicExecutionManager.java:267)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
    at java.util.concurrent.FutureTask.run(FutureTask.java:138)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:680)
2012-05-31 12:22:16,450 INFO  Started application GlobalWebFabricExample[id=vHnhK5ra,displayName=GlobalWebFabricExample:vHnh]
GlobalWebFabricExample[id=vHnhK5ra,displayName=GlobalWebFabricExample:vHnh]
    service.isUp: true
  DynamicFabric[id=LgUQ0bTK,displayName=Web Fabric]
      fabric.size: 1
      service.isUp: true
    ControlledDynamicWebAppCluster[id=VHEiC3Cl,displayName=ControlledDynamicWebAppCluster:VHEi (localhost)]
        cluster.initial.size = 1
        wars.root = classpath://hello-world-webapp.war
        http.port = 8080,18000-65535
        host.name: localhost
        service.isUp: true
        webapp.url: http://localhost:80/
      NginxController[id=wmkvXHkT,displayName=NginxController:wmkv]
          install.version = 1.2.0
          proxy.http.port = 80
          proxy.protocol = http
          proxy.domainName = anonymous
          webapp.url: http://localhost:80/
          proxy.http.port: 80
          proxy.protocol: http
          proxy.domainName: anonymous
          proxy.url: http://localhost:80/
          proxy.targets: [localhost:8080]
          host.name: localhost
          host.address: 127.0.0.1
          service.state: on-fire
          service.isUp: false
      DynamicWebAppCluster[id=TxeqHX3I,displayName=DynamicWebAppCluster:Txeq]
          http.port = 8080,18000-65535
          cluster.initial.size = 1
          cluster.reqs.count.total: 0
          cluster.reqs.count.average: 0.0
          cluster.reqs.errors.total: 0
          cluster.reqs.errors.average: 0.0
          cluster.reqs.persec.total: 0.0
          cluster.reqs.persec.average: 0.0
          cluster.reqs.processing-time.total: 0
          cluster.reqs.processing-time.average: 0.0
          service.isUp: true
          group.members.count: 1
        JBoss7Server[id=Zuwt1i1J,displayName=JBoss7Server:Zuwt]
            install.version = 7.1.1.Final
            webapp.jboss.managementPort = 9990-65535
            webapp.jboss.managementNativePort = 10999-65535
            webapp.jboss.portIncrement = 0
            wars.root = classpath://hello-world-webapp.war
            http.port = 8080,18000-65535
            webapp.jboss.managementPort: 9990
            webapp.jboss.managementNativePort: 10999
            webapp.jboss.portIncrement: 0
            webapp.jboss.managementStatus: 200
            http.port: 8080
            webapp.reqs.errors: 0
            webpp.reqs.processing.max: 0
            webapp.reqs.total: 0
            webapp.reqs.processing.time: 0
            webapp.reqs.bytes.received: 0
            webapp.reqs.bytes.sent: 0
            webapp.reqs.persec.last: 0.0
            webapp.reqs.persec.avg.10000: 0.0
            webapp.url: http://localhost:8080/
            host.name: localhost
            host.address: 127.0.0.1
            service.state: running
            service.isUp: true
  GeoscalingDnsService[id=Bmmu2iK1,displayName=GeoScaling DNS]
      randomize.subdomain.name = true
      geoscaling.username = brooklyn
      geoscaling.password = xxxxxxxx
      geoscaling.primary.domain.name = cloudsoft.geopaas.org
      geoscaling.smart.subdomain.name = brooklyn
      geoscaling.account: brooklyn
      geoscaling.managed.domain: brooklyn-OPM2uWQ9.cloudsoft.geopaas.org
      host.name: brooklyn-OPM2uWQ9.cloudsoft.geopaas.org
2012-05-31 12:22:16,480 INFO  Launched application; now blocking to wait for cntrl-c or kill
^C2012-05-31 12:23:43,642 INFO  Brooklyn launcher's shutdown-hook invoked: shutting down web-console
2012-05-31 12:23:43,642 INFO  Brooklyn launcher's shutdown-hook invoked: shutting down application
2012-05-31 12:23:43,643 INFO  Stopping Brooklyn web console at http://localhost:8081 (brooklyn.war)
Application context shutting down...
2012-05-31 12:23:43,651 INFO  Stopping application GlobalWebFabricExample[id=vHnhK5ra,displayName=GlobalWebFabricExample:vHnh]
2012-05-31 12:23:43,664 INFO  Stopping software process entity NginxController[id=wmkvXHkT,displayName=NginxController:wmkv]
Application context shutdown.
2012-05-31 12:23:43,900 INFO  Resize DynamicWebAppCluster[id=TxeqHX3I,displayName=DynamicWebAppCluster:Txeq] from 1 to 0; delta = -1
2012-05-31 12:23:43,909 INFO  Stopping software process entity JBoss7Server[id=Zuwt1i1J,displayName=JBoss7Server:Zuwt]
2012-05-31 12:23:43,958 INFO  Stopped Brooklyn web console at http://localhost:8081
2012-05-31 12:23:44,083 INFO  Stopped application GlobalWebFabricExample[id=vHnhK5ra,displayName=GlobalWebFabricExample:vHnh]

Improve EntityClass, and remove EntityLocal.getEffectors/getSensors/getConfigKeys

See discussion in https://groups.google.com/forum/?fromgroups#!searchin/brooklyn-dev/EntityClass/brooklyn-dev/-OhfMzGhIPU/FqHX9UO_g5oJ

  • delete EntityLocal.getConfigKeys(), EntityLocal.getSensors() and EntityLocal.getEffectors().
    These methods are already on EntityClass
  • rename EntityClass to EntityType.
  • clean up the javadoc and the comments.
  • it will give an immutable snapshot of the set of sensors, effectors and config keys that an entity has. This describes just the types, rather than the values.
    If someone adds a new sensor to the entity instance on-the-fly, then a subsequent call to entity.getEntityType().getSensors() will include that change.
    (this is a change in semantics: previously it did not include sensors added on-the-fly).

Hadoop processes doesn't stop when doing shutdown on localhost, and strange warning message

When I stop brooklyn after running the hadoop.sh example script (that in turn starts brooklyn.extras.whirr.WhirrHadoopExample) I get this warning message:

2012-05-31 13:13:13,901 INFO  Finished running stop phase scripts on all cluster instances
2012-05-31 13:13:13,907 WARN  call to unmanage entity brooklyn.extras.whirr.core.WhirrCluster$1[id=k9jCtUMd,displayName=Instance:localhost] but it is not known at brooklyn.management.internal.LocalManagementContext@1578fd9; skipping, and all descendants
2012-05-31 13:13:13,908 WARN  call to unmanage entity brooklyn.extras.whirr.core.WhirrCluster$1[id=fi0TDMXg,displayName=Instance:localhost3] but it is not known at brooklyn.management.internal.LocalManagementContext@1578fd9; skipping, and all descendants
2012-05-31 13:13:13,910 INFO  Stopped application WhirrHadoopExample[id=DFHcxiav,displayName=WhirrHadoopExample:DFHc]

UPDATE: It looks like the hadoop processes don't shut down properly when stopping brooklyn (if deploying to localhost). If deploying to AWS on the other hand, I still get the warnings but the VMs get shutdown normally.

Here is the full output:

cosmin@ubuntu-vm:~/Desktop/brooklyn/examples/hadoop-and-whirr/brooklyn-example-hadoop-and-whirr/bin$ ./hadoop.sh 
Launching brooklyn app: brooklyn.extras.whirr.WhirrHadoopExample in [localhost]
2012-05-31 13:06:59,616 INFO  Adding application under brooklyn management
2012-05-31 13:06:59,643 INFO  Starting Brooklyn console at http://localhost:8081, running brooklyn.war
2012-05-31 13:07:03,690 INFO  [RuntimeConfiguration] Configuring data source for environment: DEVELOPMENT
2012-05-31 13:07:05,171 INFO  Started Brooklyn console at http://localhost:8081, running brooklyn.war
2012-05-31 13:07:05,176 INFO  Starting brooklyn application: brooklyn.extras.whirr.WhirrHadoopExample
2012-05-31 13:07:05,192 INFO  Starting entity WhirrHadoopExample[id=DFHcxiav,displayName=WhirrHadoopExample:DFHc] at [LocalhostMachineProvisioningLocation[id=757b20b3-1aba-48b7-b22d-46318969f939,name=localhost]]
2012-05-31 13:07:05,840 INFO  Starting cluster with roles [1 hadoop-namenode+hadoop-jobtracker, 1 hadoop-datanode+hadoop-tasktracker] in location LocalhostMachineProvisioningLocation[id=757b20b3-1aba-48b7-b22d-46318969f939,name=localhost]
2012-05-31 13:07:05,841 INFO  Starting cluster WhirrHadoopCluster[id=WuXoigCZ,displayName=brooklyn-hadoop-example] with roles [1 hadoop-namenode+hadoop-jobtracker, 1 hadoop-datanode+hadoop-tasktracker] in location LocalhostMachineProvisioningLocation[id=757b20b3-1aba-48b7-b22d-46318969f939,name=localhost]
2012-05-31 13:07:08,224 INFO  << (cosmin:rsa[fingerprint(27:ab:87:66:18:d5:0e:fa:22:f0:3b:1c:df:eb:88:12),sha1(54:95:9f:5e:1a:f3:6b:60:de:ff:fe:7e:53:c3:5a:b7:ef:58:60:a1)]@127.0.0.1:22) error acquiring SFTPClient() (attempt 1 of 5): (cosmin:rsa[fingerprint(27:ab:87:66:18:d5:0e:fa:22:f0:3b:1c:df:eb:88:12),sha1(54:95:9f:5e:1a:f3:6b:60:de:ff:fe:7e:53:c3:5a:b7:ef:58:60:a1)]@127.0.0.1:22) ssh not connected!
2012-05-31 13:07:09,528 INFO  Web console using default security provider: brooklyn.web.console.security.ExplicitUsersSecurityProvider
2012-05-31 13:07:09,563 INFO  redirecting Session Content:
 from entity to login page
2012-05-31 13:07:09,571 INFO  redirecting Session Content:
 from entity to login page
2012-05-31 13:07:09,736 WARN  [DEPRECATED] Tag [createLinkTo] is deprecated please use [resource] instead
2012-05-31 13:07:09,789 WARN  [DEPRECATED] Tag [createLinkTo] is deprecated please use [resource] instead
2012-05-31 13:07:10,372 WARN  [DEPRECATED] Tag [createLinkTo] is deprecated please use [resource] instead
2012-05-31 13:07:10,373 WARN  [DEPRECATED] Tag [createLinkTo] is deprecated please use [resource] instead
2012-05-31 13:07:10,505 INFO  << (cosmin:rsa[fingerprint(27:ab:87:66:18:d5:0e:fa:22:f0:3b:1c:df:eb:88:12),sha1(54:95:9f:5e:1a:f3:6b:60:de:ff:fe:7e:53:c3:5a:b7:ef:58:60:a1)]@127.0.0.1:22) error acquiring SFTPClient() (attempt 1 of 5): (cosmin:rsa[fingerprint(27:ab:87:66:18:d5:0e:fa:22:f0:3b:1c:df:eb:88:12),sha1(54:95:9f:5e:1a:f3:6b:60:de:ff:fe:7e:53:c3:5a:b7:ef:58:60:a1)]@127.0.0.1:22) ssh not connected!
2012-05-31 13:07:10,534 WARN  [DEPRECATED] Tag [createLinkTo] is deprecated please use [resource] instead
2012-05-31 13:07:10,535 WARN  [DEPRECATED] Tag [createLinkTo] is deprecated please use [resource] instead
2012-05-31 13:07:15,540 INFO  Web console allowing default user (admin)
2012-05-31 13:07:15,540 INFO  Web console ExplicitUsersSecurityProvider authenticated user admin
2012-05-31 13:10:02,975 INFO  Wrote instances file /home/cosmin/.whirr/brooklyn-hadoop-example/instances
2012-05-31 13:10:03,455 INFO  Authorizing firewall ingress to [localhost3] on ports [50070] for [129.215.2.125/32]
2012-05-31 13:10:03,456 INFO  Authorizing firewall ingress to [localhost3] on ports [8020, 8021] for [127.0.0.1/32]
2012-05-31 13:10:03,646 INFO  Authorizing firewall ingress to [localhost3] on ports [50030] for [129.215.2.125/32]
2012-05-31 13:10:03,646 INFO  Authorizing firewall ingress to [localhost3] on ports [8021] for [127.0.0.1/32]
2012-05-31 13:10:03,783 INFO  Authorizing firewall ingress to [localhost3] on ports [50030] for [129.215.2.125/32]
2012-05-31 13:10:03,783 INFO  Authorizing firewall ingress to [localhost3] on ports [8021] for [127.0.0.1/32]
2012-05-31 13:10:03,881 INFO  << (cosmin:rsa[fingerprint(27:ab:87:66:18:d5:0e:fa:22:f0:3b:1c:df:eb:88:12),sha1(54:95:9f:5e:1a:f3:6b:60:de:ff:fe:7e:53:c3:5a:b7:ef:58:60:a1)]@127.0.0.1:22) error acquiring SFTPClient() (attempt 1 of 5): (cosmin:rsa[fingerprint(27:ab:87:66:18:d5:0e:fa:22:f0:3b:1c:df:eb:88:12),sha1(54:95:9f:5e:1a:f3:6b:60:de:ff:fe:7e:53:c3:5a:b7:ef:58:60:a1)]@127.0.0.1:22) ssh not connected!
2012-05-31 13:10:06,222 INFO  << (cosmin:rsa[fingerprint(27:ab:87:66:18:d5:0e:fa:22:f0:3b:1c:df:eb:88:12),sha1(54:95:9f:5e:1a:f3:6b:60:de:ff:fe:7e:53:c3:5a:b7:ef:58:60:a1)]@127.0.0.1:22) error acquiring SFTPClient() (attempt 1 of 5): (cosmin:rsa[fingerprint(27:ab:87:66:18:d5:0e:fa:22:f0:3b:1c:df:eb:88:12),sha1(54:95:9f:5e:1a:f3:6b:60:de:ff:fe:7e:53:c3:5a:b7:ef:58:60:a1)]@127.0.0.1:22) ssh not connected!
2012-05-31 13:11:24,434 INFO  Completed configuration of brooklyn-hadoop-example role hadoop-namenode
2012-05-31 13:11:24,435 INFO  Namenode web UI available at http://localhost:50070
2012-05-31 13:11:24,435 INFO  Wrote file /home/cosmin/.whirr/brooklyn-hadoop-example/hadoop-site.xml
2012-05-31 13:11:24,435 INFO  Wrote Hadoop proxy script /home/cosmin/.whirr/brooklyn-hadoop-example/hadoop-proxy.sh
2012-05-31 13:11:24,436 INFO  Completed configuration of brooklyn-hadoop-example role hadoop-jobtracker
2012-05-31 13:11:24,436 INFO  Jobtracker web UI available at http://localhost:50030
2012-05-31 13:11:24,436 INFO  Completed configuration of brooklyn-hadoop-example role hadoop-datanode
2012-05-31 13:11:24,436 INFO  Completed configuration of brooklyn-hadoop-example role hadoop-tasktracker
2012-05-31 13:11:24,436 INFO  Wrote instances file /home/cosmin/.whirr/brooklyn-hadoop-example/instances
2012-05-31 13:11:24,442 INFO  Finished running start phase scripts on all cluster instances
2012-05-31 13:11:24,446 INFO  Creating group for instance localhost
2012-05-31 13:11:24,489 INFO  Creating entity for 'hadoop-datanode' on instance localhost
2012-05-31 13:11:24,508 INFO  Creating entity for 'hadoop-tasktracker' on instance localhost
2012-05-31 13:11:24,520 INFO  Creating group for instance localhost3
2012-05-31 13:11:24,523 INFO  Creating entity for 'hadoop-namenode' on instance localhost3
2012-05-31 13:11:24,534 INFO  Creating entity for 'hadoop-jobtracker' on instance localhost3
2012-05-31 13:11:24,550 INFO  Starting local SOCKS proxy on port 6666 ...
2012-05-31 13:11:24,591 INFO  Started application WhirrHadoopExample[id=DFHcxiav,displayName=WhirrHadoopExample:DFHc]
Warning: Permanently added 'localhost' (RSA) to the list of known hosts.
WhirrHadoopExample[id=DFHcxiav,displayName=WhirrHadoopExample:DFHc]
    service.isUp: true
  WhirrHadoopCluster[id=WuXoigCZ,displayName=brooklyn-hadoop-example]
      whirr.hadoop.name = brooklyn-hadoop-example
      whirr.hadoop.size = 2
      whirr.hadoop.memory = 2048
      whirr.recipe = whirr.cluster-name=brooklyn-hadoop-example
whirr.instance-templates=1 hadoop-namenode+hadoop-jobtracker, 1 hadoop-datanode+hadoop-tasktracker
whirr.hardware-min-ram=2048
      whirr.hadoop.namenodeUrl: hdfs://localhost:8020/
      whirr.hadoop.jobtrackerHostPort: localhost:8021
      whirr.hadoop.socks.server: localhost:6666
      whirr.cluster.name: brooklyn-hadoop-example
      service.isUp: true
    brooklyn.extras.whirr.core.WhirrCluster$1[id=k9jCtUMd,displayName=Instance:localhost]
        group.members.count: 0
      WhirrRole[id=VyfGuoN6,displayName=Role:hadoop-datanode]
          whirr.instance.role = hadoop-datanode
      WhirrRole[id=bGJeMoDQ,displayName=Role:hadoop-tasktracker]
          whirr.instance.role = hadoop-tasktracker
    brooklyn.extras.whirr.core.WhirrCluster$1[id=fi0TDMXg,displayName=Instance:localhost3]
        group.members.count: 0
      WhirrRole[id=lr0IvGYr,displayName=Role:hadoop-namenode]
          whirr.instance.role = hadoop-namenode
      WhirrRole[id=VzILISlo,displayName=Role:hadoop-jobtracker]
          whirr.instance.role = hadoop-jobtracker
2012-05-31 13:11:24,662 INFO  Application started. Press return to stop.

2012-05-31 13:13:13,802 INFO  Stopping application WhirrHadoopExample[id=DFHcxiav,displayName=WhirrHadoopExample:DFHc]
2012-05-31 13:13:13,901 INFO  Finished running stop phase scripts on all cluster instances
2012-05-31 13:13:13,907 WARN  call to unmanage entity brooklyn.extras.whirr.core.WhirrCluster$1[id=k9jCtUMd,displayName=Instance:localhost] but it is not known at brooklyn.management.internal.LocalManagementContext@1578fd9; skipping, and all descendants
2012-05-31 13:13:13,908 WARN  call to unmanage entity brooklyn.extras.whirr.core.WhirrCluster$1[id=fi0TDMXg,displayName=Instance:localhost3] but it is not known at brooklyn.management.internal.LocalManagementContext@1578fd9; skipping, and all descendants
2012-05-31 13:13:13,910 INFO  Stopped application WhirrHadoopExample[id=DFHcxiav,displayName=WhirrHadoopExample:DFHc]
^C2012-05-31 13:13:40,346 INFO  Brooklyn launcher's shutdown-hook invoked: shutting down web-console
2012-05-31 13:13:40,346 INFO  Stopping Brooklyn web console at http://localhost:8081 (brooklyn.war)
2012-05-31 13:13:40,348 INFO  Brooklyn launcher's shutdown-hook invoked: shutting down application
Application context shutting down...
2012-05-31 13:13:40,358 INFO  Stopping application WhirrHadoopExample[id=DFHcxiav,displayName=WhirrHadoopExample:DFHc]
2012-05-31 13:13:40,365 WARN  call to unmanage entity WhirrHadoopExample[id=DFHcxiav,displayName=WhirrHadoopExample:DFHc] but it is not known at brooklyn.management.internal.LocalManagementContext@1578fd9; skipping, and all descendants
2012-05-31 13:13:40,369 INFO  Stopped application WhirrHadoopExample[id=DFHcxiav,displayName=WhirrHadoopExample:DFHc]
Application context shutdown.
2012-05-31 13:13:40,669 INFO  Stopped Brooklyn web console at http://localhost:8081

Longevity/stress tests for brooklyn

We need more longevity and stress tests in Brooklyn.

Example test
As a first test to write, how about:

  • create a web-cluster (nginx + as7)
  • a resize policy to scale-out and scale-back the cluster (from 1 to 4 app-servers)
  • an "enricher" to publish a pseudo-load sensor that varies sinusoidally over time so that the resizing will be triggered every couple of minutes.
  • a scheduled executor for sending http requests, to confirm the web-app is always accessible via the nginx node

We'd programmatically monitor:

  • scale up/down keep happening (ps aux | grep jboss returns different pids over time)
  • memory usage of brooklyn (jmap -histo )
  • grep -E "SEVERE|ERROR|WARN|Exception|Error" brooklyn.log
    We should strive for that to be empty!

If watching manually, we'd also run jconsole.

We'd first run this on localhost. Then we'd run it with a fixed set of IPs if we have access to a few spare servers.

Test structure
As a first step, we can write a script that launches both brooklyn and a "monitoring process" to do the above checks. Groovy is probably a good bet for the monitoring process code, because it is scripting.

As a future step, we would beg a server (or few) for running this regularly. We'd have jenkins run a testng test for it (that called the scripts?). Jenkins would run it every day, and the test would run for 23 hours.

Improving test coverage
There are various other things I'd love to be covered in the longevity tests. These include:

  • brooklyn web-console
  • more entity types
  • more policies / enrichers
  • entities that query sensor-values using jmx, http, and scripts

Document how to make a release

We've just made a 0.4.0-M1, as something of an experiment. Here is the general process:

  • change version (using usage/scripts/change-version.sh)
  • mvn clean all
  • push to a branch
  • mvn deploy (with appropriate settings.xml)
  • update docs (as per docs/_script/help.txt)
  • update examples (copying examples to brooklyncentral/brooklyn-examples project, modifying pom.xml, and pushing)
    • remove relativePath entry from pom.xml (possibly unnecessary?)
    • add repositories section, adding lib-release-local (for now)
    • make sure bin/*.sh files are checked in (not gitignored)

There are some repo issues to resolve (which will be the next issue I create), and then we should document exactly what the process is, and put it in the documentation. But wanted to capture (a) knowledge so far, and (b) need to do this.

maven archetype

A maven archetype for creating a new brooklyn project, with the right dependencies (and optionally groovy compilation support), would be very useful and fairly straightforward.

MissingMethodException when doing integer*TimeUnit, during cntrl-c of brooklyn app

When running a brooklyn web cluster app at the command line, I did cntrl-c. It took a few minutes (during which it was still starting/installing JBoss), and then I got the exception below.

(Note that the code like 1 * TimeUnit.SECONDS is possible due to fancy meta-programming in TimeExtras; it generates groovy Duration instances as long as TimeExtras has been class-loaded first).

I'm confident that the JBoss7Server code is fine, because it works at other times.

I wonder whether this could be due to compilation happening in the background... I had Eclipse open so it's conceivable that it might have re-compiled some of the .class files while the brooklyn app was running. However, that's just speculation. I saw this same error once before when doing cntrl-c, but that time I'd done a mvn clean install while the brooklyn app was still running so I'd put it down to that...

If it is just caused by re-compilation then it's annoying for developers, but also very low-priority...


Caused by: groovy.lang.MissingMethodException: No signature of method: java.lang.Integer.multiply() is applicable for argument types: (java.util.concurrent.TimeUnit$3) values: [MILLISECONDS]
Possible solutions: multiply(java.lang.Number), multiply(java.lang.Character)
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:55)
at org.codehaus.groovy.runtime.callsite.PojoMetaClassSite.call(PojoMetaClassSite.java:46)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)
at brooklyn.entity.webapp.jboss.JBoss7Server.connectSensors(JBoss7Server.groovy:59)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1047)
at groovy.lang.ExpandoMetaClass.invokeMethod(ExpandoMetaClass.java:1110)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:877)
at groovy.lang.DelegatingMetaClass.invokeMethod(DelegatingMetaClass.java:149)
at groovy.lang.MetaObjectProtocol$invokeMethod.call(Unknown Source)
at brooklyn.entity.basic.AbstractEntity.invokeMethod(AbstractEntity.groovy:821)
at org.codehaus.groovy.runtime.callsite.PogoInterceptableSite.call(PogoInterceptableSite.java:45)
at org.codehaus.groovy.runtime.callsite.PogoInterceptableSite.callCurrent(PogoInterceptableSite.java:55)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:137)
at brooklyn.entity.basic.SoftwareProcessEntity.postStart(SoftwareProcessEntity.groovy:106)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1047)
at groovy.lang.ExpandoMetaClass.invokeMethod(ExpandoMetaClass.java:1110)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:877)
at groovy.lang.DelegatingMetaClass.invokeMethod(DelegatingMetaClass.java:149)
at groovy.lang.MetaObjectProtocol$invokeMethod.call(Unknown Source)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42)
at groovy.lang.MetaObjectProtocol$invokeMethod.call(Unknown Source)
at brooklyn.entity.basic.AbstractEntity.invokeMethod(AbstractEntity.groovy:821)
at org.codehaus.groovy.runtime.callsite.PogoInterceptableSite.call(PogoInterceptableSite.java:45)
at org.codehaus.groovy.runtime.callsite.PogoInterceptableSite.callCurrent(PogoInterceptableSite.java:55)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:137)
at brooklyn.entity.basic.SoftwareProcessEntity.start(SoftwareProcessEntity.groovy:142)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1047)
at groovy.lang.ExpandoMetaClass.invokeMethod(ExpandoMetaClass.java:1110)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:877)
at groovy.lang.DelegatingMetaClass.invokeMethod(DelegatingMetaClass.java:149)
at groovy.lang.MetaObjectProtocol$invokeMethod.call(Unknown Source)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42)
at groovy.lang.MetaObjectProtocol$invokeMethod.call(Unknown Source)
at brooklyn.management.internal.AbstractManagementContext.invokeEffectorMethodLocal(AbstractManagementContext.groovy:112)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSiteNoUnwrapNoCoerce.invoke(PogoMetaMethodSite.java:267)
at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.callCurrent(PogoMetaMethodSite.java:52)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:46)
at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.callCurrent(PogoMetaMethodSite.java:57)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:149)
at brooklyn.management.internal.AbstractManagementContext.invokeEffectorMethodSync(AbstractManagementContext.groovy:149)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSiteNoUnwrapNoCoerce.invoke(PogoMetaMethodSite.java:267)
at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.call(PogoMetaMethodSite.java:64)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42)
at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.call(PogoMetaMethodSite.java:69)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:124)
at brooklyn.entity.basic.AbstractEntity.invokeMethod(AbstractEntity.groovy:808)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1047)
at groovy.lang.ExpandoMetaClass.invokeMethod(ExpandoMetaClass.java:1110)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:877)
at groovy.lang.DelegatingMetaClass.invokeMethod(DelegatingMetaClass.java:149)
at groovy.lang.MetaObjectProtocol$invokeMethod.call(Unknown Source)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42)
at groovy.lang.MetaObjectProtocol$invokeMethod.call(Unknown Source)
at brooklyn.entity.basic.AbstractEntity.invokeMethod(AbstractEntity.groovy:821)
at org.codehaus.groovy.runtime.callsite.PogoInterceptableSite.call(PogoInterceptableSite.java:45)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:120)
at brooklyn.entity.basic.MethodEffector.call(AbstractEffector.groovy:215)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1047)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:877)
at groovy.lang.DelegatingMetaClass.invokeMethod(DelegatingMetaClass.java:149)
at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:39)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:120)
at brooklyn.management.internal.AbstractManagementContext$_invokeEffector_closure1.doCall(AbstractManagementContext.groovy:104)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSite.invoke(PogoMetaMethodSite.java:226)
at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.callCurrent(PogoMetaMethodSite.java:52)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:141)
at brooklyn.management.internal.AbstractManagementContext$_invokeEffector_closure1.doCall(AbstractManagementContext.groovy)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1047)
at groovy.lang.ExpandoMetaClass.invokeMethod(ExpandoMetaClass.java:1110)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:877)
at groovy.lang.Closure.call(Closure.java:412)
at groovy.lang.Closure.call(Closure.java:406)
at java_util_concurrent_Callable$call.call(Unknown Source)
at brooklyn.util.GroovyJavaMethods$_closureFromRunnable_closure1.doCall(GroovyJavaMethods.groovy:13)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
... 12 more

Minor issues with simple-messaging-pubsub

  1. When running the subscribe.sh script, the process exits after a short time. It would be more convenient for it to block so that I have enough time to start the publish.sh script.
  2. When running both subscribe.sh or publish.sh I get some annoying log4j warnings:
log4j:WARN No appenders could be found for logger (org.apache.qpid.client.AMQConnection).
log4j:WARN Please initialize the log4j system properly.

Rebind to an existing jclouds location, e.g. on restarting brooklyn

On restarting brooklyn, it would be very useful to re-bind to existing entities. A big part of that is to rebind to the existing machine-locations that they are running in.

For jclouds location, that requires a "rebind" method to (re)generate an appropriate SshMachineLocation. This would also allow subsequent calls to jcloudsLocation.release(machine).

The rebind would take:

  • id: the jclouds VM id, e.g. "eu-west-1/i-5504f21d"
  • hostname: the public hostname or IP of the machine, e.g. "ec2-176-34-93-58.eu-west-1.compute.amazonaws.com"
  • userName: the username for ssh'ing into the machine

The other properties (e.g. ssh private-key) would be assumed to match those defined in the JcloudsLocation configuration.


As a future enhancement, that could also be configurable (e.g. so that a VM started completely externally could then be bound into Brooklyn, even if it wasn't started by Brooklyn/jclouds).

The Brooklyn cli doesn't accept more than one location

When providing the "--locations loc1 loc2 loc3" argument like this, it looks like only the first location is used.

This is related to how git-like-cli works. It's not happy for some reason with accepting more than one argument for an option. Not sure if we can get it to do that, but it's not obvios form what I've seen in the examples provided.

REST/JSON api

We currently expose a web console but not a web API. A web RESTful API would allow easy programmatic management and access to sensor data in a language neutral way.

A JSON/XML representation of applications, and an API capability to deploy these, would be a powerful extension making Brooklyn easier for people to consume and also helping with language neutrality.

An "at-rest" representation of the same would be useful for persisting to disk and likely helpful for issue #2.

MissingMethodException for LocalSubscriptionManager.makeEntitySensorToken

I saw the weird exception below when running a web-cluster (nginx + jboss7), with an averaging enricher and custom pseudo-load attribute-sensor generator.

The exception happened only 4 times during an overnight run, where the sensor was updating every 500ms. So I believe it successfully passed through this call-path thousands of other times!

2012-05-02 01:53:03,898 WARN brooklyn.util.task.BasicExecutionManager: Error while running task Tasksubscription-delivery-object[brooklyn.enricher.CustomAggregatingEnricher@2c642c2e] [subscription-del
ivery-object[brooklyn.enricher.CustomAggregatingEnricher@2c642c2e]]; TmoQVP6epY
: groovy.lang.MissingMethodException: No signature of method: static brooklyn.management.internal.LocalSubscr
iptionManager.makeEntitySensorToken() is applicable for argument types: (brooklyn.entity.webapp.DynamicWebAppCluster, brooklyn.event.basic.BasicAttributeSensor) values: [DynamicWebAppCluster[id=MCtHEUfx,displayName=DynamicWebAppCluster:MCtH], ...]Possible solutions: makeEntitySensorToken(brooklyn.event.SensorEvent), makeEntitySensorToken(brooklyn.entity.Entity, brooklyn.event.Sensor)
org.codehaus.groovy.runtime.InvokerInvocationException: groovy.lang.MissingMethodException: No signature of method: static brooklyn.management.internal.LocalSubscriptionManager.makeEntitySensorToken() i
s applicable for argument types: (brooklyn.entity.webapp.DynamicWebAppCluster, brooklyn.event.basic.BasicAttributeSensor) values: [DynamicWebAppCluster[id=MCtHEUfx,displayName=DynamicWebAppCluster:MCtH]
, ...]
Possible solutions: makeEntitySensorToken(brooklyn.event.SensorEvent), makeEntitySensorToken(brooklyn.entity.Entity, brooklyn.event.Sensor)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:97)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1054)
at groovy.lang.ExpandoMetaClass.invokeMethod(ExpandoMetaClass.java:1110)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:884)
at groovy.lang.Closure.call(Closure.java:410)
at groovy.lang.Closure.call(Closure.java:404)
at brooklyn.util.task.BasicExecutionManager$3.call(BasicExecutionManager.java:239)
at java_util_concurrent_Callable$call$0.call(Unknown Source)
at brooklyn.util.task.SingleThreadedScheduler$_executeNow_closure1.doCall(SingleThreadedScheduler.groovy:74)
at sun.reflect.GeneratedMethodAccessor98.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSite.invoke(PogoMetaMethodSite.java:226)
at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.callCurrent(PogoMetaMethodSite.java:52)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:141)
at brooklyn.util.task.SingleThreadedScheduler$_executeNow_closure1.doCall(SingleThreadedScheduler.groovy)
at sun.reflect.GeneratedMethodAccessor97.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1054)
at groovy.lang.ExpandoMetaClass.invokeMethod(ExpandoMetaClass.java:1110)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:884)
at groovy.lang.Closure.call(Closure.java:410)
at groovy.lang.Closure.call(Closure.java:404)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:680)
Caused by: groovy.lang.MissingMethodException: No signature of method: static brooklyn.management.internal.LocalSubscriptionManager.makeEntitySensorToken() is applicable for argument types: (brooklyn.en
tity.webapp.DynamicWebAppCluster, brooklyn.event.basic.BasicAttributeSensor) values: [DynamicWebAppCluster[id=MCtHEUfx,displayName=DynamicWebAppCluster:MCtH], ...]
Possible solutions: makeEntitySensorToken(brooklyn.event.SensorEvent), makeEntitySensorToken(brooklyn.entity.Entity, brooklyn.event.Sensor)
at groovy.lang.MetaClassImpl.invokeStaticMissingMethod(MetaClassImpl.java:1350)
at groovy.lang.MetaClassImpl.invokeStaticMethod(MetaClassImpl.java:1336)
at org.codehaus.groovy.runtime.callsite.StaticMetaClassSite.callStatic(StaticMetaClassSite.java:62)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callStatic(AbstractCallSite.java:169)
at brooklyn.management.internal.LocalSubscriptionManager.getSubscriptionsForEntitySensor(LocalSubscriptionManager.groovy:171)
at brooklyn.management.SubscriptionManager$getSubscriptionsForEntitySensor.callCurrent(Unknown Source)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:46)
at brooklyn.management.SubscriptionManager$getSubscriptionsForEntitySensor.callCurrent(Unknown Source)
at brooklyn.management.internal.LocalSubscriptionManager.publish(LocalSubscriptionManager.groovy:194)
at brooklyn.management.SubscriptionManager$publish.call(Unknown Source)
at brooklyn.management.internal.BasicSubscriptionContext.publish(BasicSubscriptionContext.groovy:70)
at brooklyn.management.SubscriptionContext$publish.call(Unknown Source)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callSafe(AbstractCallSite.java:82)
at brooklyn.entity.basic.AbstractEntity.emitInternal(AbstractEntity.groovy:759)
at sun.reflect.GeneratedMethodAccessor66.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1054)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:884)
at groovy.lang.DelegatingMetaClass.invokeMethod(DelegatingMetaClass.java:149)
at groovy.lang.MetaObjectProtocol$invokeMethod.call(Unknown Source)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42)
at groovy.lang.MetaObjectProtocol$invokeMethod.call(Unknown Source)
at brooklyn.entity.basic.AbstractEntity.invokeMethod(AbstractEntity.groovy:825)
at org.codehaus.groovy.runtime.callsite.PogoInterceptableSite.call(PogoInterceptableSite.java:45)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:120)
at brooklyn.event.basic.AttributeMap.update(AttributeMap.groovy:72)
at brooklyn.event.basic.AttributeMap$update.call(Unknown Source)
at brooklyn.entity.basic.AbstractEntity.setAttribute(AbstractEntity.groovy:500)
at sun.reflect.GeneratedMethodAccessor70.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1054)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:884)
at groovy.lang.DelegatingMetaClass.invokeMethod(DelegatingMetaClass.java:149)
at groovy.lang.MetaObjectProtocol$invokeMethod.call(Unknown Source)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42)
at groovy.lang.MetaObjectProtocol$invokeMethod.call(Unknown Source)
at brooklyn.entity.basic.AbstractEntity.invokeMethod(AbstractEntity.groovy:825)
at org.codehaus.groovy.runtime.callsite.PogoInterceptableSite.call(PogoInterceptableSite.java:45)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:120)
at brooklyn.enricher.CustomAggregatingEnricher.onEvent(CustomAggregatingEnricher.groovy:39)
at brooklyn.event.SensorEventListener$onEvent$0.call(Unknown Source)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42)
at brooklyn.event.SensorEventListener$onEvent$0.call(Unknown Source)
at brooklyn.management.internal.LocalSubscriptionManager$_publish_closure1.doCall(LocalSubscriptionManager.groovy:201)
at sun.reflect.GeneratedMethodAccessor100.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSite.invoke(PogoMetaMethodSite.java:226)
at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.callCurrent(PogoMetaMethodSite.java:52)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:141)
at brooklyn.management.internal.LocalSubscriptionManager$_publish_closure1.doCall(LocalSubscriptionManager.groovy)
at sun.reflect.GeneratedMethodAccessor99.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1054)
at groovy.lang.ExpandoMetaClass.invokeMethod(ExpandoMetaClass.java:1110)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:884)
at groovy.lang.Closure.call(Closure.java:410)
at groovy.lang.Closure.call(Closure.java:404)
at java_util_concurrent_Callable$call.call(Unknown Source)
at brooklyn.util.GroovyJavaMethods$_closureFromRunnable_closure1.doCall(GroovyJavaMethods.groovy:13)
at sun.reflect.GeneratedMethodAccessor93.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
... 31 more

Replace jsch with sshj

Proposal in brief
Brooklyn currently uses jsch [1,2]. I propose changing this to use sshj [3] instead. This will be a straight swap of the brooklyn jsch code for a new sshj-based implementation.

This switch should be completely transparent to users and entity-authors (except for getting more reliability and speed).

Justification
Problems with jsch include it returning exit codes of -1, and it losing some of the characters from long commands that you ask it to execute. In the currently brooklyn code base to work around this, we have a horrible sleep between command executions and some synchronization to avoid concurrent executions - very unpleasant, but without it some example apps frequently failed.

jclouds went through the same refactoring in July 2011 [4].

Details
I see a few options.

  1. Swap brooklyn jsch implementation for a new sshj implementation.
  2. Do all calls through jclouds location objects (i.e. ComputeService.runScriptOnNode)
  3. Instantiate a org.jclouds.ssh.SshClient ourselves (using its implementation SshjSshClient)
    This is probably impractical because it relies on guice for setting package-private fields.

I think option 1 is definitely worth doing as it requires the fewest changes in the rest of the brooklyn code base. Hopefully it won't be hard, particularly with the existing jclouds code for reference.

For option 2, that is a good thing to aim for longer-term in various places. Calls currently pass through SshMachineLocation.run. For machine instances created through jclouds, we should be able to use ComputeService.runScriptOnNode instead.

[1] http://www.jcraft.com/jsch/
[2] core:brooklyn.util.internal.SshJschTool
[3] https://github.com/shikhar/sshj
[4] http://code.google.com/p/jclouds/issues/detail?id=637

show logging (esp ssh output) in web console

being able to configure logging levels and make the logs available in the web console would make debugging much easier. especially if we can see SSH i/o attached to a task (say, for when mysql fails because a library isn't available)

Remove uses of legacy code (OldJmxSensorAdapter and brooklyn.entity.basic.legacy.JavaApp)

It looks like the Tomcat Server and JBoss AS6 Are still using OldJmxSensorAdapter and brooklyn.entity.basic.legacy.JavaApp.

They should use the newer classes as is done in JBoss7Server.

Things to do:

  • refactor those entities to use the newer code (and thus take advantage of jmx reconnect etc).
  • deprecate the old classes.
  • ensure any useful tests/code is scavenged from there.

CloudFoundry entities

Brooklyn would make an ideal host for CloudFoundry services - could you consider adding support for this?

CloudFoundry consists of a number of core services - cloud controller, health manager, router and DEA. A typical system would need at least one of every one of these. DEAs are the hosts for the applications, so as more applications are deployed, with more instances, then it becomes advantageous to add more DEAs to spread the load. Similar for routers. For small installations, services can be colocated (so one of every node type can run on a single machine).

CloudFoundry also has support for "services" - databases, message queues, etc. that applications can call on. So CloudFoundry has a "mysql" module which connects to a MySQL instance. These could also be scaled out, so that there are multiple MySQL instances.

support passphrases in ssh keys (id_rsa)

currently the id_rsa / id_dsa keys specified for brooklyn must not have any passphrase set.
it would be nice to support passphrases, allowing them to be specified:

  • in ~/.brooklyn/brooklyn.properties
  • as an environment variable
  • as a java system property

BrooklynProperties makes this straightforward. syntax would be comparable to how private-keys are defined (perhaps brooklyn.jclouds.localhost.private-key-passphrase), see CredentialsFromEnv.

JavaAppUtils JMX inefficiency

Currently the retrieval of memory related information looks like this:

jmxAdapter.objectName(ManagementFactory.MEMORY_MXBEAN_NAME).with {
attribute("HeapMemoryUsage").subscribe(UsesJavaMXBeans.USED_HEAP_MEMORY, { CompositeData m -> MemoryUsage.from(m)?.getUsed() });
attribute("HeapMemoryUsage").subscribe(UsesJavaMXBeans.INIT_HEAP_MEMORY, { CompositeData m -> MemoryUsage.from(m)?.getInit() });
attribute("HeapMemoryUsage").subscribe(UsesJavaMXBeans.COMMITTED_HEAP_MEMORY, { CompositeData m -> MemoryUsage.from(m)?.getCommitted() });
attribute("HeapMemoryUsage").subscribe(UsesJavaMXBeans.MAX_HEAP_MEMORY, { CompositeData m -> MemoryUsage.from(m)?.getMax() });
attribute("NonHeapMemoryUsage").subscribe(UsesJavaMXBeans.NON_HEAP_MEMORY_USAGE, { CompositeData m -> MemoryUsage.from(m)?.getUsed() });
}

This means that 5 times the same information is retrieved from the jmx server, only a different field is used. So it is very inefficient. All the sensors could share the same information and instead of 5 round trips, only 1 is needed.

Alex came up with the following suggestion:

attribute("HeadMemoryUsage").then( { MemoryUsage.from(it) }).with {
subscribe(MAX_HEAP_MEMORY, { it.getMax() });
subscribe(COMMITED_HEAD_MEM, { it.getCommitted() });
...
}

SensorRegistery.scheduler not scalable

Every entity will get its own sensor registry, every sensor registry will gets a number of threads equal to the number of cpu's in the machine. So with 1000 entities and an 8 core machine we have 8000 threads, which vm's don't always like. If you are going to increase the number of entities.. well.. you get the problem; the approach isn't scalable.

The ManagementContext exposes an ExecutionContext submit scheduled task method, make use of this instead and remove the sensorregistry.scheduledexecutor.

After this refactoring is complete, there is no direct relation between the number of entities and the number of threads, which makes the system much better scalable (inside a single jvm).

A problem could be however with removing scheduled tasks for certain entities....

backgrounded nohup processes don't always start (e.g. mysqld)

I've seen mysql not start, very very occasionally. I could do with some help/advice!

I suspect it is due to the way we are nohupping and running SSH:

nohup mysqld & echo $! > pid.txt

What we observe it that the pid.txt file is created but pid not running. There is no nohup.out and no indication of any problem in the log.

I wonder if it is related to the fact that we wait for ssh "termination" (in SshjTool eg ShellAction.create) by doing:

shell.join(TIMEOUT);
session.getExitStatus()

In particular we don't do session.join(TIMEOUT), which is advertised on the sshj API but not documented, so not sure.
But I suspect this is the cause of a difference in behaviour with command-line ssh, where:

ssh localhost 'nohup mysqld & echo $! > pid.txt ; exit 0'

Does not return (until you've manually killed mysqld in a separate process). Even though the shell has exitted and
returned the exit code, I suspect the session is kept open until std{in,out,err} are closed. In particular if we add redirects:

ssh localhost 'nohup mysqld > out 2> err < /dev/null & echo $! > pid.txt ; exit 0'

The process does return. (See http://stackoverflow.com/questions/29142 .)

Most tellingly, in the logs, when the mysqld problem happens, we do not get the usual messages about output going to nohup.out.
So what I think is happening is that the script is proceeding to exit and the ssh session closed, while nohup is still starting,
causing nohup itself to be killed before it has launched mysqld (ie before it has applied any nohupping).

Does this seem plausible?

If so I can see a few possible solutions:

  • We just add a 'sleep 2' after any nohupped process

  • We run: nohup bash -c 'mysqld & echo $! > pid.txt'
    (causing the script not to proceed until bash has launched nohup.
    pid.txt may not be available immediately but that's okay as the subsequent scripts are forgiving.
    but means users have to code carefully for background processes.)

  • We add the session.join(TIMEOUT), with a small timeout, say 10s,
    and warn if the session isn't ended in that time (to preserve compatibility),
    and encourage developers to write the following in their scripts:

    nohup mysqld > out 2> err < /dev/null &

I repeat it's rare (only 1 documented case) but potentially problematic so I think we should address it.
I think prefer the last option -- can't see anything that would break, and moves us to a better model.

Could do however with a sanity check, or better ideas!

have graphs in web console

the web console collects sensor data, it would be nice to have an option to show a graph for a specific sensor and expose that as a widget, so you could e.g. embed it in your favourite dashboard

java.net.ConnectException when running SingleWebServerExample or WebClusterDatabaseExample

When running the SingleWebServerExample or WebClusterDatabaseExample from simple-web-cluster I get a ConnectException. Apart from that, everything seems fine: console starts up, reports that JBoss7 ended normally, and the hello-world-webapp shows up at localhost:8080.

UPDATE: looks like the portable-cloudfoundry example is also affected by this same issue.

UPDATE: GlobalWebFabricExample is also affected.

UPDATE: brooklyn.extras.whirr.WebClusterWithHadoopExample is also affected.

This is the output I for SingleWebServerExample:

pegasus:bin cosmin$ ./web-server.sh 
Launching brooklyn app: brooklyn.demo.SingleWebServerExample in [localhost]
2012-05-30 17:31:36,740 INFO  Adding application under brooklyn management
2012-05-30 17:31:36,767 INFO  Starting Brooklyn console at http://localhost:8081, running brooklyn.war
2012-05-30 17:31:41,493 INFO  [RuntimeConfiguration] Configuring data source for environment: DEVELOPMENT
2012-05-30 17:31:42,982 INFO  Started Brooklyn console at http://localhost:8081, running brooklyn.war
2012-05-30 17:31:42,989 INFO  Starting brooklyn application: brooklyn.demo.SingleWebServerExample
2012-05-30 17:31:43,001 INFO  Starting entity SingleWebServerExample[id=VUn80tvt,displayName=SingleWebServerExample:VUn8] at [LocalhostMachineProvisioningLocation[id=1134a81d-2640-4882-a272-5bfb2952c95b,name=localhost]]
2012-05-30 17:31:43,065 INFO  Starting software process entity JBoss7Server[id=WtbPhkC6,displayName=JBoss7Server:WtbP] at [LocalhostMachineProvisioningLocation[id=1134a81d-2640-4882-a272-5bfb2952c95b,name=localhost]]
2012-05-30 17:34:41,708 INFO  Web console using default security provider: brooklyn.web.console.security.ExplicitUsersSecurityProvider
2012-05-30 17:34:41,909 WARN  [DEPRECATED] Tag [createLinkTo] is deprecated please use [resource] instead
2012-05-30 17:34:41,925 WARN  [DEPRECATED] Tag [createLinkTo] is deprecated please use [resource] instead
2012-05-30 17:34:55,280 INFO  Web console allowing default user (admin)
2012-05-30 17:34:55,280 INFO  Web console ExplicitUsersSecurityProvider authenticated user admin
2012-05-30 17:41:48,774 INFO  JBoss7Server[id=WtbPhkC6,displayName=JBoss7Server:WtbP] deploying classpath://hello-world-webapp.war to localhost:/tmp/brooklyn/apps/VUn80tvt/entities/JBoss7Server_7.1.1.Final_WtbPhkC6/standalone/deployments/ROOT.war
2012-05-30 17:41:49,012 WARN  including legacy SSH config property backup for localhost/127.0.0.1; either prefix with sshconfig or add to NON_SSH_PROPS
2012-05-30 17:41:50,888 INFO  Started application SingleWebServerExample[id=VUn80tvt,displayName=SingleWebServerExample:VUn8]
SingleWebServerExample[id=VUn80tvt,displayName=SingleWebServerExample:VUn8]
    service.isUp: true
  JBoss7Server[id=WtbPhkC6,displayName=JBoss7Server:WtbP]
      install.version = 7.1.1.Final
      webapp.jboss.managementPort = 9990-65535
      webapp.jboss.managementNativePort = 10999-65535
      webapp.jboss.portIncrement = 0
      wars.root = classpath://hello-world-webapp.war
      http.port = 8080
      webapp.jboss.managementPort: 9990
      webapp.jboss.managementNativePort: 10999
      webapp.jboss.portIncrement: 0
      http.port: 8080
      webapp.url: http://localhost:8080/
      host.name: localhost
      host.address: 127.0.0.1
      service.state: running
      service.isUp: false
2012-05-30 17:41:50,970 INFO  Launched application; now blocking to wait for cntrl-c or kill
2012-05-30 17:41:51,020 WARN  error reading brooklyn.event.adapter.HttpPollHelper@49f751c9[JBoss7Server[id=WtbPhkC6,displayName=JBoss7Server:WtbP]] from JBoss7Server[id=WtbPhkC6,displayName=JBoss7Server:WtbP]: java.net.ConnectException: Connection refused
java.net.ConnectException: Connection refused
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351)
    at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:432)
    at java.net.Socket.connect(Socket.java:529)
    at java.net.Socket.connect(Socket.java:478)
    at sun.net.NetworkClient.doConnect(NetworkClient.java:163)
    at sun.net.www.http.HttpClient.openServer(HttpClient.java:395)
    at sun.net.www.http.HttpClient.openServer(HttpClient.java:530)
    at sun.net.www.http.HttpClient.<init>(HttpClient.java:234)
    at sun.net.www.http.HttpClient.New(HttpClient.java:307)
    at sun.net.www.http.HttpClient.New(HttpClient.java:324)
    at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:970)
    at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:911)
    at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:836)
    at sun.net.www.protocol.http.HttpURLConnection$connect.call(Unknown Source)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:112)
    at brooklyn.event.adapter.HttpPollHelper.executePollOnSuccess(HttpPollHelper.groovy:40)
    at brooklyn.event.adapter.AbstractPollHelper.executePoll(AbstractPollHelper.groovy:63)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
    at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1047)
    at groovy.lang.ExpandoMetaClass.invokeMethod(ExpandoMetaClass.java:1110)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:877)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:992)
    at groovy.lang.ExpandoMetaClass.invokeMethod(ExpandoMetaClass.java:1110)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:877)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:697)
    at groovy.lang.GroovyObjectSupport.invokeMethod(GroovyObjectSupport.java:44)
    at groovy.lang.MetaClassImpl.invokeMethodOnGroovyObject(MetaClassImpl.java:1112)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1006)
    at groovy.lang.ExpandoMetaClass.invokeMethod(ExpandoMetaClass.java:1110)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:877)
    at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:66)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:46)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:133)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:137)
    at brooklyn.event.adapter.AbstractPollHelper$_activatePoll_closure3_closure5.doCall(AbstractPollHelper.groovy:40)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSite.invoke(PogoMetaMethodSite.java:226)
    at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.callCurrent(PogoMetaMethodSite.java:52)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:46)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:133)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:141)
    at brooklyn.event.adapter.AbstractPollHelper$_activatePoll_closure3_closure5.doCall(AbstractPollHelper.groovy)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
    at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1047)
    at groovy.lang.ExpandoMetaClass.invokeMethod(ExpandoMetaClass.java:1110)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:877)
    at groovy.lang.Closure.call(Closure.java:412)
    at groovy.lang.Closure.call(Closure.java:406)
    at brooklyn.util.task.BasicExecutionManager$2$1.call(BasicExecutionManager.java:225)
    at brooklyn.util.task.BasicExecutionManager$3.call(BasicExecutionManager.java:267)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
    at java.util.concurrent.FutureTask.run(FutureTask.java:138)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:680)
^C2012-05-30 17:45:03,026 INFO  Brooklyn launcher's shutdown-hook invoked: shutting down application
2012-05-30 17:45:03,026 INFO  Brooklyn launcher's shutdown-hook invoked: shutting down web-console
2012-05-30 17:45:03,027 INFO  Stopping Brooklyn web console at http://localhost:8081 (brooklyn.war)
Application context shutting down...
2012-05-30 17:45:03,106 INFO  Stopping application SingleWebServerExample[id=VUn80tvt,displayName=SingleWebServerExample:VUn8]
2012-05-30 17:45:03,113 INFO  Stopping software process entity JBoss7Server[id=WtbPhkC6,displayName=JBoss7Server:WtbP]
Application context shutdown.
2012-05-30 17:45:03,960 INFO  Stopped application SingleWebServerExample[id=VUn80tvt,displayName=SingleWebServerExample:VUn8]
2012-05-30 17:45:04,029 INFO  Stopped Brooklyn web console at http://localhost:8081

And here is what I get for WebClusterDatabaseExample:

pegasus:bin cosmin$ ./web-and-db.sh 
Launching brooklyn app: brooklyn.demo.WebClusterDatabaseExample in [localhost]
2012-05-30 17:55:46,957 INFO  Adding application under brooklyn management
2012-05-30 17:55:46,981 INFO  Starting Brooklyn console at http://localhost:8081, running brooklyn.war
2012-05-30 17:55:51,770 INFO  [RuntimeConfiguration] Configuring data source for environment: DEVELOPMENT
2012-05-30 17:55:53,493 INFO  Started Brooklyn console at http://localhost:8081, running brooklyn.war
2012-05-30 17:55:53,499 INFO  Starting brooklyn application: brooklyn.demo.WebClusterDatabaseExample
2012-05-30 17:55:53,511 INFO  Starting entity WebClusterDatabaseExample[id=eWutdWsH,displayName=WebClusterDatabaseExample:eWut] at [LocalhostMachineProvisioningLocation[id=42edeca9-36b3-485c-9cda-52b683f9d192,name=localhost]]
2012-05-30 17:55:53,562 INFO  Starting software process entity MySqlNode[id=U671huBo,displayName=MySqlNode:U671] at [LocalhostMachineProvisioningLocation[id=42edeca9-36b3-485c-9cda-52b683f9d192,name=localhost]]
2012-05-30 17:55:53,636 INFO  Activating local management for NginxController[id=opSzUsDM,displayName=NginxController:opSz] on start
2012-05-30 17:55:53,641 INFO  adding policy to NginxController[id=opSzUsDM,displayName=NginxController:opSz]
2012-05-30 17:55:53,647 INFO  Resize DynamicWebAppCluster[id=jNn6dwa4,displayName=DynamicWebAppCluster:jNn6] from 0 to 1; delta = 1
2012-05-30 17:55:53,679 INFO  Starting software process entity NginxController[id=opSzUsDM,displayName=NginxController:opSz] at [LocalhostMachineProvisioningLocation[id=42edeca9-36b3-485c-9cda-52b683f9d192,name=localhost]]
2012-05-30 17:55:53,739 INFO  Activating local management for JBoss7Server[id=F0o1Cnf6,displayName=JBoss7Server:F0o1] on start
2012-05-30 17:55:53,742 INFO  Starting software process entity JBoss7Server[id=F0o1Cnf6,displayName=JBoss7Server:F0o1] at [LocalhostMachineProvisioningLocation[id=42edeca9-36b3-485c-9cda-52b683f9d192,name=localhost]]
2012-05-30 17:58:13,446 INFO  Web console using default security provider: brooklyn.web.console.security.ExplicitUsersSecurityProvider
2012-05-30 17:58:13,605 WARN  [DEPRECATED] Tag [createLinkTo] is deprecated please use [resource] instead
2012-05-30 17:58:13,621 WARN  [DEPRECATED] Tag [createLinkTo] is deprecated please use [resource] instead
2012-05-30 17:58:17,640 INFO  Web console allowing default user (admin)
2012-05-30 17:58:17,640 INFO  Web console ExplicitUsersSecurityProvider authenticated user admin
2012-05-30 18:00:59,977 INFO  JBoss7Server[id=F0o1Cnf6,displayName=JBoss7Server:F0o1] deploying classpath://hello-world-sql-webapp.war to localhost:/tmp/brooklyn/apps/eWutdWsH/entities/JBoss7Server_7.1.1.Final_F0o1Cnf6/standalone/deployments/ROOT.war
2012-05-30 18:01:00,193 WARN  including legacy SSH config property backup for localhost/127.0.0.1; either prefix with sshconfig or add to NON_SSH_PROPS
2012-05-30 18:01:01,831 WARN  error reading brooklyn.event.adapter.HttpPollHelper@50b18b90[JBoss7Server[id=F0o1Cnf6,displayName=JBoss7Server:F0o1]] from JBoss7Server[id=F0o1Cnf6,displayName=JBoss7Server:F0o1]: java.net.ConnectException: Connection refused
java.net.ConnectException: Connection refused
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351)
    at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:432)
    at java.net.Socket.connect(Socket.java:529)
    at java.net.Socket.connect(Socket.java:478)
    at sun.net.NetworkClient.doConnect(NetworkClient.java:163)
    at sun.net.www.http.HttpClient.openServer(HttpClient.java:395)
    at sun.net.www.http.HttpClient.openServer(HttpClient.java:530)
    at sun.net.www.http.HttpClient.<init>(HttpClient.java:234)
    at sun.net.www.http.HttpClient.New(HttpClient.java:307)
    at sun.net.www.http.HttpClient.New(HttpClient.java:324)
    at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:970)
    at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:911)
    at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:836)
    at sun.net.www.protocol.http.HttpURLConnection$connect.call(Unknown Source)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:112)
    at brooklyn.event.adapter.HttpPollHelper.executePollOnSuccess(HttpPollHelper.groovy:40)
    at brooklyn.event.adapter.AbstractPollHelper.executePoll(AbstractPollHelper.groovy:63)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
    at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1047)
    at groovy.lang.ExpandoMetaClass.invokeMethod(ExpandoMetaClass.java:1110)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:877)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:992)
    at groovy.lang.ExpandoMetaClass.invokeMethod(ExpandoMetaClass.java:1110)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:877)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:697)
    at groovy.lang.GroovyObjectSupport.invokeMethod(GroovyObjectSupport.java:44)
    at groovy.lang.MetaClassImpl.invokeMethodOnGroovyObject(MetaClassImpl.java:1112)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1006)
    at groovy.lang.ExpandoMetaClass.invokeMethod(ExpandoMetaClass.java:1110)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:877)
    at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:66)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:46)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:133)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:137)
    at brooklyn.event.adapter.AbstractPollHelper$_activatePoll_closure3_closure5.doCall(AbstractPollHelper.groovy:40)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSite.invoke(PogoMetaMethodSite.java:226)
    at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.callCurrent(PogoMetaMethodSite.java:52)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:46)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:133)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:141)
    at brooklyn.event.adapter.AbstractPollHelper$_activatePoll_closure3_closure5.doCall(AbstractPollHelper.groovy)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
    at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1047)
    at groovy.lang.ExpandoMetaClass.invokeMethod(ExpandoMetaClass.java:1110)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:877)
    at groovy.lang.Closure.call(Closure.java:412)
    at groovy.lang.Closure.call(Closure.java:406)
    at brooklyn.util.task.BasicExecutionManager$2$1.call(BasicExecutionManager.java:225)
    at brooklyn.util.task.BasicExecutionManager$3.call(BasicExecutionManager.java:267)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
    at java.util.concurrent.FutureTask.run(FutureTask.java:138)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:680)
2012-05-30 18:01:04,408 INFO  Adding to NginxController:opSz, new member JBoss7Server:F0o1 in locations [localhost/127.0.0.1]
2012-05-30 18:01:05,169 INFO  Reconfiguring NginxController:opSz, members are [localhost:8080]
2012-05-30 18:01:06,678 INFO  updating NginxController[id=opSzUsDM,displayName=NginxController:opSz]
2012-05-30 18:01:06,678 INFO  Reconfiguring NginxController:opSz, members are [localhost:8080]
2012-05-30 18:01:06,870 INFO  Started application WebClusterDatabaseExample[id=eWutdWsH,displayName=WebClusterDatabaseExample:eWut]
WebClusterDatabaseExample[id=eWutdWsH,displayName=WebClusterDatabaseExample:eWut]
    service.isUp: true
  ControlledDynamicWebAppCluster[id=f0ZRswuP,displayName=ControlledDynamicWebAppCluster:f0ZR]
      cluster.initial.size = 1
      wars.root = classpath://hello-world-sql-webapp.war
      http.port = 8080,18000-65535
      host.name: localhost
      service.isUp: true
      webapp.url: http://localhost:8000/
    DynamicWebAppCluster[id=jNn6dwa4,displayName=DynamicWebAppCluster:jNn6]
        http.port = 8080,18000-65535
        cluster.initial.size = 1
        cluster.reqs.count.total: 0
        cluster.reqs.count.average: 0.0
        cluster.reqs.errors.total: 0
        cluster.reqs.errors.average: 0.0
        cluster.reqs.persec.total: 0.0
        cluster.reqs.persec.average: 0.0
        cluster.reqs.processing-time.total: 0
        cluster.reqs.processing-time.average: 0.0
        service.isUp: true
        group.members.count: 1
      JBoss7Server[id=F0o1Cnf6,displayName=JBoss7Server:F0o1]
          install.version = 7.1.1.Final
          webapp.jboss.managementPort = 9990-65535
          webapp.jboss.managementNativePort = 10999-65535
          webapp.jboss.portIncrement = 0
          wars.root = classpath://hello-world-sql-webapp.war
          http.port = 8080-65535
          java.options = [brooklyn.example.db.url:Task[retrieving MySqlNode[id=U671huBo,displayName=MySqlNode:U671] Sensor: mysql.url (java.lang.String) [attributePostProcessedWhenReady, JBoss7Server[id=F0o1Cnf6,displayName=JBoss7Server:F0o1]]; 0sJBUFkn6o]]
          webapp.jboss.managementPort: 9990
          webapp.jboss.managementNativePort: 10999
          webapp.jboss.portIncrement: 0
          webapp.jboss.managementStatus: 200
          http.port: 8080
          webapp.reqs.errors: 0
          webpp.reqs.processing.max: 0
          webapp.reqs.total: 0
          webapp.reqs.processing.time: 0
          webapp.reqs.bytes.received: 0
          webapp.reqs.bytes.sent: 0
          webapp.reqs.persec.last: 0.0
          webapp.reqs.persec.avg.10000: 0.0
          webapp.url: http://localhost:8080/
          host.name: localhost
          host.address: 127.0.0.1
          service.state: running
          service.isUp: true
    NginxController[id=opSzUsDM,displayName=NginxController:opSz]
        install.version = 1.2.0
        proxy.http.port = 8000,8001-65535
        proxy.protocol = http
        proxy.domainName = anonymous
        webapp.url: http://localhost:8000/
        proxy.http.port: 8000
        proxy.protocol: http
        proxy.domainName: anonymous
        proxy.url: http://localhost:8000/
        proxy.targets: [localhost:8080]
        host.name: localhost
        host.address: 127.0.0.1
        service.state: running
        service.isUp: true
  MySqlNode[id=U671huBo,displayName=MySqlNode:U671]
      install.version = 5.5.24
      mysql.port = 3306,13306-65535
      mysql.creation.script.url = classpath://visitors-creation-script.sql
      mysql.install.mirror.url = http://gd.tuwien.ac.at/db/mysql/
      mysql.port: 3306
      mysql.url: mysql://127.0.0.1:3306/
      host.name: localhost
      host.address: 127.0.0.1
      service.state: running
      service.isUp: true
2012-05-30 18:01:06,901 INFO  Launched application; now blocking to wait for cntrl-c or kill
^C2012-05-30 18:02:35,656 INFO  Brooklyn launcher's shutdown-hook invoked: shutting down application
Application context shutting down...
Application context shutdown.
2012-05-30 18:02:35,656 INFO  Brooklyn launcher's shutdown-hook invoked: shutting down web-console
2012-05-30 18:02:35,735 INFO  Stopping Brooklyn web console at http://localhost:8081 (brooklyn.war)
2012-05-30 18:02:35,740 INFO  Stopping application WebClusterDatabaseExample[id=eWutdWsH,displayName=WebClusterDatabaseExample:eWut]
2012-05-30 18:02:35,746 INFO  Stopping software process entity MySqlNode[id=U671huBo,displayName=MySqlNode:U671]
2012-05-30 18:02:35,746 INFO  Stopping software process entity NginxController[id=opSzUsDM,displayName=NginxController:opSz]
2012-05-30 18:02:36,760 INFO  Resize DynamicWebAppCluster[id=jNn6dwa4,displayName=DynamicWebAppCluster:jNn6] from 1 to 0; delta = -1
2012-05-30 18:02:36,783 INFO  Stopping software process entity JBoss7Server[id=F0o1Cnf6,displayName=JBoss7Server:F0o1]
2012-05-30 18:02:36,836 INFO  Stopped Brooklyn web console at http://localhost:8081
2012-05-30 18:02:36,987 INFO  Stopped application WebClusterDatabaseExample[id=eWutdWsH,displayName=WebClusterDatabaseExample:eWut]

Output for running the portable-cloudfoundry example:

pegasus:bin cosmin$ ./demo.sh 
Launching brooklyn app: brooklyn.example.cloudfoundry.MovableCloudFoundryClusterExample in [localhost]
2012-05-31 12:06:46,126 INFO  Adding application under brooklyn management
2012-05-31 12:06:46,153 INFO  Starting Brooklyn console at http://localhost:8081, running brooklyn.war
2012-05-31 12:06:50,412 INFO  [RuntimeConfiguration] Configuring data source for environment: DEVELOPMENT
2012-05-31 12:06:52,014 INFO  Started Brooklyn console at http://localhost:8081, running brooklyn.war
2012-05-31 12:06:52,020 INFO  Starting brooklyn application: brooklyn.example.cloudfoundry.MovableCloudFoundryClusterExample
2012-05-31 12:06:52,032 INFO  Starting entity MovableCloudFoundryClusterExample[id=NaepvoQ5,displayName=MovableCloudFoundryClusterExample:Naep] at [LocalhostMachineProvisioningLocation[id=e52e857f-5b5e-457f-a89d-9cd01be7d379,name=localhost]]
2012-05-31 12:06:52,189 INFO  Activating local management for ControlledDynamicWebAppCluster[id=O57ctFYu,displayName=ControlledDynamicWebAppCluster:O57c] on start
2012-05-31 12:06:52,361 INFO  Activating local management for DynamicWebAppCluster[id=LYXZGkZJ,displayName=DynamicWebAppCluster:LYXZ] on start
2012-05-31 12:06:52,361 INFO  Activating local management for NginxController[id=eL05SXC7,displayName=NginxController:eL05] on start
2012-05-31 12:06:52,366 INFO  adding policy to NginxController[id=eL05SXC7,displayName=NginxController:eL05]
2012-05-31 12:06:52,369 INFO  Resize DynamicWebAppCluster[id=LYXZGkZJ,displayName=DynamicWebAppCluster:LYXZ] from 0 to 1; delta = 1
2012-05-31 12:06:52,389 INFO  Starting software process entity NginxController[id=eL05SXC7,displayName=NginxController:eL05] at [LocalhostMachineProvisioningLocation[id=e52e857f-5b5e-457f-a89d-9cd01be7d379,name=localhost]]
2012-05-31 12:06:52,466 INFO  Activating local management for JBoss7Server[id=Ej5NBSuQ,displayName=JBoss7Server:Ej5N] on start
2012-05-31 12:06:52,468 INFO  Starting software process entity JBoss7Server[id=Ej5NBSuQ,displayName=JBoss7Server:Ej5N] at [LocalhostMachineProvisioningLocation[id=e52e857f-5b5e-457f-a89d-9cd01be7d379,name=localhost]]
2012-05-31 12:06:53,775 INFO  JBoss7Server[id=Ej5NBSuQ,displayName=JBoss7Server:Ej5N] deploying classpath://hello-world-webapp.war to localhost:/tmp/brooklyn/apps/NaepvoQ5/entities/JBoss7Server_7.1.1.Final_Ej5NBSuQ/standalone/deployments/ROOT.war
2012-05-31 12:06:53,946 WARN  including legacy SSH config property backup for localhost/127.0.0.1; either prefix with sshconfig or add to NON_SSH_PROPS
2012-05-31 12:06:55,687 WARN  error reading brooklyn.event.adapter.HttpPollHelper@34667da1[JBoss7Server[id=Ej5NBSuQ,displayName=JBoss7Server:Ej5N]] from JBoss7Server[id=Ej5NBSuQ,displayName=JBoss7Server:Ej5N]: java.net.ConnectException: Connection refused
java.net.ConnectException: Connection refused
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351)
    at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:432)
    at java.net.Socket.connect(Socket.java:529)
    at java.net.Socket.connect(Socket.java:478)
    at sun.net.NetworkClient.doConnect(NetworkClient.java:163)
    at sun.net.www.http.HttpClient.openServer(HttpClient.java:395)
    at sun.net.www.http.HttpClient.openServer(HttpClient.java:530)
    at sun.net.www.http.HttpClient.<init>(HttpClient.java:234)
    at sun.net.www.http.HttpClient.New(HttpClient.java:307)
    at sun.net.www.http.HttpClient.New(HttpClient.java:324)
    at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:970)
    at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:911)
    at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:836)
    at sun.net.www.protocol.http.HttpURLConnection$connect.call(Unknown Source)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:112)
    at brooklyn.event.adapter.HttpPollHelper.executePollOnSuccess(HttpPollHelper.groovy:40)
    at brooklyn.event.adapter.AbstractPollHelper.executePoll(AbstractPollHelper.groovy:63)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
    at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1047)
    at groovy.lang.ExpandoMetaClass.invokeMethod(ExpandoMetaClass.java:1110)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:877)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:992)
    at groovy.lang.ExpandoMetaClass.invokeMethod(ExpandoMetaClass.java:1110)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:877)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:697)
    at groovy.lang.GroovyObjectSupport.invokeMethod(GroovyObjectSupport.java:44)
    at groovy.lang.MetaClassImpl.invokeMethodOnGroovyObject(MetaClassImpl.java:1112)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1006)
    at groovy.lang.ExpandoMetaClass.invokeMethod(ExpandoMetaClass.java:1110)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:877)
    at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:66)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:46)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:133)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:137)
    at brooklyn.event.adapter.AbstractPollHelper$_activatePoll_closure3_closure5.doCall(AbstractPollHelper.groovy:40)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSite.invoke(PogoMetaMethodSite.java:226)
    at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.callCurrent(PogoMetaMethodSite.java:52)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:46)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:133)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:141)
    at brooklyn.event.adapter.AbstractPollHelper$_activatePoll_closure3_closure5.doCall(AbstractPollHelper.groovy)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
    at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1047)
    at groovy.lang.ExpandoMetaClass.invokeMethod(ExpandoMetaClass.java:1110)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:877)
    at groovy.lang.Closure.call(Closure.java:412)
    at groovy.lang.Closure.call(Closure.java:406)
    at brooklyn.util.task.BasicExecutionManager$2$1.call(BasicExecutionManager.java:225)
    at brooklyn.util.task.BasicExecutionManager$3.call(BasicExecutionManager.java:267)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
    at java.util.concurrent.FutureTask.run(FutureTask.java:138)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:680)
2012-05-31 12:06:56,200 INFO  Adding to NginxController:eL05, new member JBoss7Server:Ej5N in locations [localhost/127.0.0.1]
2012-05-31 12:06:56,647 INFO  Reconfiguring NginxController:eL05, members are [localhost:8080]
2012-05-31 12:06:58,167 INFO  updating NginxController[id=eL05SXC7,displayName=NginxController:eL05]
2012-05-31 12:06:58,167 INFO  Reconfiguring NginxController:eL05, members are [localhost:8080]
2012-05-31 12:06:58,357 INFO  Started application MovableCloudFoundryClusterExample[id=NaepvoQ5,displayName=MovableCloudFoundryClusterExample:Naep]
MovableCloudFoundryClusterExample[id=NaepvoQ5,displayName=MovableCloudFoundryClusterExample:Naep]
    service.isUp: true
  MovableElasticWebAppCluster[id=aqlMKYuH,displayName=MovableElasticWebAppCluster:aqlM]
      wars.root = classpath://hello-world-webapp.war
      movable.primary.id: O57ctFYu
    ControlledDynamicWebAppCluster[id=O57ctFYu,displayName=ControlledDynamicWebAppCluster:O57c]
        cluster.initial.size = 1
        wars.root = classpath://hello-world-webapp.war
        http.port = 8080,18000-65535
        host.name: localhost
        service.isUp: true
        webapp.url: http://localhost:8000/
      NginxController[id=eL05SXC7,displayName=NginxController:eL05]
          install.version = 1.2.0
          proxy.http.port = 8000,8001-65535
          proxy.protocol = http
          proxy.domainName = anonymous
          webapp.url: http://localhost:8000/
          proxy.http.port: 8000
          proxy.protocol: http
          proxy.domainName: anonymous
          proxy.url: http://localhost:8000/
          proxy.targets: [localhost:8080]
          host.name: localhost
          host.address: 127.0.0.1
          service.state: running
          service.isUp: true
      DynamicWebAppCluster[id=LYXZGkZJ,displayName=DynamicWebAppCluster:LYXZ]
          http.port = 8080,18000-65535
          cluster.initial.size = 1
          cluster.reqs.count.total: 1
          cluster.reqs.count.average: 1.0
          cluster.reqs.errors.total: 0
          cluster.reqs.errors.average: 0.0
          cluster.reqs.persec.total: 0.09952606635071092
          cluster.reqs.persec.average: 0.09952606635071092
          cluster.reqs.processing-time.total: 68
          cluster.reqs.processing-time.average: 68.0
          service.isUp: true
          group.members.count: 1
        JBoss7Server[id=Ej5NBSuQ,displayName=JBoss7Server:Ej5N]
            install.version = 7.1.1.Final
            webapp.jboss.managementPort = 9990-65535
            webapp.jboss.managementNativePort = 10999-65535
            webapp.jboss.portIncrement = 0
            wars.root = classpath://hello-world-webapp.war
            http.port = 8080,18000-65535
            webapp.jboss.managementPort: 9990
            webapp.jboss.managementNativePort: 10999
            webapp.jboss.portIncrement: 0
            webapp.jboss.managementStatus: 200
            http.port: 8080
            webapp.reqs.errors: 0
            webpp.reqs.processing.max: 68
            webapp.reqs.total: 1
            webapp.reqs.processing.time: 68
            webapp.reqs.bytes.received: 0
            webapp.reqs.bytes.sent: 520
            webapp.reqs.persec.last: 4.739336492890995
            webapp.reqs.persec.avg.10000: 0.09952606635071092
            webapp.url: http://localhost:8080/
            host.name: localhost
            host.address: 127.0.0.1
            service.state: running
            service.isUp: true
2012-05-31 12:06:58,398 INFO  Launched application; now blocking to wait for cntrl-c or kill
2012-05-31 12:07:41,956 INFO  Web console using default security provider: brooklyn.web.console.security.ExplicitUsersSecurityProvider
2012-05-31 12:07:41,963 INFO  redirecting Session Content:
 from dashboard to login page
2012-05-31 12:07:42,105 WARN  [DEPRECATED] Tag [createLinkTo] is deprecated please use [resource] instead
2012-05-31 12:07:42,119 WARN  [DEPRECATED] Tag [createLinkTo] is deprecated please use [resource] instead
2012-05-31 12:07:45,887 INFO  Web console allowing default user (admin)
2012-05-31 12:07:45,887 INFO  Web console ExplicitUsersSecurityProvider authenticated user admin
^C2012-05-31 12:07:58,732 INFO  Brooklyn launcher's shutdown-hook invoked: shutting down web-console
2012-05-31 12:07:58,732 INFO  Brooklyn launcher's shutdown-hook invoked: shutting down application
2012-05-31 12:07:58,733 INFO  Stopping Brooklyn web console at http://localhost:8081 (brooklyn.war)
2012-05-31 12:07:58,734 INFO  Stopping application MovableCloudFoundryClusterExample[id=NaepvoQ5,displayName=MovableCloudFoundryClusterExample:Naep]
Application context shutting down...
2012-05-31 12:07:58,746 INFO  Stopping software process entity NginxController[id=eL05SXC7,displayName=NginxController:eL05]
Application context shutdown.
2012-05-31 12:07:58,993 INFO  Resize DynamicWebAppCluster[id=LYXZGkZJ,displayName=DynamicWebAppCluster:LYXZ] from 1 to 0; delta = -1
2012-05-31 12:07:59,005 INFO  Stopping software process entity JBoss7Server[id=Ej5NBSuQ,displayName=JBoss7Server:Ej5N]
2012-05-31 12:07:59,060 INFO  Stopped Brooklyn web console at http://localhost:8081
2012-05-31 12:07:59,178 INFO  Stopped application MovableCloudFoundryClusterExample[id=NaepvoQ5,displayName=MovableCloudFoundryClusterExample:Naep]

Race in AbstractGenoDnsService

The update method does a synchronized on the targetHosts list. The targetHosts itself is a threadsafe list (since it is created using a Collections.synchronizedMap). But by calling synchronized the intrinsic lock of the targetHosts object is acquired, and this could be a completely different lock than the lock used by the Collections.synchronizedMap implementation.

So while the synchronized block is entered, there is no guarantee that another method can't call a put/remove operation on the map.

So the code is unclear at best, or otherwise broken. A typical example of sprinkling the code with synchronized to hope to get something threadsafe.

Solution? Don't know.. perhaps use a normal mutable collections for the targetHost, and always use explicit synchronization if some form of stable copy is needed. Otherwise perhaps make use of the concurrenthashmap

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.