mesosphere / marathon

Deploy and manage containers (including Docker) on top of Apache Mesos at scale.
https://mesosphere.github.io/marathon/
Apache License 2.0
4.07k stars 845 forks source link

Cannot change configuration of Marathon app after deployment #2812

Closed sargun closed 8 years ago

sargun commented 8 years ago

I get the following exception if I try to change the Marathon configuration from the UI:

Dec 12 02:34:41 ip-10-0-6-218.us-west-2.compute.internal java[1488]: [2015-12-12 02:34:41,917] WARN mapping exception to status code (mesosphere.marathon.api.MarathonExceptionMapper$$EnhancerByGuice$$f3b705a9:qtp828312047-32)
Dec 12 02:34:41 ip-10-0-6-218.us-west-2.compute.internal java[1488]: play.api.libs.json.JsResultException: JsResultException(errors:List((/healthChecks(0)/command/value,List(ValidationError(List(error.path.missing),WrappedArray())))))
Dec 12 02:34:41 ip-10-0-6-218.us-west-2.compute.internal java[1488]: at play.api.libs.json.JsReadable$$anonfun$2.apply(JsReadable.scala:20) ~[marathon.jar:0.13.0]
Dec 12 02:34:41 ip-10-0-6-218.us-west-2.compute.internal java[1488]: at play.api.libs.json.JsReadable$$anonfun$2.apply(JsReadable.scala:20) ~[marathon.jar:0.13.0]
Dec 12 02:34:41 ip-10-0-6-218.us-west-2.compute.internal java[1488]: at play.api.libs.json.JsResult$class.fold(JsResult.scala:73) ~[marathon.jar:0.13.0]
Dec 12 02:34:41 ip-10-0-6-218.us-west-2.compute.internal java[1488]: at play.api.libs.json.JsError.fold(JsResult.scala:13) ~[marathon.jar:0.13.0]
Dec 12 02:34:41 ip-10-0-6-218.us-west-2.compute.internal java[1488]: at play.api.libs.json.JsReadable$class.as(JsReadable.scala:18) ~[marathon.jar:0.13.0]
Dec 12 02:34:41 ip-10-0-6-218.us-west-2.compute.internal java[1488]: at play.api.libs.json.JsObject.as(JsValue.scala:76) ~[marathon.jar:0.13.0]
Dec 12 02:34:41 ip-10-0-6-218.us-west-2.compute.internal java[1488]: at mesosphere.marathon.api.v2.AppsResource$$anonfun$replace$1.apply(AppsResource.scala:131) ~[marathon.jar:0.13.0]
Dec 12 02:34:41 ip-10-0-6-218.us-west-2.compute.internal java[1488]: at mesosphere.marathon.api.v2.AppsResource$$anonfun$replace$1.apply(AppsResource.scala:130) ~[marathon.jar:0.13.0]
Dec 12 02:34:41 ip-10-0-6-218.us-west-2.compute.internal java[1488]: at mesosphere.marathon.api.AuthResource$class.doIfAuthorized(AuthResource.scala:46) ~[marathon.jar:0.13.0]
Dec 12 02:34:41 ip-10-0-6-218.us-west-2.compute.internal java[1488]: at mesosphere.marathon.api.v2.AppsResource.doIfAuthorized(AppsResource.scala:30) ~[marathon.jar:0.13.0]
Dec 12 02:34:41 ip-10-0-6-218.us-west-2.compute.internal java[1488]: at mesosphere.marathon.DebugModule$MetricsBehavior$$anonfun$invoke$1.apply(DebugConf.scala:56) ~[marathon.jar:0.13.0]
Dec 12 02:34:41 ip-10-0-6-218.us-west-2.compute.internal java[1488]: at mesosphere.marathon.metrics.Metrics.timed(Metrics.scala:25) ~[marathon.jar:0.13.0]
Dec 12 02:34:41 ip-10-0-6-218.us-west-2.compute.internal java[1488]: at mesosphere.marathon.DebugModule$MetricsBehavior.invoke(DebugConf.scala:55) ~[marathon.jar:0.13.0]
Dec 12 02:34:41 ip-10-0-6-218.us-west-2.compute.internal java[1488]: at mesosphere.marathon.api.v2.AppsResource.replace(AppsResource.scala:130) ~[marathon.jar:0.13.0]
Dec 12 02:34:41 ip-10-0-6-218.us-west-2.compute.internal java[1488]: at mesosphere.marathon.DebugModule$MetricsBehavior$$anonfun$invoke$1.apply(DebugConf.scala:56) ~[marathon.jar:0.13.0]
Dec 12 02:34:41 ip-10-0-6-218.us-west-2.compute.internal java[1488]: at mesosphere.marathon.metrics.Metrics.timed(Metrics.scala:25) ~[marathon.jar:0.13.0]
Dec 12 02:34:41 ip-10-0-6-218.us-west-2.compute.internal java[1488]: at mesosphere.marathon.DebugModule$MetricsBehavior.invoke(DebugConf.scala:55) ~[marathon.jar:0.13.0]
Dec 12 02:34:41 ip-10-0-6-218.us-west-2.compute.internal nginx[6675]: ip-10-0-6-218.us-west-2.compute.internal nginx: 208.72.142.175 - - [12/Dec/2015:02:34:41 +0000] "PUT /marathon/v2/apps//backend1 HTTP/1.1" 400 123 "http://52.25.130.154/marathon/ui/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.80 Safari/537.36"
Dec 12 02:34:41 ip-10-0-6-218.us-west-2.compute.internal java[1488]: at sun.reflect.GeneratedMethodAccessor26.invoke(Unknown Source) ~[na:na]
Dec 12 02:34:41 ip-10-0-6-218.us-west-2.compute.internal java[1488]: at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_51]
Dec 12 02:34:41 ip-10-0-6-218.us-west-2.compute.internal java[1488]: at java.lang.reflect.Method.invoke(Method.java:497) ~[na:1.8.0_51]
Dec 12 02:34:41 ip-10-0-6-218.us-west-2.compute.internal java[1488]: at com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60) ~[marathon.jar:0.13.0]
Dec 12 02:34:41 ip-10-0-6-218.us-west-2.compute.internal java[1488]: at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$ResponseOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:205) ~[marathon.jar:0.13.0]
Dec 12 02:34:42 ip-10-0-6-218.us-west-2.compute.internal java[1488]: at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75) ~[marathon.jar:0.13.0]
Dec 12 02:34:42 ip-10-0-6-218.us-west-2.compute.internal java[1488]: at com.codahale.metrics.jersey.InstrumentedResourceMethodDispatchProvider$TimedRequestDispatcher.dispatch(InstrumentedResourceMethodDispatchProvider.java:30) ~[marathon.jar:0.13.0]
Dec 12 02:34:42 ip-10-0-6-218.us-west-2.compute.internal java[1488]: at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:302) ~[marathon.jar:0.13.0]
Dec 12 02:34:42 ip-10-0-6-218.us-west-2.compute.internal java[1488]: at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) ~[marathon.jar:0.13.0]
Dec 12 02:34:42 ip-10-0-6-218.us-west-2.compute.internal java[1488]: at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108) ~[marathon.jar:0.13.0]
Dec 12 02:34:42 ip-10-0-6-218.us-west-2.compute.internal java[1488]: at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) ~[marathon.jar:0.13.0]
Dec 12 02:34:42 ip-10-0-6-218.us-west-2.compute.internal java[1488]: at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84) ~[marathon.jar:0.13.0]
Dec 12 02:34:42 ip-10-0-6-218.us-west-2.compute.internal java[1488]: at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1542) ~[marathon.jar:0.13.0]
Dec 12 02:34:42 ip-10-0-6-218.us-west-2.compute.internal java[1488]: at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1473) ~[marathon.jar:0.13.0]
Dec 12 02:34:42 ip-10-0-6-218.us-west-2.compute.internal java[1488]: at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1419) ~[marathon.jar:0.13.0]
Dec 12 02:34:42 ip-10-0-6-218.us-west-2.compute.internal java[1488]: at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1409) ~[marathon.jar:0.13.0]
Dec 12 02:34:42 ip-10-0-6-218.us-west-2.compute.internal java[1488]: at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:409) ~[marathon.jar:0.13.0]
Dec 12 02:34:42 ip-10-0-6-218.us-west-2.compute.internal java[1488]: at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:540) ~[marathon.jar:0.13.0]
Dec 12 02:34:42 ip-10-0-6-218.us-west-2.compute.internal java[1488]: at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:715) ~[marathon.jar:0.13.0]
Dec 12 02:34:42 ip-10-0-6-218.us-west-2.compute.internal java[1488]: at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) ~[marathon.jar:0.13.0]
Dec 12 02:34:42 ip-10-0-6-218.us-west-2.compute.internal java[1488]: at com.google.inject.servlet.ServletDefinition.doService(ServletDefinition.java:263) ~[marathon.jar:0.13.0]
Dec 12 02:34:42 ip-10-0-6-218.us-west-2.compute.internal java[1488]: at com.google.inject.servlet.ServletDefinition.service(ServletDefinition.java:178) ~[marathon.jar:0.13.0]
Dec 12 02:34:42 ip-10-0-6-218.us-west-2.compute.internal java[1488]: at com.google.inject.servlet.ManagedServletPipeline.service(ManagedServletPipeline.java:91) ~[marathon.jar:0.13.0]
Dec 12 02:34:42 ip-10-0-6-218.us-west-2.compute.internal java[1488]: at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:62) [marathon.jar:0.13.0]
Dec 12 02:34:42 ip-10-0-6-218.us-west-2.compute.internal java[1488]: at mesosphere.marathon.api.CacheDisablingFilter.doFilter(CacheDisablingFilter.scala:18) ~[marathon.jar:0.13.0]
Dec 12 02:34:42 ip-10-0-6-218.us-west-2.compute.internal java[1488]: at mesosphere.marathon.DebugModule$MetricsBehavior$$anonfun$invoke$1.apply(DebugConf.scala:56) ~[marathon.jar:0.13.0]
Dec 12 02:34:42 ip-10-0-6-218.us-west-2.compute.internal java[1488]: at mesosphere.marathon.metrics.Metrics.timed(Metrics.scala:25) ~[marathon.jar:0.13.0]
Dec 12 02:34:42 ip-10-0-6-218.us-west-2.compute.internal java[1488]: at mesosphere.marathon.DebugModule$MetricsBehavior.invoke(DebugConf.scala:55) ~[marathon.jar:0.13.0]
Dec 12 02:34:42 ip-10-0-6-218.us-west-2.compute.internal java[1488]: at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:163) [marathon.jar:0.13.0]
Dec 12 02:34:42 ip-10-0-6-218.us-west-2.compute.internal java[1488]: at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58) [marathon.jar:0.13.0]
Dec 12 02:34:42 ip-10-0-6-218.us-west-2.compute.internal java[1488]: at mesosphere.marathon.api.CORSFilter.doFilter(CORSFilter.scala:46) ~[marathon.jar:0.13.0]
Dec 12 02:34:42 ip-10-0-6-218.us-west-2.compute.internal java[1488]: at mesosphere.marathon.DebugModule$MetricsBehavior$$anonfun$invoke$1.apply(DebugConf.scala:56) ~[marathon.jar:0.13.0]
Dec 12 02:34:42 ip-10-0-6-218.us-west-2.compute.internal java[1488]: at mesosphere.marathon.metrics.Metrics.timed(Metrics.scala:25) ~[marathon.jar:0.13.0]
Dec 12 02:34:42 ip-10-0-6-218.us-west-2.compute.internal java[1488]: at mesosphere.marathon.DebugModule$MetricsBehavior.invoke(DebugConf.scala:55) ~[marathon.jar:0.13.0]
Dec 12 02:34:42 ip-10-0-6-218.us-west-2.compute.internal java[1488]: at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:163) [marathon.jar:0.13.0]
Dec 12 02:34:42 ip-10-0-6-218.us-west-2.compute.internal java[1488]: at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58) [marathon.jar:0.13.0]
Dec 12 02:34:42 ip-10-0-6-218.us-west-2.compute.internal java[1488]: at mesosphere.marathon.api.LimitConcurrentRequestsFilter.pass(LimitConcurrentRequestsFilter.scala:32) [marathon.jar:0.13.0]
Dec 12 02:34:42 ip-10-0-6-218.us-west-2.compute.internal java[1488]: at mesosphere.marathon.api.LimitConcurrentRequestsFilter$$anonfun$3$$anonfun$apply$2.apply(LimitConcurrentRequestsFilter.scala:15) [marathon.jar:0.13.0]
Dec 12 02:34:42 ip-10-0-6-218.us-west-2.compute.internal java[1488]: at mesosphere.marathon.api.LimitConcurrentRequestsFilter$$anonfun$3$$anonfun$apply$2.apply(LimitConcurrentRequestsFilter.scala:15) [marathon.jar:0.13.0]
Dec 12 02:34:42 ip-10-0-6-218.us-west-2.compute.internal java[1488]: at mesosphere.marathon.api.LimitConcurrentRequestsFilter.doFilter(LimitConcurrentRequestsFilter.scala:36) [marathon.jar:0.13.0]
Dec 12 02:34:42 ip-10-0-6-218.us-west-2.compute.internal java[1488]: at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:163) [marathon.jar:0.13.0]
Dec 12 02:34:42 ip-10-0-6-218.us-west-2.compute.internal java[1488]: at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58) [marathon.jar:0.13.0]
Dec 12 02:34:42 ip-10-0-6-218.us-west-2.compute.internal java[1488]: at mesosphere.marathon.api.LeaderProxyFilter.doFilter(LeaderProxyFilter.scala:126) [marathon.jar:0.13.0]
Dec 12 02:34:42 ip-10-0-6-218.us-west-2.compute.internal java[1488]: at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:163) [marathon.jar:0.13.0]
Dec 12 02:34:42 ip-10-0-6-218.us-west-2.compute.internal java[1488]: at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58) [marathon.jar:0.13.0]
Dec 12 02:34:42 ip-10-0-6-218.us-west-2.compute.internal java[1488]: at com.google.inject.servlet.ManagedFilterPipeline.dispatch(ManagedFilterPipeline.java:118) [marathon.jar:0.13.0]
Dec 12 02:34:42 ip-10-0-6-218.us-west-2.compute.internal java[1488]: at com.google.inject.servlet.GuiceFilter.doFilter(GuiceFilter.java:113) [marathon.jar:0.13.0]
Dec 12 02:34:42 ip-10-0-6-218.us-west-2.compute.internal java[1488]: at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1667) [marathon.jar:0.13.0]
Dec 12 02:34:42 ip-10-0-6-218.us-west-2.compute.internal java[1488]: at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581) [marathon.jar:0.13.0]
Dec 12 02:34:42 ip-10-0-6-218.us-west-2.compute.internal java[1488]: at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1114) [marathon.jar:0.13.0]
Dec 12 02:34:42 ip-10-0-6-218.us-west-2.compute.internal java[1488]: at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511) [marathon.jar:0.13.0]
Dec 12 02:34:42 ip-10-0-6-218.us-west-2.compute.internal java[1488]: at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1048) [marathon.jar:0.13.0]
Dec 12 02:34:42 ip-10-0-6-218.us-west-2.compute.internal java[1488]: at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) [marathon.jar:0.13.0]
Dec 12 02:34:42 ip-10-0-6-218.us-west-2.compute.internal java[1488]: at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119) [marathon.jar:0.13.0]
Dec 12 02:34:42 ip-10-0-6-218.us-west-2.compute.internal java[1488]: at com.codahale.metrics.jetty9.InstrumentedHandler.handle(InstrumentedHandler.java:240) [marathon.jar:0.13.0]
Dec 12 02:34:42 ip-10-0-6-218.us-west-2.compute.internal java[1488]: at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109) [marathon.jar:0.13.0]
Dec 12 02:34:42 ip-10-0-6-218.us-west-2.compute.internal java[1488]: at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119) [marathon.jar:0.13.0]
Dec 12 02:34:42 ip-10-0-6-218.us-west-2.compute.internal java[1488]: at org.eclipse.jetty.server.Server.handle(Server.java:517) [marathon.jar:0.13.0]
Dec 12 02:34:42 ip-10-0-6-218.us-west-2.compute.internal java[1488]: at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:302) [marathon.jar:0.13.0]
Dec 12 02:34:42 ip-10-0-6-218.us-west-2.compute.internal java[1488]: at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242) [marathon.jar:0.13.0]
Dec 12 02:34:42 ip-10-0-6-218.us-west-2.compute.internal java[1488]: at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:245) [marathon.jar:0.13.0]
Dec 12 02:34:42 ip-10-0-6-218.us-west-2.compute.internal java[1488]: at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95) [marathon.jar:0.13.0]
Dec 12 02:34:42 ip-10-0-6-218.us-west-2.compute.internal java[1488]: at org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75) [marathon.jar:0.13.0]
Dec 12 02:34:42 ip-10-0-6-218.us-west-2.compute.internal java[1488]: at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213) [marathon.jar:0.13.0]
Dec 12 02:34:42 ip-10-0-6-218.us-west-2.compute.internal java[1488]: at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147) [marathon.jar:0.13.0]
Dec 12 02:34:42 ip-10-0-6-218.us-west-2.compute.internal java[1488]: at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654) [marathon.jar:0.13.0]
Dec 12 02:34:42 ip-10-0-6-218.us-west-2.compute.internal java[1488]: at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572) [marathon.jar:0.13.0]
Dec 12 02:34:42 ip-10-0-6-218.us-west-2.compute.internal java[1488]: at java.lang.Thread.run(Thread.java:745) [na:1.8.0_51]

