Skip to content
This repository has been archived by the owner on Oct 23, 2024. It is now read-only.

Deploy Marathon without Docker container, bump Marathon to 1.6.352 (MARATHON-8180) #1829

Closed
wants to merge 2 commits into from

Conversation

deric
Copy link
Contributor

@deric deric commented Apr 30, 2018

While debugging Marathon's memory usage, I've run into several issues that should be addressed by this PR:

Marathon binary is fetched from the same deployment URI as for DC/OS "root" Marathon (dcos-marathon service).

Benefits:

  • Simplifies Marathon testing pipeline (same deployment used for "root" Marathon and Marathon on Marathon DC/OS package)
  • Allows JMX debugging (somehow almost impossible to be configured inside a Docker container)
  • Avoid possible Docker crashes that can bring down the whole cluster (MESOS-8623)

Diff:

diff --git a/repo/packages/M/marathon/28/config.json b/repo/packages/M/marathon/29/config.json
index 3721fe3a..a3bb69bc 100644
--- a/repo/packages/M/marathon/28/config.json
+++ b/repo/packages/M/marathon/29/config.json
@@ -24,9 +24,9 @@
           "type" : "number"
         },
         "mem" : {
-          "default" : 1536,
+          "default" : 2048,
           "description" : "Memory (MB) to allocate to each Marathon instance.",
-          "minimum" : 512,
+          "minimum" : 1024,
           "type" : "number"
         },
         "instances" : {
@@ -59,7 +59,7 @@
           "type" : "integer"
         },
         "heap-max" : {
-          "default" : 768,
+          "default" : 1536,
           "description" : "Memory (MB) max size for the JVM heap. This number should be less than the memory allocated to the Marathon instance (General rule: 50%).",
           "minimum" : 0,
           "type" : "integer"
@@ -433,4 +433,4 @@
   },
   "required" : [ "service", "jvm", "marathon" ],
   "type" : "object"
-}
\ No newline at end of file
+}
diff --git a/repo/packages/M/marathon/28/marathon.json.mustache b/repo/packages/M/marathon/29/marathon.json.mustache
index b5261e1f..c86be6c9 100644
--- a/repo/packages/M/marathon/28/marathon.json.mustache
+++ b/repo/packages/M/marathon/29/marathon.json.mustache
@@ -1,4 +1,3 @@
-
 {
   "id": "{{#service.group}}{{service.group}}/{{/service.group}}{{service.name}}",
   "cpus": {{service.cpus}},
@@ -14,7 +13,15 @@
     {{/marathon.ssl-keystore-password}}
     {{/marathon.ssl-keystore-path}}
   ],
