Chronos 2.1.0 for Mesos released with revamped UI

Dec 17, 2013

Ross Allen


2 min read

Chronos, the fault-tolerant and elastic Mesos framework for managing cron-like jobs with dependencies, received a major overhaul. Over the past couple months, engineers Brenden Matthews, Harry Shoff, and Matt Redmond at Airbnb and Ross Allen at Mesosphere collaborated on fixing a lot of major and minor Chronos issues and improvements.
Faster rendering for long job lists
Most importantly, the UI can now handle displaying hundreds of jobs within a few seconds, thereby improving the rendering time by at least 10X. For your convenience, we are providing a tar archive that you can run on your Mesos cluster or on Elastic Mesos, in a few minutes. Give it a try using the instructions from our Chronos Tutorial. Please note that there is also a Marathon launch script in the bin directory that allows for deployment in seconds.
Major noticeable changes:
  • Two column layout, making advanced options hidden by default
  • Removed dependency graph button from job list per feedback from Airbnb
  • Defaulted epsilon to 30 minutes per feedback from Airbnb
  • Normalized lots of font sizes and weights to simplify styles
  • Rendered templates that required no interpolation as plain HTML, meaning the user sees something on the page faster than previously
  • Rendered initial job list with a single write to the DOM rather than one per list item. This drastically reduced DOM access with long lists and decreased rendering time.
Major implementation changes:
  • Removed all requests to Google's font API in favor of a static stylesheet pointing to the public assets. This also removed a requirejs-plugin dependency, fewer JS files.
  • Upgraded Rivets from 0.4.5 to 0.4.9 and used the JS version instead of the CoffeeScript one to save unnecessary compilation
  • Reduced re-rendering that Rivets was handling
  • Delegated events in job list instead of adding listeners to each list item. This reduces the number of listeners required by dozens or hundreds with large lists.
  • Delegated tooltips in job list instead of adding listeners to each list item. This reduced tooltip listeners from 1-per-item to 1 for the whole list.
Minor bug fixes:
  • Deselecting the last job item previously forced a re-render of the entire list, which took a long time with a large list. That no longer happens.
  • Sorting the table would not render the correct arrow, depending on where the click occurred. The arrow now always represents the current sort order.
Minor features:
  • Theme selector in the upper left. Try it out.

Ready to get started?