This is my app JSON that I started with:

{
    "apps": [
        {
            "acceptedResourceRoles": null,
            "args": null,
            "backoffFactor": 1.15,
            "backoffSeconds": 1,
            "cmd": "touch healthy && chmod 755 linux-amd64 && ./linux-amd64 -listener=:${PORT0}",
            "constraints": [],
            "container": null,
            "cpus": 0.1,
            "dependencies": [],
            "deployments": [],
            "disk": 0,
            "env": {},
            "executor": "",
            "healthChecks": [
                {
                    "command": {
                        "value": "test -f healthy"
                    },
                    "gracePeriodSeconds": 300,
                    "ignoreHttp1xx": false,
                    "intervalSeconds": 60,
                    "maxConsecutiveFailures": 300,
                    "portIndex": 0,
                    "protocol": "COMMAND",
                    "timeoutSeconds": 20
                }
            ],
            "id": "/backend1",
            "instances": 10,
            "labels": {},
            "maxLaunchDelaySeconds": 3600,
            "mem": 16,
            "ports": [
                10000
            ],
            "requirePorts": false,
            "storeUrls": [],
            "tasksHealthy": 10,
            "tasksRunning": 10,
            "tasksStaged": 0,
            "tasksUnhealthy": 0,
            "upgradeStrategy": {
                "maximumOverCapacity": 1,
                "minimumHealthCapacity": 1
            },
            "uris": [
                "https://circle-artifacts.com/gh/sargun/helloworld/4/artifacts/0/tmp/circle-artifacts.LHuOcEA/linux-amd64"
            ],
            "user": null,
            "version": "2015-12-12T02:33:17.240Z",
            "versionInfo": {
                "lastConfigChangeAt": "2015-12-12T02:33:17.240Z",
                "lastScalingAt": "2015-12-12T02:33:17.240Z"
            }
        }
    ]
}
aquamatthias commented 8 years ago

I can reproduce the problem. Looks like the UI renders invalid json, if the app is updated. The json that is created by the UI looks like this:

{
  "id": "/backend1",
  "cmd": "touch healthy && chmod 755 linux-amd64 && ./linux-amd64 -listener=:${PORT0}",
  "args": null,
  "user": null,
  "env": {},
  "instances": 0,
  "cpus": 0.1,
  "mem": 16,
  "disk": 0,
  "executor": "",
  "constraints": [],
  "uris": [],
  "storeUrls": [],
  "ports": [
    10000
  ],
  "requirePorts": false,
  "backoffSeconds": 1,
  "backoffFactor": 1.15,
  "maxLaunchDelaySeconds": 3600,
  "container": null,
  "healthChecks": [
    {
      "protocol": "COMMAND",
      "portIndex": 0,
      "command": "test -f healthy gggggg",
      "gracePeriodSeconds": 300,
      "intervalSeconds": 60,
      "timeoutSeconds": 20,
      "maxConsecutiveFailures": 300,
      "ignoreHttp1xx": false,
      "consecutiveKey": 0
    }
  ],
  "dependencies": [],
  "upgradeStrategy": {
    "minimumHealthCapacity": 1,
    "maximumOverCapacity": 1
  },
  "labels": {},
  "acceptedResourceRoles": null,
  "versionInfo": {
    "lastScalingAt": "2015-12-15T07:25:23.722Z",
    "lastConfigChangeAt": "2015-12-15T07:25:23.722Z"
  },
  "deployments": [],
  "health": [],
  "healthWeight": 0,
  "lastTaskFailure": null,
  "status": 2,
  "tasks": [],
  "tasksRunning": 0,
  "taskStats": {},
  "type": "BASIC"
}

The problematic part is: "command": "xxx", but should be "command": { "value": "xxx" }

aquamatthias commented 8 years ago

@pierlo-upitup can you fix this for 0.14?

pierluigi commented 8 years ago

Thanks for the heads up. FTR the bug occurs when you try to edit an app configuration that has healthChecks (unless you modify the command field).

Looking into this.

pierluigi commented 8 years ago

cc @aldipower cfr. AppFormStore.populateFieldsFromAppDefinition mutates data.