-  "uris": {{service.uris}},
+  "uris": [
+    {{#service.uris}}
+    {{#.}}
+      "{{.}}",
+    {{/.}}
+    {{/service.uris}}
+    "{{resource.assets.uris.jre-tar-gz}}",
+    "{{resource.assets.uris.marathon-tar-gz}}"
+  ],
   "healthChecks": [
     {
       "gracePeriodSeconds": 1800,
@@ -22,21 +29,14 @@
       "maxConsecutiveFailures": 3,
       "path": "/ping",
       "portIndex": 0,
-      "protocol": "HTTP",
+      "protocol": "MESOS_HTTP",
       "timeoutSeconds": 5
     }
   ],
-  "container": {
-    "type": "DOCKER",
-    "docker": {
-      "image": "{{resource.assets.container.docker.image}}",
-      "network": "HOST"
-    }
-  },
   "env": {
     "JVM_OPTS": "-Xms{{jvm.heap-min}}m -Xmx{{jvm.heap-max}}m {{#jvm.opts}}{{jvm.opts}}{{/jvm.opts}}"
   },
-  "cmd": "LIBPROCESS_PORT=$PORT1 && ./bin/start {{#marathon.access-control-allow-origin}}--access_control_allow_origin \"{{marathon.access-control-allow-origin}}\"{{/marathon.access-control-allow-origin}} {{#marathon.backup-location}}--backup_location \"{{marathon.backup-location}}\"{{/marathon.backup-location}} {{#marathon.checkpoint}} --checkpoint{{/marathon.checkpoint}}{{^marathon.checkpoint}}--disable_checkpoint{{/marathon.checkpoint}} {{#marathon.decline-offer-duration}}--decline_offer_duration \"{{marathon.decline-offer-duration}}\"{{/marathon.decline-offer-duration}} {{#marathon.default-accepted-resource-roles}}--default_accepted_resource_roles \"{{marathon.default-accepted-resource-roles}}\"{{/marathon.default-accepted-resource-roles}} {{#marathon.default-network-name}}--default_network_name \"{{marathon.default-network-name}}\"{{/marathon.default-network-name}} {{#marathon.disable-http}}--disable_http{{/marathon.disable-http}} {{#marathon.draining-seconds}}--draining_seconds \"{{marathon.draining-seconds}}\"{{/marathon.draining-seconds}} {{#marathon.enable-features}}--enable_features \"{{marathon.enable-features}}\"{{/marathon.enable-features}} {{#marathon.env-vars-prefix}}--env_vars_prefix \"{{marathon.env-vars-prefix}}\"{{/marathon.env-vars-prefix}} {{#marathon.event-stream-max-outstanding-messages}}--event_stream_max_outstanding_messages \"{{marathon.event-stream-max-outstanding-messages}}\"{{/marathon.event-stream-max-outstanding-messages}} {{#marathon.executor}}--executor \"{{marathon.executor}}\"{{/marathon.executor}} {{#marathon.failover-timeout}}--failover_timeout \"{{marathon.failover-timeout}}\"{{/marathon.failover-timeout}} --framework_name {{#marathon.framework-name}}{{marathon.framework-name}}{{/marathon.framework-name}}{{^marathon.framework-name}}{{service.name}}{{/marathon.framework-name}} {{#marathon.ha}} --ha{{/marathon.ha}}{{^marathon.ha}}--disable_ha{{/marathon.ha}} --hostname {{#marathon.hostname}}{{marathon.hostname}}{{/marathon.hostname}}{{^marathon.hostname}}$LIBPROCESS_IP{{/marathon.hostname}} {{#marathon.http-address}}--http_address \"{{marathon.http-address}}\"{{/marathon.http-address}} {{#marathon.http-compression}} --http_compression{{/marathon.http-compression}}{{^marathon.http-compression}}--disable_http_compression{{/marathon.http-compression}} {{#marathon.http-credentials}}--http_credentials \"{{marathon.http-credentials}}\"{{/marathon.http-credentials}} {{#marathon.http-max-concurrent-requests}}--http_max_concurrent_requests \"{{marathon.http-max-concurrent-requests}}\"{{/marathon.http-max-concurrent-requests}} --http_port {{#marathon.http-port}}{{marathon.http-port}}{{/marathon.http-port}}{{^marathon.http-port}} $PORT0 {{/marathon.http-port}} {{#marathon.http-realm}}--http_realm \"{{marathon.http-realm}}\"{{/marathon.http-realm}} {{#marathon.https-address}}--https_address \"{{marathon.https-address}}\"{{/marathon.https-address}} {{#marathon.ssl-keystore-path}}--https_port {{#marathon.https-port}}{{marathon.https-port}}{{/marathon.https-port}}{{^marathon.https-port}} $PORT2 {{/marathon.https-port}}{{/marathon.ssl-keystore-path}} {{#marathon.launch-token-refresh-interval}}--launch_token_refresh_interval \"{{marathon.launch-token-refresh-interval}}\"{{/marathon.launch-token-refresh-interval}} {{#marathon.launch-tokens}}--launch_tokens \"{{marathon.launch-tokens}}\"{{/marathon.launch-tokens}} {{#marathon.leader-proxy-connection-timeout}}--leader_proxy_connection_timeout \"{{marathon.leader-proxy-connection-timeout}}\"{{/marathon.leader-proxy-connection-timeout}} {{#marathon.leader-proxy-read-timeout}}--leader_proxy_read_timeout \"{{marathon.leader-proxy-read-timeout}}\"{{/marathon.leader-proxy-read-timeout}} {{#marathon.leader-proxy-ssl-ignore-hostname}}--leader_proxy_ssl_ignore_hostname \"{{marathon.leader-proxy-ssl-ignore-hostname}}\"{{/marathon.leader-proxy-ssl-ignore-hostname}} {{#marathon.local-port-max}}--local_port_max \"{{marathon.local-port-max}}\"{{/marathon.local-port-max}} {{#marathon.local-port-min}}--local_port_min \"{{marathon.local-port-min}}\"{{/marathon.local-port-min}} {{#marathon.logging-level}}--logging_level \"{{marathon.logging-level}}\"{{/marathon.logging-level}} {{#marathon.logstash}}--logstash \"{{marathon.logstash}}\"{{/marathon.logstash}} {{#marathon.master}}--master \"{{marathon.master}}\"{{/marathon.master}} {{#marathon.max-apps}}--max_apps \"{{marathon.max-apps}}\"{{/marathon.max-apps}} {{#marathon.max-instances-per-offer}}--max_instances_per_offer \"{{marathon.max-instances-per-offer}}\"{{/marathon.max-instances-per-offer}} {{#marathon.mesos-authentication}} --mesos_authentication{{/marathon.mesos-authentication}}{{^marathon.mesos-authentication}}--disable_mesos_authentication{{/marathon.mesos-authentication}} --mesos_authentication_principal {{#marathon.mesos-authentication-principal}}{{marathon.mesos-authentication-principal}}{{/marathon.mesos-authentication-principal}}{{^marathon.mesos-authentication-principal}}{{service.name}}{{/marathon.mesos-authentication-principal}} {{#marathon.mesos-authentication-secret}}--mesos_authentication_secret \"{{marathon.mesos-authentication-secret}}\"{{/marathon.mesos-authentication-secret}} {{#marathon.mesos-authentication-secret-file}}--mesos_authentication_secret_file \"{{marathon.mesos-authentication-secret-file}}\"{{/marathon.mesos-authentication-secret-file}} {{#marathon.mesos-bridge-name}}--mesos_bridge_name \"{{marathon.mesos-bridge-name}}\"{{/marathon.mesos-bridge-name}} {{#marathon.mesos-leader-ui-url}}--mesos_leader_ui_url \"{{marathon.mesos-leader-ui-url}}\"{{/marathon.mesos-leader-ui-url}} --mesos_role {{#marathon.mesos-role}}{{marathon.mesos-role}}{{/marathon.mesos-role}}{{^marathon.mesos-role}}{{service.name}}{{/marathon.mesos-role}} {{#marathon.mesos-user}}--mesos_user \"{{marathon.mesos-user}}\"{{/marathon.mesos-user}} {{#marathon.metrics}} --metrics{{/marathon.metrics}}{{^marathon.metrics}}--disable_metrics{{/marathon.metrics}} {{#marathon.min-revive-offers-interval}}--min_revive_offers_interval \"{{marathon.min-revive-offers-interval}}\"{{/marathon.min-revive-offers-interval}} {{#marathon.offer-matching-timeout}}--offer_matching_timeout \"{{marathon.offer-matching-timeout}}\"{{/marathon.offer-matching-timeout}} {{#marathon.on-elected-prepare-timeout}}--on_elected_prepare_timeout \"{{marathon.on-elected-prepare-timeout}}\"{{/marathon.on-elected-prepare-timeout}} {{#marathon.plugin-conf}}--plugin_conf \"{{marathon.plugin-conf}}\"{{/marathon.plugin-conf}} {{#marathon.plugin-dir}}--plugin_dir \"{{marathon.plugin-dir}}\"{{/marathon.plugin-dir}} {{#marathon.reconciliation-initial-delay}}--reconciliation_initial_delay \"{{marathon.reconciliation-initial-delay}}\"{{/marathon.reconciliation-initial-delay}} {{#marathon.reconciliation-interval}}--reconciliation_interval \"{{marathon.reconciliation-interval}}\"{{/marathon.reconciliation-interval}} {{#marathon.reporter-datadog}}--reporter_datadog \"{{marathon.reporter-datadog}}\"{{/marathon.reporter-datadog}} {{#marathon.reporter-graphite}}--reporter_graphite \"{{marathon.reporter-graphite}}\"{{/marathon.reporter-graphite}} {{#marathon.revive-offers-repetitions}}--revive_offers_repetitions \"{{marathon.revive-offers-repetitions}}\"{{/marathon.revive-offers-repetitions}} {{#marathon.scale-apps-initial-delay}}--scale_apps_initial_delay \"{{marathon.scale-apps-initial-delay}}\"{{/marathon.scale-apps-initial-delay}} {{#marathon.scale-apps-interval}}--scale_apps_interval \"{{marathon.scale-apps-interval}}\"{{/marathon.scale-apps-interval}} {{#marathon.sentry}}--sentry \"{{marathon.sentry}}\"{{/marathon.sentry}} {{#marathon.sentry-tags}}--sentry_tags \"{{marathon.sentry-tags}}\"{{/marathon.sentry-tags}} {{#marathon.ssl-keystore-password}}--ssl_keystore_password \"{{marathon.ssl-keystore-password}}\"{{/marathon.ssl-keystore-password}} {{#marathon.ssl-keystore-path}}--ssl_keystore_path \"{{marathon.ssl-keystore-path}}\"{{/marathon.ssl-keystore-path}} {{#marathon.store-cache}} --store_cache{{/marathon.store-cache}}{{^marathon.store-cache}}--disable_store_cache{{/marathon.store-cache}} {{#marathon.task-launch-confirm-timeout}}--task_launch_confirm_timeout \"{{marathon.task-launch-confirm-timeout}}\"{{/marathon.task-launch-confirm-timeout}} {{#marathon.task-launch-timeout}}--task_launch_timeout \"{{marathon.task-launch-timeout}}\"{{/marathon.task-launch-timeout}} {{#marathon.task-lost-expunge-initial-delay}}--task_lost_expunge_initial_delay \"{{marathon.task-lost-expunge-initial-delay}}\"{{/marathon.task-lost-expunge-initial-delay}} {{#marathon.task-lost-expunge-interval}}--task_lost_expunge_interval \"{{marathon.task-lost-expunge-interval}}\"{{/marathon.task-lost-expunge-interval}} {{#marathon.task-reservation-timeout}}--task_reservation_timeout \"{{marathon.task-reservation-timeout}}\"{{/marathon.task-reservation-timeout}} {{#marathon.webui-url}}--webui_url \"{{marathon.webui-url}}\"{{/marathon.webui-url}} --zk {{#marathon.zk}}{{marathon.zk}}{{/marathon.zk}}{{^marathon.zk}}zk://master.mesos:2181/universe/{{service.name}}{{/marathon.zk}} {{#marathon.zk-compression}} --zk_compression{{/marathon.zk-compression}}{{^marathon.zk-compression}}--disable_zk_compression{{/marathon.zk-compression}} {{#marathon.zk-compression-threshold}}--zk_compression_threshold \"{{marathon.zk-compression-threshold}}\"{{/marathon.zk-compression-threshold}} {{#marathon.zk-connection-timeout}}--zk_connection_timeout \"{{marathon.zk-connection-timeout}}\"{{/marathon.zk-connection-timeout}} {{#marathon.zk-max-node-size}}--zk_max_node_size \"{{marathon.zk-max-node-size}}\"{{/marathon.zk-max-node-size}} {{#marathon.zk-max-versions}}--zk_max_versions \"{{marathon.zk-max-versions}}\"{{/marathon.zk-max-versions}} {{#marathon.zk-session-timeout}}--zk_session_timeout \"{{marathon.zk-session-timeout}}\"{{/marathon.zk-session-timeout}} {{#marathon.zk-timeout}}--zk_timeout \"{{marathon.zk-timeout}}\"{{/marathon.zk-timeout}}",
+  "cmd": "export JAVA_HOME=$(ls -d $MESOS_SANDBOX/jdk*/); LIBPROCESS_PORT=$PORT1 && ./marathon-1.6.352-044939181/bin/marathon {{#marathon.access-control-allow-origin}}--access_control_allow_origin \"{{marathon.access-control-allow-origin}}\"{{/marathon.access-control-allow-origin}} {{#marathon.backup-location}}--backup_location \"{{marathon.backup-location}}\"{{/marathon.backup-location}} {{#marathon.checkpoint}} --checkpoint{{/marathon.checkpoint}}{{^marathon.checkpoint}}--disable_checkpoint{{/marathon.checkpoint}} {{#marathon.decline-offer-duration}}--decline_offer_duration \"{{marathon.decline-offer-duration}}\"{{/marathon.decline-offer-duration}} {{#marathon.default-accepted-resource-roles}}--default_accepted_resource_roles \"{{marathon.default-accepted-resource-roles}}\"{{/marathon.default-accepted-resource-roles}} {{#marathon.default-network-name}}--default_network_name \"{{marathon.default-network-name}}\"{{/marathon.default-network-name}} {{#marathon.disable-http}}--disable_http{{/marathon.disable-http}} {{#marathon.draining-seconds}}--draining_seconds \"{{marathon.draining-seconds}}\"{{/marathon.draining-seconds}} {{#marathon.enable-features}}--enable_features \"{{marathon.enable-features}}\"{{/marathon.enable-features}} {{#marathon.env-vars-prefix}}--env_vars_prefix \"{{marathon.env-vars-prefix}}\"{{/marathon.env-vars-prefix}} {{#marathon.event-stream-max-outstanding-messages}}--event_stream_max_outstanding_messages \"{{marathon.event-stream-max-outstanding-messages}}\"{{/marathon.event-stream-max-outstanding-messages}} {{#marathon.executor}}--executor \"{{marathon.executor}}\"{{/marathon.executor}} {{#marathon.failover-timeout}}--failover_timeout \"{{marathon.failover-timeout}}\"{{/marathon.failover-timeout}} --framework_name {{#marathon.framework-name}}{{marathon.framework-name}}{{/marathon.framework-name}}{{^marathon.framework-name}}{{service.name}}{{/marathon.framework-name}} {{#marathon.ha}} --ha{{/marathon.ha}}{{^marathon.ha}}--disable_ha{{/marathon.ha}} --hostname {{#marathon.hostname}}{{marathon.hostname}}{{/marathon.hostname}}{{^marathon.hostname}}$LIBPROCESS_IP{{/marathon.hostname}} {{#marathon.http-address}}--http_address \"{{marathon.http-address}}\"{{/marathon.http-address}} {{#marathon.http-compression}} --http_compression{{/marathon.http-compression}}{{^marathon.http-compression}}--disable_http_compression{{/marathon.http-compression}} {{#marathon.http-credentials}}--http_credentials \"{{marathon.http-credentials}}\"{{/marathon.http-credentials}} {{#marathon.http-max-concurrent-requests}}--http_max_concurrent_requests \"{{marathon.http-max-concurrent-requests}}\"{{/marathon.http-max-concurrent-requests}} --http_port {{#marathon.http-port}}{{marathon.http-port}}{{/marathon.http-port}}{{^marathon.http-port}} $PORT0 {{/marathon.http-port}} {{#marathon.http-realm}}--http_realm \"{{marathon.http-realm}}\"{{/marathon.http-realm}} {{#marathon.https-address}}--https_address \"{{marathon.https-address}}\"{{/marathon.https-address}} {{#marathon.ssl-keystore-path}}--https_port {{#marathon.https-port}}{{marathon.https-port}}{{/marathon.https-port}}{{^marathon.https-port}} $PORT2 {{/marathon.https-port}}{{/marathon.ssl-keystore-path}} {{#marathon.launch-token-refresh-interval}}--launch_token_refresh_interval \"{{marathon.launch-token-refresh-interval}}\"{{/marathon.launch-token-refresh-interval}} {{#marathon.launch-tokens}}--launch_tokens \"{{marathon.launch-tokens}}\"{{/marathon.launch-tokens}} {{#marathon.leader-proxy-connection-timeout}}--leader_proxy_connection_timeout \"{{marathon.leader-proxy-connection-timeout}}\"{{/marathon.leader-proxy-connection-timeout}} {{#marathon.leader-proxy-read-timeout}}--leader_proxy_read_timeout \"{{marathon.leader-proxy-read-timeout}}\"{{/marathon.leader-proxy-read-timeout}} {{#marathon.leader-proxy-ssl-ignore-hostname}}--leader_proxy_ssl_ignore_hostname \"{{marathon.leader-proxy-ssl-ignore-hostname}}\"{{/marathon.leader-proxy-ssl-ignore-hostname}} {{#marathon.local-port-max}}--local_port_max \"{{marathon.local-port-max}}\"{{/marathon.local-port-max}} {{#marathon.local-port-min}}--local_port_min \"{{marathon.local-port-min}}\"{{/marathon.local-port-min}} {{#marathon.logging-level}}--logging_level \"{{marathon.logging-level}}\"{{/marathon.logging-level}} {{#marathon.logstash}}--logstash \"{{marathon.logstash}}\"{{/marathon.logstash}} {{#marathon.master}}--master \"{{marathon.master}}\"{{/marathon.master}} {{#marathon.max-apps}}--max_apps \"{{marathon.max-apps}}\"{{/marathon.max-apps}} {{#marathon.max-instances-per-offer}}--max_instances_per_offer \"{{marathon.max-instances-per-offer}}\"{{/marathon.max-instances-per-offer}} {{#marathon.mesos-authentication}} --mesos_authentication{{/marathon.mesos-authentication}}{{^marathon.mesos-authentication}}--disable_mesos_authentication{{/marathon.mesos-authentication}} --mesos_authentication_principal {{#marathon.mesos-authentication-principal}}{{marathon.mesos-authentication-principal}}{{/marathon.mesos-authentication-principal}}{{^marathon.mesos-authentication-principal}}{{service.name}}{{/marathon.mesos-authentication-principal}} {{#marathon.mesos-authentication-secret}}--mesos_authentication_secret \"{{marathon.mesos-authentication-secret}}\"{{/marathon.mesos-authentication-secret}} {{#marathon.mesos-authentication-secret-file}}--mesos_authentication_secret_file \"{{marathon.mesos-authentication-secret-file}}\"{{/marathon.mesos-authentication-secret-file}} {{#marathon.mesos-bridge-name}}--mesos_bridge_name \"{{marathon.mesos-bridge-name}}\"{{/marathon.mesos-bridge-name}} {{#marathon.mesos-leader-ui-url}}--mesos_leader_ui_url \"{{marathon.mesos-leader-ui-url}}\"{{/marathon.mesos-leader-ui-url}} --mesos_role {{#marathon.mesos-role}}{{marathon.mesos-role}}{{/marathon.mesos-role}}{{^marathon.mesos-role}}{{service.name}}{{/marathon.mesos-role}} {{#marathon.mesos-user}}--mesos_user \"{{marathon.mesos-user}}\"{{/marathon.mesos-user}} {{#marathon.metrics}} --metrics{{/marathon.metrics}}{{^marathon.metrics}}--disable_metrics{{/marathon.metrics}} {{#marathon.min-revive-offers-interval}}--min_revive_offers_interval \"{{marathon.min-revive-offers-interval}}\"{{/marathon.min-revive-offers-interval}} {{#marathon.offer-matching-timeout}}--offer_matching_timeout \"{{marathon.offer-matching-timeout}}\"{{/marathon.offer-matching-timeout}} {{#marathon.on-elected-prepare-timeout}}--on_elected_prepare_timeout \"{{marathon.on-elected-prepare-timeout}}\"{{/marathon.on-elected-prepare-timeout}} {{#marathon.plugin-conf}}--plugin_conf \"{{marathon.plugin-conf}}\"{{/marathon.plugin-conf}} {{#marathon.plugin-dir}}--plugin_dir \"{{marathon.plugin-dir}}\"{{/marathon.plugin-dir}} {{#marathon.reconciliation-initial-delay}}--reconciliation_initial_delay \"{{marathon.reconciliation-initial-delay}}\"{{/marathon.reconciliation-initial-delay}} {{#marathon.reconciliation-interval}}--reconciliation_interval \"{{marathon.reconciliation-interval}}\"{{/marathon.reconciliation-interval}} {{#marathon.reporter-datadog}}--reporter_datadog \"{{marathon.reporter-datadog}}\"{{/marathon.reporter-datadog}} {{#marathon.reporter-graphite}}--reporter_graphite \"{{marathon.reporter-graphite}}\"{{/marathon.reporter-graphite}} {{#marathon.revive-offers-repetitions}}--revive_offers_repetitions \"{{marathon.revive-offers-repetitions}}\"{{/marathon.revive-offers-repetitions}} {{#marathon.scale-apps-initial-delay}}--scale_apps_initial_delay \"{{marathon.scale-apps-initial-delay}}\"{{/marathon.scale-apps-initial-delay}} {{#marathon.scale-apps-interval}}--scale_apps_interval \"{{marathon.scale-apps-interval}}\"{{/marathon.scale-apps-interval}} {{#marathon.sentry}}--sentry \"{{marathon.sentry}}\"{{/marathon.sentry}} {{#marathon.sentry-tags}}--sentry_tags \"{{marathon.sentry-tags}}\"{{/marathon.sentry-tags}} {{#marathon.ssl-keystore-password}}--ssl_keystore_password \"{{marathon.ssl-keystore-password}}\"{{/marathon.ssl-keystore-password}} {{#marathon.ssl-keystore-path}}--ssl_keystore_path \"{{marathon.ssl-keystore-path}}\"{{/marathon.ssl-keystore-path}} {{#marathon.store-cache}} --store_cache{{/marathon.store-cache}}{{^marathon.store-cache}}--disable_store_cache{{/marathon.store-cache}} {{#marathon.task-launch-confirm-timeout}}--task_launch_confirm_timeout \"{{marathon.task-launch-confirm-timeout}}\"{{/marathon.task-launch-confirm-timeout}} {{#marathon.task-launch-timeout}}--task_launch_timeout \"{{marathon.task-launch-timeout}}\"{{/marathon.task-launch-timeout}} {{#marathon.task-lost-expunge-initial-delay}}--task_lost_expunge_initial_delay \"{{marathon.task-lost-expunge-initial-delay}}\"{{/marathon.task-lost-expunge-initial-delay}} {{#marathon.task-lost-expunge-interval}}--task_lost_expunge_interval \"{{marathon.task-lost-expunge-interval}}\"{{/marathon.task-lost-expunge-interval}} {{#marathon.task-reservation-timeout}}--task_reservation_timeout \"{{marathon.task-reservation-timeout}}\"{{/marathon.task-reservation-timeout}} {{#marathon.webui-url}}--webui_url \"{{marathon.webui-url}}\"{{/marathon.webui-url}} --zk {{#marathon.zk}}{{marathon.zk}}{{/marathon.zk}}{{^marathon.zk}}zk://master.mesos:2181/universe/{{service.name}}{{/marathon.zk}} {{#marathon.zk-compression}} --zk_compression{{/marathon.zk-compression}}{{^marathon.zk-compression}}--disable_zk_compression{{/marathon.zk-compression}} {{#marathon.zk-compression-threshold}}--zk_compression_threshold \"{{marathon.zk-compression-threshold}}\"{{/marathon.zk-compression-threshold}} {{#marathon.zk-connection-timeout}}--zk_connection_timeout \"{{marathon.zk-connection-timeout}}\"{{/marathon.zk-connection-timeout}} {{#marathon.zk-max-node-size}}--zk_max_node_size \"{{marathon.zk-max-node-size}}\"{{/marathon.zk-max-node-size}} {{#marathon.zk-max-versions}}--zk_max_versions \"{{marathon.zk-max-versions}}\"{{/marathon.zk-max-versions}} {{#marathon.zk-session-timeout}}--zk_session_timeout \"{{marathon.zk-session-timeout}}\"{{/marathon.zk-session-timeout}} {{#marathon.zk-timeout}}--zk_timeout \"{{marathon.zk-timeout}}\"{{/marathon.zk-timeout}}",
   "labels": {
     "DCOS_PACKAGE_FRAMEWORK_NAME": "{{#marathon.framework-name}}{{marathon.framework-name}}{{/marathon.framework-name}}{{^marathon.framework-name}}{{service.name}}{{/marathon.framework-name}}",
     "DCOS_SERVICE_NAME": "{{service.name}}",
@@ -44,4 +44,3 @@
     "DCOS_SERVICE_PORT_INDEX": "0"
   }
 }
-    
\ No newline at end of file
diff --git a/repo/packages/M/marathon/28/package.json b/repo/packages/M/marathon/29/package.json
index bf5a9705..2a3ea448 100644
--- a/repo/packages/M/marathon/28/package.json
+++ b/repo/packages/M/marathon/29/package.json
@@ -1,18 +1,18 @@
 {
   "packagingVersion" : "3.0",
   "name" : "marathon",
-  "version" : "1.6.335",
+  "version" : "1.6.352",
   "minDcosReleaseVersion" : "1.11",
   "scm" : "https://github.com/mesosphere/marathon.git",
   "maintainer" : "[email protected]",
-  "description" : "A container orchestration platform for Mesos and DCOS.",
+  "description" : "A container orchestration platform for Mesos and DC/OS.",
   "framework" : true,
   "licenses" : [ {
     "name" : "Apache License Version 2.0",
     "url" : "https://github.com/mesosphere/marathon/blob/master/LICENSE"
   } ],
   "tags" : [ "init", "long-running" ],
-  "preInstallNotes" : "We recommend a minimum of one node with at least 2 CPU shares and 1GB of RAM available for the Marathon DCOS Service.",
+  "preInstallNotes" : "We recommend a minimum of one node with at least 2 CPU shares and 2GB of RAM available for the Marathon DCOS Service.",
   "postInstallNotes" : "Marathon DCOS Service has been successfully installed!\n\n\tDocumentation: https://mesosphere.github.io/marathon\n\tIssues: https://github.com/mesosphere/marathon/issues\n",
   "postUninstallNotes" : "The Marathon DCOS Service has been uninstalled and will no longer run.\nPlease follow the instructions at http://docs.mesosphere.com/services/marathon/#uninstall to clean up any persisted state",
   "selected" : true
diff --git a/repo/packages/M/marathon/28/resource.json b/repo/packages/M/marathon/29/resource.json
index f6a2b4af..d42d427c 100644
--- a/repo/packages/M/marathon/28/resource.json
+++ b/repo/packages/M/marathon/29/resource.json
@@ -1,14 +1,13 @@
 {
+  "assets": {
+    "uris": {
+      "jre-tar-gz": "https://downloads.mesosphere.com/java/server-jre-8u162-linux-x64.tar.gz",
+      "marathon-tar-gz": "https://s3.amazonaws.com/downloads.mesosphere.io/marathon/builds/1.6.352-044939181/marathon-1.6.352-044939181.tgz",
+    }
+  },
   "images": {
     "icon-small": "https://downloads.mesosphere.com/assets/universe/000/marathon-icon-small.png",
     "icon-medium": "https://downloads.mesosphere.com/assets/universe/000/marathon-icon-medium.png",
     "icon-large": "https://downloads.mesosphere.com/assets/universe/000/marathon-icon-large.png"
-  },
-  "assets": {
-    "container": {
-      "docker": {
-        "image": "mesosphere/marathon:v1.6.335"
-      }
-    }
   }
 }

@ryadav88 ryadav88 requested a review from meln1k May 15, 2018 06:31
@timcharper
Copy link
Contributor

I'm very much in favor of this change. I think other services in the universe download the Mesos native client library; is there any case where we can't depend on this being installed and available on an agent?

@timcharper
Copy link
Contributor

I'm not sure about changing the default memory limits, though. Why are the current values insufficient, and for which size of cluster?

@timcharper
Copy link
Contributor

Further, we need to confirm if this configuration will apply cgroup limitations for at least CPU

@deric
Copy link
Contributor Author

deric commented May 17, 2018

@timcharper There's no change in CPUs allocation, 2 CPUs should be enough as a default (even for larger clusters). Marathon's heap allocation is quite greedy (have a look at screenshots from MARATHON-8180). Increasing the default memory limit is no big deal. Currently it means that instead of restarting every 12 hours Marathon would be killed every 16 hours due to memory limit. If you're strongly against this change I can revert that. Marathon's memory allocation doesn't seem to be related directly to cluster size. It's more likely connected to number of heath checks or number of event subscribers.

Kafka or Elastic (from DC/OS Catalog) are deployed the same way. Moreover it reduces differences between dcos-marathon service and Marathon from DC/OS Catalog, thus testing should be easier.

Copy link
Contributor

@zen-dog zen-dog left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Though I certainly agree with the premise this is not an option. Mesos team war very rigorous about frameworks, in general, not relying on the host for Mesos libraries. This is the main reason why we have the image (this plus other dependencies that we have).

@deric
Copy link
Contributor Author

deric commented May 21, 2018

@zen-dog I'm sorry, I forgot to include libmesos-bundle. Correct me if I'm wrong, but I don't see how would this approach be different from the way that elastic and kafka are deployed. Once Marathon is ready to use V1 API we can get rid of Mesos native library dependency.

@zen-dog
Copy link
Contributor

zen-dog commented May 22, 2018

Correct me if I'm wrong, but I don't see how would this approach be different from the way that elastic and kafka are deployed

We had an internal discussion about it a while ago. it boiled down to the fact that marathon is an open-source project and our libmesos-bundle contains some proprietary Mesosphere/Mesos modules. That's why marathon docker image installs open-source Mesos.

Once Marathon is ready to use V1 API we can get rid of Mesos native library dependency.
indeed, it shouldn't be a problem anymore then.

Indeed, then we could do the switch. It would actually simplify our build pipeline quite a bit.

@deric
Copy link
Contributor Author

deric commented May 23, 2018

@zen-dog I agree, libmesos-bundle is not a good solution, especially for supporting multiple distributions (like DCOS_OSS-25). Libraries should be distributed as native packages that can handle dependencies. But this PR is not trying to solve any of those problems. If your main issue are compiled proprietary libraries, you can still create libmesos-oss-bundle which won't break anything, especially because only single OS family is supported and it doesn't seem that any other platforms would be added soon.

This PR about simplifying Marathon testing pipeline, allowing easier debugging and avoiding Marathon on Marathon crashes. Issues you mention are important, but out of scope of this PR.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants