Releases: d2iq-archive/marathon
v1.1.0
Changes from 1.0.0 to 1.1.0
Recommended Mesos version is 0.28.0
Overview
Readiness Checks for applications
Marathon already has the concept of health checks, which periodically monitor the health of an application.
During deployments and runtime configuration updates, however, you might want a temporary monitor that waits for your application to be ready. A temporary monitor can be useful for cache-warming, JIT warming, or a migration. Marathon offers a readiness check for these situations.
Readiness checks are performed only during deployment time after a task has been launched. The deployment will wait for the readiness check to succeed, before the deployment continues. For easy integration with other tools, the result of the readiness checks is available via the deployments endpoint or the app/group listing.
We are keen to know what you think about this feature.
Support for external volumes (experimental)
Marathon applications normally lose their state when they terminate and are relaunched.
In some contexts, for instance, if your application uses MySQL, you’ll want your application to preserve its state.
You can use an external storage service, such as Amazon's Elastic Block Store (EBS), to create a persistent volume that follows your application instance.Using an external storage service allows your apps to be more fault-tolerant.
If a host fails, Marathon reschedules your app on another host, along with its associated data, without user intervention.
Please Note that you have to setup your Mesos cluster correctly in order to use this feature.
Local Volumes
In prior versions Marathon had to authenticate with Mesos in order to use local volumes.
While this is still possible, we removed this prerequisite.
Using this version it is enough to set a framework principal without providing credentials.
Fixed issues
- #3092 - Delayed applications can appear to be running
- #3369 - Constraint validation message
- #3477 - Improve ForceExpunge and restart logic
- #3519 - The default Docker network should be host
- #3552 - Editing an App: Switching between JSON and normal Editor produces a broken UX
- #3564 - Add link to Docker section for Ports
- #3574 - ResourceMatching and Constraints by not considering the volumeMatch's Reserved task when inspecting constraints
- #3579 - Resident Tasks: Flaky test: restart
- #3587 - Not specifying "network" config causes mesos to thrash
- #3597 - Upgrading applications with persistent storage
- #3612 - Marathon should validate that port names contain only letters and numbers
- #3614 - Don't allow persistent container paths containing slashes
- #3624 - Constraints are not working for updating. Respect constraints for same version.
- #3646 - Liquid Exception in docs
- #3652 - Error paths are mapped incorrectly
- #3654 - PortMapping labels are not being set
- #3655 - Apps with no volumes reported as stateful
- #3659 - JSON editor help button does not work in IE11
- #3663 - Apps created from inside a group have a double forward-slash in their ID
- #3671 - Scrolling issue with create modal
- Fixes #3648 - LaunchQueue: Do not defer TaskChanged
- Fixes #3723 - Fix validation of duplicate volume names (#3737)
- Fixes #3758 - Fix offersWantedSubjects
- Fixes #3658 - Allow Kill & Wipe for resident tasks
- Fixes #3719 - Tooltip message for external volumes is wrong
- Fixes #3724 - Don't assume external volumes status as attached by default
- Fixes #3657 - Suspended resident tasks should have a different status
- Fixes #3693 - Remove unwanted sidebar filter for scheduler upgrades
- Change - Introduce feature_flag external_volumes.
- Change - UI Introduce support for External Volumes based on feature flag
- Change - Log unknown task.
- Change - Add original CandidateImpl.java
- Change - Use life-time group watch
List of Contributors
Commits | Contributor |
---|---|
35 | Matthias Veit |
20 | Gastón Kleiman |
17 | Peter Kolloch |
15 | Matthias Eichstedt |
8 | Suzanne Scala |
4 | Aaron Bell |
2 | Joerg Schad |
2 | Tomasz Janiszewski |
3 | Alexander Weber |
2 | Tim Harper |
2 | Sakthipriyan Vairamani |
1 | Lukas Loesche |
1 | Orlando Hohmeier |
1 | James DeFelice |
1 | Philip Lombardi |
git shortlog -s -n v1.0.0-RC1..v1.1.0-RC1
Downloads
Tarball:
http://downloads.mesosphere.com/marathon/v1.1.0-RC1/marathon-1.1.0-RC1.tgz
SHA:
http://downloads.mesosphere.com/marathon/v1.1.0-RC1/marathon-1.1.0-RC1.tgz.sha256
Docker:
https://registry.hub.docker.com/u/mesosphere/marathon with tag v1.1.0-RC1
Packages are also available via the Mesosphere repositories.
See: https://mesosphere.com/blog/2014/07/17/mesosphere-package-repositories/
v1.1.0-RC2
Changes
We introduced a feature flag for external volumes. Enable this feature, if the cluster has support for external volumes.
Fixes in that release
Fixes #3648 - LaunchQueue: Do not defer TaskChanged
Fixes #3723 - Fix validation of duplicate volume names (#3737)
Fixes #3758 - Fix offersWantedSubjects
Fixes #3658 - Allow Kill & Wipe for resident tasks
Fixes #3719 - Tooltip message for external volumes is wrong
Fixes #3724 - Don't assume external volumes status as attached by default
Fixes #3657 - Suspended resident tasks should have a different status
Fixes #3693 - Remove unwanted sidebar filter for scheduler upgrades
Change - Introduce feature_flag external_volumes.
Change - UI Introduce support for External Volumes based on feature flag
Change - Log unknown task.
Change - Add original CandidateImpl.java
Change - Use life-time group watch
v1.1.0-RC1
Changes from 1.0.0 to 1.1.0
Recommended Mesos version is 0.28.0
Overview
Readiness Checks for applications
Marathon already has the concept of health checks, which periodically monitor the health of an application.
During deployments and runtime configuration updates, however, you might want a temporary monitor that waits for your application to be ready. A temporary monitor can be useful for cache-warming, JIT warming, or a migration. Marathon offers a readiness check for these situations.
Readiness checks are performed only during deployment time after a task has been launched. The deployment will wait for the readiness check to succeed, before the deployment continues. For easy integration with other tools, the result of the readiness checks is available via the deployments endpoint or the app/group listing.
We are keen to know what you think about this feature.
Support for external volumes (experimental)
Marathon applications normally lose their state when they terminate and are relaunched.
In some contexts, for instance, if your application uses MySQL, you’ll want your application to preserve its state.
You can use an external storage service, such as Amazon's Elastic Block Store (EBS), to create a persistent volume that follows your application instance.Using an external storage service allows your apps to be more fault-tolerant.
If a host fails, Marathon reschedules your app on another host, along with its associated data, without user intervention.
Please Note that you have to setup your Mesos cluster correctly in order to use this feature.
Local Volumes
In prior versions Marathon had to authenticate with Mesos in order to use local volumes.
While this is still possible, we removed this prerequisite.
Using this version it is enough to set a framework principal without providing credentials.
Fixed issues
- #3092 - Delayed applications can appear to be running
- #3369 - Constraint validation message
- #3477 - Improve ForceExpunge and restart logic
- #3519 - The default Docker network should be host
- #3552 - Editing an App: Switching between JSON and normal Editor produces a broken UX
- #3564 - Add link to Docker section for Ports
- #3574 - ResourceMatching and Constraints by not considering the volumeMatch's Reserved task when inspecting constraints
- #3579 - Resident Tasks: Flaky test: restart
- #3587 - Not specifying "network" config causes mesos to thrash
- #3597 - Upgrading applications with persistent storage
- #3612 - Marathon should validate that port names contain only letters and numbers
- #3614 - Don't allow persistent container paths containing slashes
- #3624 - Constraints are not working for updating. Respect constraints for same version.
- #3646 - Liquid Exception in docs
- #3652 - Error paths are mapped incorrectly
- #3654 - PortMapping labels are not being set
- #3655 - Apps with no volumes reported as stateful
- #3659 - JSON editor help button does not work in IE11
- #3663 - Apps created from inside a group have a double forward-slash in their ID
- #3671 - Scrolling issue with create modal
List of Contributors
Commits | Contributor |
---|---|
35 | Matthias Veit |
20 | Gastón Kleiman |
17 | Peter Kolloch |
15 | Matthias Eichstedt |
8 | Suzanne Scala |
4 | Aaron Bell |
2 | Joerg Schad |
2 | Tomasz Janiszewski |
3 | Alexander Weber |
2 | Tim Harper |
2 | Sakthipriyan Vairamani |
1 | Lukas Loesche |
1 | Orlando Hohmeier |
1 | James DeFelice |
1 | Philip Lombardi |
git shortlog -s -n v1.0.0-RC1..v1.1.0-RC1
Downloads
Tarball:
http://downloads.mesosphere.com/marathon/v1.1.0-RC1/marathon-1.1.0-RC1.tgz
SHA:
http://downloads.mesosphere.com/marathon/v1.1.0-RC1/marathon-1.1.0-RC1.tgz.sha256
Docker:
https://registry.hub.docker.com/u/mesosphere/marathon with tag v1.1.0-RC1
Packages are also available via the Mesosphere repositories.
See: https://mesosphere.com/blog/2014/07/17/mesosphere-package-repositories/
v1.0.0-RC1
Changes from 0.15.3 to 1.0.0
Recommended Mesos version is 0.28.0
Breaking Changes
New default settings for Task Launches
Marathon has a lot of settings to adjust. Our goal is, to have sensible defaults for small and medium size clusters.
We realized, that some default values are not sufficient in the field and changed them:
--launch_tokens
has changed to 100 (was 1000)--max_tasks_per_offer
has changed to 5 (was 100)--reconciliation_interval
has changed to 600000 (=10 minutes) (was 300000 (=5 minutes))
Updated Auth plugin interface
The Authentication and Authorization plugin interface was redesigned in order to support more sophisticated plugins.
Overview
Support for Persistent Storage
You can now launch tasks that use persistent volumes by specifying volumes either via the UI or the REST API. Marathon will reserve all required resources on a matching agent, and subsequently launch a task on that same agent if needed. Data within the volume will be retained even after relaunching the associated task. This release provides basic functionality which we plan to extend in the future, so use it at your own risk.
Check it out and give us feedback!
See the feature documentation for details and configuration examples.
Support for ports metadata
The v2 REST API was extended to support additional ports metadata (protocol, name, and labels) through the
portDefinition
application field. Marathon will pass this new information to Mesos, who will in turn make it
available for service discovery purposes.
Note: the portDefinitions
array deprecates the ports
array.
Support for HTTP based plugin extensions
Plugins can now implement HTTP endpoints.
Added a leaderDuration metric
The metrics include now a gauge that measures the time elapsed since the last leader election happened. This is helpful to diagnose stability problems and how often leader election happens.
Better error messages
API error messages are now more consistent and easier to understand for both humans and computers.
Lots of documentation updates
Improved Task Kill behavior in deployments by performing kills in batches
When stopping/restarting an application, Marathon will now perform the kills in batches, in order to avoid overwhelming
Mesos. The batch size and frequency can be controlled via internal configuration parameters.
Support the TASK_KILLING
state available in Mesos 0.28
It is possible to make Marathon let Mesos use the TASK_KILLING
state introduced in Mesos 0.28 using the
--enable_features task_killing
flag. Marathon doesn't use this task state yet.
Web UI
The Web UI for Marathon sees a number of improvements in this version as well.
Applications and Search
- improved global search with better ranking (fuzzy matching)
- groups are now shown as part of search results too
- application list supports for browsing empty groups
- create empty groups directly from the UI
- a new sidebar filter to match apps with attached volumes
Create/Edit form improvements
- redesigned form with improved usability
- completely new JSON editor
- create resident tasks with persistent local volumes from the UI
- simplify port management
For the full set of changes, please refer to the Marathon UI release pages.
Fixed issues
- #929 - Allow tcp,udp ports in portMappings
- #2751 - Commit suicide on ZK exceptions
- #3091 - App updates hanging on downscales
- #3169 - Possible to start app with negative resources
- #3241 - Serverside validation messages are inconsistent
- #3251 - Tried to kill an existing app, said it doesn't exist even though it does
- #3338 - Path in health checks validation failure results is broken
- #3367 - Relative paths for dependencies not working anymore
- #3377 - Marathon should remove the FrameworkId for special Mesos errors
- #3385 - Creating an empty group using an existing app ID should return 409
- #3402 - Race conditions in HttpEventActor
- #3423 - Report kills due to failed healthcheck.
- #3439 - Relative paths in dependencies should be resolvable.
List of Contributors
Commits | Contributor |
---|---|
101 | Matthias Veit |
60 | Matthias Eichstedt |
54 | Peter Kolloch |
43 | Gastón Kleiman |
11 | sascala |
11 | Alexander Weber |
5 | Pierluigi Cau |
5 | Suzanne Scala |
3 | Aaron Bell |
3 | Sunil Shah |
3 | alenkacz |
3 | Joerg Schad |
2 | Isabel Jimenez |
2 | Tomasz Janiszewski |
2 | Pradeep Sekar |
2 | philipnrmn |
2 | jlamillan |
2 | Dr. Stefan Schimanski |
2 | Timo Reimann |
2 | Lee Munroe |
1 | pierrecdn |
1 | Leonardo Trabuco |
2 | Lukas Loesche |
1 | Peter Kelley |
1 | Brian Antonelli |
1 | Philip Norman |
1 | Philipp Hinrichsen |
1 | Kiril Nesenko |
1 | Timothée GERMAIN |
1 | Zhou Weitao |
Generated by git shortlog -s -n v0.15.3..v1.0.0-RC1
for the Marathon repository
Downloads
Tarball:
http://downloads.mesosphere.com/marathon/v1.0.0-RC1/marathon-1.0.0-RC1.tgz
SHA:
http://downloads.mesosphere.com/marathon/v1.0.0-RC1/marathon-v1.0.0-RC1.tgz.sha256
Docker:
https://registry.hub.docker.com/u/mesosphere/marathon with tag v1.0.0-RC1
Packages are also available via the Mesosphere repositories.
See: https://mesosphere.com/blog/2014/07/17/mesosphere-package-repositories/
v0.10.2-RC8
v0.15.3
Changes from 0.15.2 to 0.15.3
This is a bug fix release.
Fixed issues
- #3192 - Adapt default Mem/CPU settings
- #3251 - Tried to kill an existing app, said it doesn't exist even though it does
Changelog from Marathon 0.15.1 to 0.15.2: v0.15.2...v0.15.3
Please see the release notes of v0.15.0 for a complete list of the changes in v0.15.0.
Downloads
Tarball:
http://downloads.mesosphere.com/marathon/v0.15.3/marathon-0.15.3.tgz
SHA:
http://downloads.mesosphere.com/marathon/v0.15.3/marathon-0.15.3.tgz.sha256
Docker:
https://registry.hub.docker.com/u/mesosphere/marathon with tag v0.15.3
Packages are also available via the Mesosphere repositories.
See: https://mesosphere.com/blog/2014/07/17/mesosphere-package-repositories/
v0.15.2
Changes from 0.15.1 to 0.15.2
This release includes fixes for two bugs introduced in 0.15.0.
Fixed issues
- #3172 - "Apply" button is broken (sending both uris and fetch)
- #3242 - Treat "value" attribute in server-side validation errors as general error
Changelog
Changelog from Marathon 0.15.1 to 0.15.2: v0.15.1...v0.15.2
Please see the release notes of v0.15.0 for a complete list of the changes in v0.15.0.
Downloads
Tarball:
http://downloads.mesosphere.com/marathon/v0.15.2/marathon-0.15.2.tgz
SHA:
http://downloads.mesosphere.com/marathon/v0.15.2/marathon-0.15.2.tgz.sha256
Docker:
https://registry.hub.docker.com/u/mesosphere/marathon with tag v0.15.2
Packages are also available via the Mesosphere repositories.
See: https://mesosphere.com/blog/2014/07/17/mesosphere-package-repositories/
v0.15.1
Changes from 0.15.0 to 0.15.1
This release includes fixes for several bugs introduced in 0.15.0.
Fixed issues
- #3139 - Marathon 0.15.0 forces redeploy of app all the time
- #3054 - Empty application attributes are accidentally submited by the UI
- #3141 - Jetty throws exception during load
- #3164 - Marathon 0.15 error on bad application id is really bad
- #3160 - Show 400 error for Constraints field
- #3140 - breaking API change on portIndex
Changelog
Changelog from Marathon 0.15.0 to 0.15.1: v0.15.0...v0.15.1
Please see the release notes of v0.15.0 for a complete list of the changes in v0.15.0.
Downloads
Tarball:
http://downloads.mesosphere.com/marathon/v0.15.1/marathon-0.15.1.tgz
SHA:
http://downloads.mesosphere.com/marathon/v0.15.1/marathon-0.15.1.tgz.sha256
Docker:
https://registry.hub.docker.com/u/mesosphere/marathon with tag v0.15.1
Packages are also available via the Mesosphere repositories.
See: https://mesosphere.com/blog/2014/07/17/mesosphere-package-repositories/
v0.15.1-RC1
Fixed Issues
- #3139 - Marathon 0.15.0 forces redeploy of app all the time
- #3054 - Empty application attributes are accidentally submited by the UI
- #3141 - Jetty throws exception during load
Changelog
Changelog from Marathon 0.15.0 to 0.15.1-RC1: v0.15.0...v0.15.1-RC1
Please see the release notes of v0.15.0 for a complete list of the changes in v0.15.0.
v0.15.0
Changes from 0.14.0 to 0.15.0
Recommended Mesos version is 0.26.0
We tested this release against Mesos version 0.26.0. Thus, this is the recommended Mesos version for this release.
Overview
Integration of Mesos Fetcher Cache
The v2 REST API was extended to support the Mesos fetcher cache. This allows users to configure a list of resource URIs that will be copied into the task sandbox prior to running the task, from either a local or external location. For details on the fetcher cache's capabilities, please see the fetcher cache documentation.
Migration from Marathon version 0.7 or lower removed
It is no longer possible to migrate from Marathon versions prior to version 0.8. If you want to upgrade old versions we recommend to do a step by step migration using the latest stable version following your installed version and so on.
haproxy-marathon-bridge is deprecated and removed from the bin directory
In recent versions we published a simple shell script to update haproxy configuration. The script can still be found in the examples directory. marathon-lb is the successor of this script.
Under the Hood
There have been a lot of interesting changes which we only summarize for now. In the next days, we will follow up with extend documentation about them.
New metrics
We added a bunch of important metrics and documentation on the /metrics
endpoint and fixed measuring some existing metrics.
Limit concurrent status update processing
We now limit the maximum number of concurrently processed task status updates. If the limit is reached, further status updates are queued. The queue is limited, too, so that at some point new status updates are rejected and not acknowledged. Eventually, Mesos will resend the status updates that we didn't process.
Task state tracking redesign
We have rewritten the component that holds the task states: the TaskTracker
. We removed the old implementation that used concurrent data structures, and now use an actor based implementation. The new implementation is easier to reason about and allows explicit concurrency management as described in the last section.
Explicit queuing of application configuration updates
Marathon has been serializing updates to the app configuration for a while. We made queuing outstanding configuration requests explicit and also limited the maximum size of the queue.
Optimized /v2/tasks (TXT)
Since some service discovery solutions poll this end-point, performance is important. We improved request rates by about 30%.
Changes to the threading model
Prior to this release, Marathon would create new threads when needed. Now we switched to a model where we have some fixed size thread pools and thread pools that will only grow if too many threads have become blocked. This should reduce the number of threads under load.
Model validation
Marathon is now utilizing Accord, a modern approach to model validation which will hopefully leads to better error messages in the future.
Marathon UI
A number of very convenient features and improvements made it into this release.
Perform actions directly from the Applications list
A new contextual dropdown menu in the Applications list gives access to the most useful actions (scale, destroy, suspend, etc.) without having to enter an application's detail view. Additionally, it is now possible to perform scale and delete operations on entire Groups.
Better feedback
The feedback dialogs have been completely redesigned to be clearer and more useful, adding three possible color-coded severity levels: info
, warning
and error
. In addition, the action button labels have been rephrased for improved usability. Buttons that may lead to dangerous actions (such as "force scale") are also not preselected by default anymore.
Application Health
The health status breakdown is now also shown in the application details page.
...and much more
For the complete set of changes, please refer to the Marathon UI CHANGELOG
Fixed issues
- #2918 - Incorrect Step-wise timers in TaskStatusUpdateProcessorImpl
- #2919 - StateMetrics.timed(Read/Write) incorrectly used for methods returning Futures
- #2951 - Incorrect Constraint lead to an application exception, but should give an error response
- #2957 - Unbounded ThreadPool is used for too many operations
- #2982 - Double offerLeadership invocation after driver failure
- #2989 - Report task count metrics
- #2868 - Marathon sometimes tries (and fails) to assign duplicated service ports
- #2938 - Don't log giant port lists
- #2855 - Create app failed when there're multiple same word in the app id
- #3051 - Can't add dynamic ports using PUT
- #3047 - Event callbacks hold on to unresponsive hosts
- #2892 - Version in task detail component shouldn't be localised
- #2893 - App page component should display the right number of tasks
- #2949 - AjaxWrapper does't handle TypeError correctly
- #3065 - Prevent ctrl-c keyboard shortcut from showing the Create modal dialog
- #3054 - Empty - non set- application attributes are accidentaly submited by the UI
- #3064 - Labels dropdown menu not showing up
- #3063 - After scaling a healthy app to 0, it appears to be Infinity% overcapacity
List of Contributors
Commits | Contributor |
---|---|
29 | Peter Kolloch |
14 | Gastón Kleiman |
9 | Matthias Eichstedt |
6 | Matthias Veit |
5 | Alexander Weber |
5 | Pierluigi Cau |
2 | Tomasz Janiszewski |
2 | Tobi Knaup |
1 | Suzanne Scala |
1 | avinash sridharan |
1 | jtrenholm |
1 | Adam Medziński |
1 | sascala |
1 | Brenden Matthews |
1 | Christopher M Luciano |
1 | David Bayendor |
1 | Justin Good |
1 | Mateusz Gajewski |
1 | Philip Norman |
1 | Philipp Hinrichsen |
Generated by git shortlog -s -n --no-merges v0.14.1..v0.15.0
for the Marathon repository
Downloads
Tarball:
http://downloads.mesosphere.com/marathon/v0.15.0/marathon-0.15.0.tgz
SHA:
http://downloads.mesosphere.com/marathon/v0.15.0/marathon-0.15.0.tgz.sha256
Docker:
https://registry.hub.docker.com/u/mesosphere/marathon with tag v0.15.0
Packages are also available via the Mesosphere repositories.
See: https://mesosphere.com/blog/2014/07/17/mesosphere-package-repositories/