Aurora 0.21.0
--------------------------------------------------------------------------------

Aurora 0.20.0
--------------------------------------------------------------------------------
## Bug
    * [AURORA-1963] - Structdump endpoint shows thrift metadata
    * [AURORA-1965] - LaunchException needs transient task timeout for reschedule
    * [AURORA-1956] - test_du_diskcollector fails on macOS
    * [AURORA-1233] - primary_port warning does not appear to respect portmap
    * [AURORA-1959] - Missing Ops prevent upgrade from 0.19 to master

## Story
    * [AURORA-1380] - Upgrade to guice 4.0
    * [AURORA-1249] - Upgrade 3rdparty python dependencies
    * [AURORA-1412] - Conflicting `slow_query_log_threshold` arguments for aurora-scheduler
    * [AURORA-1471] - Reconsider use of shiro-guice

## Task
    * [AURORA-1964] - Move Vagrant setup from Trusty to Xenial
    * [AURORA-1901] - Expose thrift workload stats on pruneTasks() invocations
    * [AURORA-1707] - Remove deprecated resource fields in TaskConfig and ResourceAggregate
    * [AURORA-1974] - Update sample Docker jobs for Vagrant tutorial


Aurora 0.19.0
--------------------------------------------------------------------------------
## Bug
    * [AURORA-1953] - Scheduler livelock during startup
    * [AURORA-1944] - Aurora is unable to elect leader after losing ZK for an extended period of time
    * [AURORA-1950] - Exceptions in LogStorage.prepare() cause scheduler die and stay in DEAD state
    * [AURORA-1955] - thermos should exit on irrecoverable errors to avoid zombies
    * [AURORA-1943] - PreemptionVictimFilter does not handle varied ResourceTypes
    * [AURORA-1939] - Thermos landing (host) page reports incorrect CPU rates when it is busy
    * [AURORA-1945] - Rescinds received but not processed in time before offer accept

## Story
    * [AURORA-319] - Allow job environments other than prod, devel, test or staging<number>
    * [AURORA-1947] - Improve in-process ZooKeeper support for local development

## Sub-task
    * [AURORA-1773] - Asynchronously call webhook endpoint not to block EventBus

## Task
    * [AURORA-1951] - UI build broken in gradle 4.2
    * [AURORA-1937] - Add metrics for status updates before switching to V1 Mesos Driver implementaion
    * [AURORA-1940] - aurora job restart request should be retryable
    * [AURORA-1934] - Add a whitelist for TaskStateChange events in Aurora Scheduler WebHooks
    * [AURORA-1931] - Configurable wait period for graceful shutdown
    * [AURORA-1669] - Kill twitter/commons ZK libs when Curator replacements are vetted
    * [AURORA-1897] - Remove task length restrictions.


Aurora 0.18.0
--------------------------------------------------------------------------------
## Bug
    * [AURORA-1913] - Aurora Client Job Update Diff output is erroneous
    * [AURORA-1850] - Raw StatusResult passed to the scheduler when tasks are healthy
    * [AURORA-1911] - HTTP Scheduler Driver does not reliably re subscribe
    * [AURORA-1912] - DbSnapShot may remove enum values
    * [AURORA-1933] - Scheduler can process rescind before offer
    * [AURORA-1909] - Thermos Health Check fails for MesosContainerizer if `--nosetuid-health-checks` is set
    * [AURORA-1914] - Unable to specify multiple volumes per task.
    * [AURORA-1910] - framework_registered metric isn't reset when scheduler disconnects

## Epic
    * [AURORA-1920] - Add pluggable scheduling logic to Aurora
    * [AURORA-1680] - Aurora 0.16.0 deprecations

## Story
    * [AURORA-1923] - Aurora client should not automatically retry non-idempotent operations
    * [AURORA-1922] - Expose stats on the number of jobs stored in MemCronJobStore
    * [AURORA-1907] - Thermos unresponsive on hosts with many active task
    * [AURORA-1915] - Add automatic browser tab open feature for aurora update start

## Task
    * [AURORA-1882] - Add support for Mesos ContainerLaunchInfo
    * [AURORA-1870] - Add finer grained timings to the Snapshot process
    * [AURORA-1904] - Support Mesos Maintenance
    * [AURORA-1905] - Set "webui_url" field of FrameworkInfo
    * [AURORA-1929] - Improve explicit task history pruning.
    * [AURORA-1925] - Easily copy files to/from an aurora task instance
    * [AURORA-1928] - Aurora should prioritize adding instances over updating instances during an update
    * [AURORA-1860] - Fix bug in scheduler driver disconnect stats
    * [AURORA-1888] - Create Driver implementation around V1Mesos
    * [AURORA-1887] - Create Driver implementation around V0Mesos.
    * [AURORA-1921] - Create proposal for which components should be pluggable


Aurora 0.17.0
--------------------------------------------------------------------------------
## Bug
    * [AURORA-1782] - Thermos Executor is not handling apostrophe gracefully
    * [AURORA-1802] - AttributeAggregate slows down scheduling of jobs with many instances
    * [AURORA-1801] - TaskObserver thread stops refreshing after filesystem race condition
    * [AURORA-1840] - Issue with Curator-backed discovery under heavy load
    * [AURORA-1809] - Investigate flaky test TestRunnerKillProcessGroup.test_pg_is_killed
    * [AURORA-1780] - Offers with unknown resources types to Aurora crash the scheduler
    * [AURORA-1783] - Probable http connection leak
    * [AURORA-1879] - /pendingTasks endpoint shows 500 HTTP Error when there are multiple pending tasks with the same key
    * [AURORA-1795] - Internal server error in scheduler Thrift API on missing Content-Type
    * [AURORA-1788] - vagrant up does not properly configure network adapters
    * [AURORA-1789] - Incorrect --mesos_containerizer_path value results in thermos failure loop
    * [AURORA-1798] - resolv.conf is not copied when using the Mesos containerizer with a Docker image
    * [AURORA-1541] - Observer logs are noisy
    * [AURORA-1793] - Revert Commit ca683 which is not backwards compatible
    * [AURORA-1784] - e2e tests fail in http_example_unified_appc due to slow image copies
    * [AURORA-1684] - Cron tasks are sanitized multiple times (once when being created via the API, and again when actually being triggered)
    * [AURORA-1808] - Thermos executor should send SIGTERM to daemonized processes 
    * [AURORA-1792] - Executor does not log full task information.
    * [AURORA-1791] - Commit ca683 is not backwards compatible.
    * [AURORA-1875] - The thriftw compatibility thrift binary check is too loose

## Epic
    * [AURORA-894] - Server updater should watch healthy instances

## Story
    * [AURORA-1504] - aurora job inspect should have a --write-json option
    * [AURORA-1847] - Eliminate sequential scan in MemTaskStore.getJobKeys()
    * [AURORA-1867] - Consider reserving for multiple tasks per preemption round
    * [AURORA-1868] - Evaluate multiple preemption proposals per round
    * [AURORA-1815] - Fix checksums for packages on bintray
    * [AURORA-1014] - Client binding_helper to resolve docker label to a stable ID at create
    * [AURORA-1794] - Scheduler fails to start if -enable_revocable_ram is toggled
    * [AURORA-655] - Order job update events and instance events by ID rather than timestamp
    * [AURORA-1826] - Expose Thrift server request workload stats

## Task
    * [AURORA-1762] - /pendingtasks endpoint should show reason tasks are pending
    * [AURORA-1785] - Populate curator latches with scheduler information
    * [AURORA-1834] - Expose stats on undelivered event bus events
    * [AURORA-1828] - Expose stats on the number of offers evaluated before a task is assigned
    * [AURORA-1857] - Expose timing stats on PendingTaskProcessor runs
    * [AURORA-1851] - Expose stats on JobUpdateAction transitions
    * [AURORA-1859] - Expose stats on statically banned offers
    * [AURORA-1876] - Expose stats on scheduler rate limiter
    * [AURORA-1874] - Expose stats on SlotSizeCounter runs
    * [AURORA-1838] - Expose stats on ZooKeeper connection state
    * [AURORA-1813] - Bump Mesos support to 1.1.0
    * [AURORA-1820] - Reduce storage write lock contention by adopting Double-Checked Locking pattern in TimedOutTaskHandler
    * [AURORA-1835] - Expose finer grained offer veto stats
    * [AURORA-1878] - Increased executor logs can lead to task's running out of disk space
    * [AURORA-1821] - Bump Guava to 20
    * [AURORA-1856] - Expose stats on deleted job updates in JobUpdateHistoryPruner
    * [AURORA-1861] - Remove duplicate Snapshot fields for DB stores
    * [AURORA-1831] - Tweak logging pattern to improve performance
    * [AURORA-1224] - Add a new "min_consecutive_health_checks" setting in .aurora config
    * [AURORA-1225] - Modify executor state transition logic to rely on health checks (if enabled)
    * [AURORA-1881] - Capture stderr from output for shell health check failures.


Aurora 0.16.0
--------------------------------------------------------------------------------
## Bug
    * [AURORA-1739] - createJob thrift api for golang consistenly failing with empty CronSchedule
    * [AURORA-1745] - Aurora master no longer populates `ExecutorInfo.source`
    * [AURORA-1715] - Dead links on website
    * [AURORA-1753] - Thermos does not kill processes that setuid to another user. 
    * [AURORA-1719] - Aurora warns about every terminated executor
    * [AURORA-1775] - Updating pants to 1.1.0-rc7 breaks the make-pycharm-virtualenv script
    * [AURORA-1741] - Fix pystachio binding bug introduced by AURORA-1710
    * [AURORA-1724] - Thermos runner fails if log rotation is enabled
    * [AURORA-1761] - Sandbox taskfs setup fails (groupadd error)
    * [AURORA-1061] - Scheduler cluster deadlock during leader election if zookeeper connectivity is interrupted
    * [AURORA-1729] - Unclean curator teardown when scheduler fails a log write.
    * [AURORA-1620] - Client sdists cannot be converted to a wheel
    * [AURORA-327] - Aurora shutdown blocks when attempting to abdicate leadership and zk ensemble is down
    * [AURORA-1727] - The thrift compiler fails to bootstrap under modern gcc
    * [AURORA-1752] - uncaught exception in executor's process_collector_psutil()
    * [AURORA-1728] - e2e tests require entering vagrant user's password 3x in fresh environments
    * [AURORA-1755] - Mounts created by executor when using filesystem isolation are leaking to the host filesystem's mtab
    * [AURORA-1777] - aurora_admin client unable to drain hosts

## Epic
    * [AURORA-1679] - Aurora 0.14.0 deprecations
    * [AURORA-1634] - Support launching tasks using the Mesos unified containerizer

## Story
    * [AURORA-1661] - Scheduler leader failed to re-announce itself after ZK name was changed
    * [AURORA-1640] - Write enduser documentation for the Unified Containerizer support
    * [AURORA-1656] - Document tier concept

## Sub-task
    * [AURORA-1772] - Do not resend TaskStateChange events every time a scheduler starts

## Task
    * [AURORA-1711] - Allow client to store metadata on Update entity
    * [AURORA-1743] - Support Thrift Binary Protocol 
    * [AURORA-1223] - Modify scheduler updater to not use "watch_secs" for health-check enabled jobs
    * [AURORA-1740] - Upgrade to Mesos 1.0.0
    * [AURORA-1690] - Allow for isolating the executor's filesystem from the task's
    * [AURORA-1222] - Modify stats and SLA metrics to properly account for STARTING
    * [AURORA-1764] - Modify getJobUpdateDetails to accept a JobUpdateQuery
    * [AURORA-1688] - Change framework_name default value from 'TwitterScheduler' to 'aurora'
    * [AURORA-1434] - Update Aurora Tutorial
    * [AURORA-1602] - Add aurora_admin command to trigger reconciliation 
    * [AURORA-1754] - Containerizer documentation uses deprecated syntax in the example code 
    * [AURORA-1221] - Modify task state machine to treat STARTING as a new active state
    * [AURORA-1681] - Remove deprecated --restart-threshold option from 'aurora job restart'
    * [AURORA-1710] - Make 'tier' required and remove support for 'production' flag in Job configuration
    * [AURORA-1721] - Support user initiated rollback 
    * [AURORA-1736] - Display reservations and persistent volumes in /offers debug http endpoint


Aurora 0.15.0
--------------------------------------------------------------------------------
## Task
    * [AURORA-1725] - Expose tier configurations as a debug page
    * [AURORA-1458] - Add tier into the UI "show config" summary
    * [AURORA-1720] - Broken link in http://aurora.apache.org/

Aurora 0.14.0
--------------------------------------------------------------------------------
## Bug
    * [AURORA-1660] - Download page must not link to snapshots / nightly builds
    * [AURORA-1668] - http://aurora.apache.org/documentation/latest/ is mainly broken for 0.13.0
    * [AURORA-1588] - Unnecessary HealthCheckConfig endpoint warning
    * [AURORA-1568] - rpm builder does not handle snapshot versions
    * [AURORA-1709] - After rb/46835 job key's role is required to exist as a user
    * [AURORA-1665] - DbCronJobStore is missing @Timed annotations
    * [AURORA-1687] - Nightly packaging builds broken by ppa:openjdk-r java packaging shift.
    * [AURORA-1673] - Links going out from http://aurora.apache.org/documentation/0.13.0/ 404
    * [AURORA-1682] - https://builds.apache.org/job/aurora-packaging-nightly is broken

## Story
    * [AURORA-572] - Provide control over listening network interfaces/addresses
    * [AURORA-300] - changelog generation should document potentially breaking API changes
    * [AURORA-1145] - Remove --no-fast from python test invocation
    * [AURORA-1658] - Aurora does not allow to configure the Mesos offer filter duration
    * [AURORA-1098] - end-to-end test should use docker

## Task
    * [AURORA-1683] - Implement an optional webhook parameter to scheduler to POST TaskStateChange events
    * [AURORA-1616] - Support for preemptible tasks via tier configuration
    * [AURORA-1667] - Sort out vagrant box versioning
    * [AURORA-1636] - Update Scheduler to accept tasks with images
    * [AURORA-1637] - Update Executor to support launching tasks with images.
    * [AURORA-1451] - Refer to "Mesos Agent" instead of "Mesos Slave" in documentation
    * [AURORA-1450] - Refer to "Mesos Agent" instead of "Mesos Slave" in UI
    * [AURORA-1672] - Duplicate task events displayed in UI
    * [AURORA-1468] - Replace org.apache.aurora.commons.zookeeper with a Apache Curator
    * [AURORA-945] - Advertise Aurora as "Aurora" to Mesos master.
    * [AURORA-1638] - Update MesosTaskFactory to send tasks with images configured to use the unified containerizer
    * [AURORA-1639] - Update client to allow configuring tasks with images.
    * [AURORA-1449] - Rename /slaves endpoint to /agents
    * [AURORA-1631] - Consider removing --restart-threshold from "aurora job restart"
    * [AURORA-1624] - Thrift API for retrieving scheduler tier configuration


Aurora 0.13.0
--------------------------------------------------------------------------------
## Bug
    * [AURORA-1615] - Preemptor crashes scheduler during host maintenance
    * [AURORA-1604] - Identity.role is still used in the UI leading to duplicate instances on job page
    * [AURORA-1630] - Updater is using non-logging executor and does not kill scheduler on error
    * [AURORA-1614] - Failed sandbox initialization can cause tasks to go LOST
    * [AURORA-1625] - ConcurrentModificationException in TaskHistoryPruner with DbTaskStore
    * [AURORA-1650] - I* entity objects have incorrect isSet* methods for collection types
    * [AURORA-1628] - ShiroAuthorizingParamInterceptor failure messages are not descriptive
    * [AURORA-1642] - Thermos runner finalization is broken
    * [AURORA-1641] - Shell health checker is running as root
    * [AURORA-1647] - The install docs are inaccurate.
    * [AURORA-1633] - Cannot pass in environment variables into shell health check command

## Epic
    * [AURORA-1424] - Improve build process
    * [AURORA-1343] - Aurora support for Mesos revocable offers

## Story
    * [AURORA-1653] - Add a way to get the running version of aurora in the UI
    * [AURORA-1643] - Support authentication between announcer and ZK
    * [AURORA-1627] - Implement DB snapshotting
    * [AURORA-1114] - Upgrade virtualenv to fix SSL incompatibility on certain systems
    * [AURORA-1629] - Populate DiscoveryInfo in TaskInfo/ExecutorInfo
    * [AURORA-1611] - Add support for IP addresses instead of just hostnames in Announcer
    * [AURORA-1258] - Improve procedure for adding instances to a job
    * [AURORA-604] - use scaled aurora logo rather than scaling with browser
    * [AURORA-1626] - Update Thrift binary to point at new repository location for builds
    * [AURORA-1652] - /maintenance endpoint can result in 500
    * [AURORA-1648] - Use of `dbScript` field and schema changes can cause crashes
    * [AURORA-1598] - Remove fields made redundant by JobKey fields
    * [AURORA-1262] - Improve documentation of at-least-one semantics for instance ID

## Task
    * [AURORA-1493] - create ELB-friendly endpoint to detect leading scheduler
    * [AURORA-1619] - Generate documentation for command line args for all Aurora binaries
    * [AURORA-1324] - Reevaluate the effectiveness of DBStorage.bulkLoad()
    * [AURORA-1622] - Add ability to pass in environment variables into shell health checker
    * [AURORA-1613] - Publish documentation for 0.12.0
    * [AURORA-1591] - Remove TaskQuery argument in killTasks RPC.
    * [AURORA-1585] - Aurora 0.13.0 deprecations
    * [AURORA-1645] - Deschedule cron should not fail if the job is not scheduled
    * [AURORA-1612] - Publish RPMs and debs for 0.12.0
    * [AURORA-1004] - Document setQuota
    * [AURORA-1586] - Aurora 0.13.0 backwards incompatible changes
    * [AURORA-1606] - Remove deprecated executor flag announcer-enable
    * [AURORA-1617] - Install instructions should point out the critical step of matching mesos slave --work_dir to the observer --mesos-root
    * [AURORA-734] - document the behavior of finalization_wait in thermos
    * [AURORA-1605] - Update recovery docs to reflect changes
    * [AURORA-1635] - Update Scheduler storage to support storing images
    * [AURORA-1581] - Consider removing unused client updater RPCs
    * [AURORA-1068] - Document task throttling algorithm
    * [AURORA-1592] - Remove unscoped shiro permissions when TaskQuery is gone from killTasks
    * [AURORA-1595] - Remove AddInstancesConfig in addInstances RPC
    * [AURORA-1558] - Aurora 0.12.0 release candidate
    * [AURORA-955] - more minimal http url to determine aurora leader
    * [AURORA-869] - Document all available scheduler command line options


Aurora 0.12.0
--------------------------------------------------------------------------------
## Bug
    * [AURORA-1574] - ServerSetImplTest occasionally results in an exception.
    * [AURORA-1573] - SchedulingBenchmarks result in exception.
    * [AURORA-1385] - Traceback rendering cron jobs without an upcoming next run 
    * [AURORA-492] - Python thrift files are being generated with thrift 0.5.0
    * [AURORA-1587] - scheduler fails in a hard to decipher way when -native_log_file_path is not set
    * [AURORA-1570] - TaskObserverTest::test_run_loop is flaky
    * [AURORA-1582] - Task History Pruning attempts can fail silently
    * [AURORA-1175] - Two python_binary targets called 'thermos' can cause build failure
    * [AURORA-1580] - java.util.NoSuchElementException from Tasks.getLatestEvent with DbTaskStore
    * [AURORA-1593] - PubSubEventModule fails to dispatch events to TaskHistoryPruner on startup
    * [AURORA-1571] - The getJobUpdateDiff RPC does not populate taskLinks
    * [AURORA-1603] - Scheduler fails to start after rollback
    * [AURORA-1601] - Add a flag to disable the HTTP redirect to the leader
    * [AURORA-1596] - Invalid connection error from MyBatis.
    * [AURORA-1610] - JobConfiguration.identity needs backfill

## Story
    * [AURORA-1563] - Remove deprecated endpoint, expected_response and expected_response_code from HealthCheckConfig
    * [AURORA-1472] - TaskThrottle should have a jitter
    * [AURORA-852] - create architectural diagram with description of components
    * [AURORA-1552] - Perform explicit config validation in the executor when configuring health checker
    * [AURORA-1589] - Dupe debs are showing up
    * [AURORA-1413] - Wrong help indications of usable constants for the aurora-scheduler's -vlog argument
    * [AURORA-1548] - Add option to forward running process logs to stdout/stderr
    * [AURORA-1575] - Allow cluster administrators to apply global default Docker parameters.
    * [AURORA-1540] - Thermos should pass environment variables set for container to process being monitored
    * [AURORA-1109] - Add mesos role  feature
    * [AURORA-1569] - Support custom serverset path for announcements
    * [AURORA-1052] - Populate Labels in TaskConfig
    * [AURORA-855] - Add documentation on how to build the client

## Task
    * [AURORA-1560] - Aurora 0.12.0 backwards incompatible changes
    * [AURORA-1483] - Add a getting started guide using released packages
    * [AURORA-1576] - Allow for plugging in cli-configurable filters that are invoked post shiro filters.
    * [AURORA-1425] - Speed up iteration speed when developing UI code
    * [AURORA-1583] - Consider changing killTasks RPC to be job-scoped
    * [AURORA-663] - Update website to include releases
    * [AURORA-294] - Update Aurora homepage to highlight "features"
    * [AURORA-1559] - Aurora 0.12.0 deprecations
    * [AURORA-1565] - Upgrade mesos dependency to 0.25.0
    * [AURORA-1393] - Publish nightly and release packages for major operating systems
    * [AURORA-1566] - Upgrade to Gradle 2.10
    * [AURORA-876] - cache python dependencies in 3rdparty on svn.a.o
    * [AURORA-1423] - Upgrade to h2 1.4.188


Aurora 0.11.0
--------------------------------------------------------------------------------
## Bug
    * [AURORA-1535] - Dead links in documentation
    * [AURORA-1478] - Mirror redirector on website doesn't point to correct file
    * [AURORA-1304] - vagrant devcluster should only start one instance of aurora
    * [AURORA-1549] - Updater kills instances with scoped update
    * [AURORA-1272] - Link on "Deploying Aurora Scheduler" page is 404
    * [AURORA-870] - Documentation can't link to code
    * [AURORA-1539] - Package build script leaves root-owned files
    * [AURORA-1544] - Packaging scripts broken for 0.10.0
    * [AURORA-1507] - Instance collision stack trace in updater
    * [AURORA-1545] - rpm build fails compiling thrift
    * [AURORA-1550] - Unable to run tests from Intellij
    * [AURORA-954] - Change pants.ini to look in somewhere more descriptive than third_party
    * [AURORA-1506] - Job updater does not handle DELETED tasks properly
    * [AURORA-547] - Python tests produce a pex?
    * [AURORA-1381] - Remove duplicate thermos_observer
    * [AURORA-1538] - Vagrant build is broken on master
    * [AURORA-1512] - Aurora rpm missing std output switch 
    * [AURORA-1530] - client tests fails when run via Test client code: ./pants test src/test/python/apache/aurora/client/cli:all

## Story
    * [AURORA-1532] - Python check style should use the built-in pants checkstyle
    * [AURORA-1551] - Add support for non-HTTP based health checks
    * [AURORA-1562] - Create separate HttpEndpointConfig and ShellEndpointConfig structs
    * [AURORA-849] - modify release script to publish versioned docs to apache website 

## Task
    * [AURORA-814] - Migrate client off of deprecated SessionKey APIs
    * [AURORA-785] - Remove client-side update code
    * [AURORA-850] - Ability to tag project documentation as they appear on website
    * [AURORA-726] - Table of contents anchors do not work in docs
    * [AURORA-95] - Executor should auto-roll stderr/stdout files
    * [AURORA-1253] - Warn when JobUpdateSettings.maxWaitToInstanceRunningMs is set
    * [AURORA-1553] - Deprecate and remove ServerInfo.thriftAPIVersion
    * [AURORA-1252] - Deprecate UpdateConfig restart_threshold setting
    * [AURORA-1557] - Document mesos.hostname in Thermos reference
    * [AURORA-1547] - TaskReconciler should set TaskStatus.slave_id field
    * [AURORA-687] - Aurora should set FrameworkInfo.principal
    * [AURORA-1554] - Update pants to 0.0.63
    * [AURORA-1527] - 0.11.0 backwards incompatible changes
    * [AURORA-879] - Improve ordering of elements in "job status" output
    * [AURORA-1410] - Publish RPM and deb for 0.9.0
    * [AURORA-1543] - Upgrade to Mesos 0.24
    * [AURORA-1526] - 0.11.0 deprecations


Aurora 0.10.0
--------------------------------------------------------------------------------
## Bug
    * [AURORA-1476] - TaskConfig dedupe routine does not handle null fields properly
    * [AURORA-1479] - Observer chroot browser guesses content-encoding and content-type of files
    * [AURORA-1406] - End-to-end test stalls at SSH prompt
    * [AURORA-1282] - twitter.common.stats.Stats warns about exported metric names
    * [AURORA-1533] - Transient connection errors can leave client in irrecoverable state
    * [AURORA-1459] - DelayExecutor is flaky within scheduling loop
    * [AURORA-1435] - Scheduling loop terminates on the first mismatch
    * [AURORA-1489] - README.md does not include instructions on filing bugs
    * [AURORA-1529] - Wrong command to `Build a client executable`
    * [AURORA-1407] - IllegalArgumentException in end-to-end tests
    * [AURORA-1510] - ConcurrentModificationException in PreemptorService
    * [AURORA-1511] - PreemptorService failure does not trigger shutdown
    * [AURORA-1445] - In-progress instances on Update page continue to pulse after update is aborted
    * [AURORA-1494] - Scheduler fails to start due to thrift/SQL schema data type mismatch
    * [AURORA-1186] - Remove exclusion block from shiro dependency
    * [AURORA-1431] - Slave reservation is too restrictive
    * [AURORA-1342] - shiro.ini with blank users section fails to parse.
    * [AURORA-1484] - Document Changing Scheduler Quorum Size
    * [AURORA-1043] - /logconfig does not work when the scheduler is behind SSL
    * [AURORA-1345] - Update status page for large jobs is killed by Chrome
    * [AURORA-1537] - post_drain_script called for hosts that fail to drain within timeout
    * [AURORA-1395] - RescheduleCalculator precondition fails when using DbTaskStore
    * [AURORA-1409] - End-to-end tests fail with 401 unuthorized
    * [AURORA-1403] - Aurora UI cannot find task
    * [AURORA-1524] - register_auth_module still checks for callability

## Epic
    * [AURORA-1367] - 0.10.0 deprecations
    * [AURORA-1251] - 0.10.0 backwards incompatible changes
    * [AURORA-1501] - Add a job update diff RPC 
    * [AURORA-1457] - Consider removing quota enforcement for dedicated jobs

## Story
    * [AURORA-1485] - TaskConfig default container value breaks client library generation for GO
    * [AURORA-1364] - Improve client error messages for Kerberos errors
    * [AURORA-1317] - Allow an external log rotation process to truncate stdout and stderr
    * [AURORA-1213] - IP clearance and import of twitter commons java code
    * [AURORA-1429] - Upgrade Mesos to 0.23
    * [AURORA-1338] - Remove ChainedPathDetector from thermos
    * [AURORA-851] - Create nightly builds
    * [AURORA-1430] - Set up vagrant environment for sudo-less docker commands
    * [AURORA-1241] - Wrong label on table heading for in progress updates
    * [AURORA-1474] - Improve discoverability of dashboard link on the Job page
    * [AURORA-1261] - Expose slave host information using the variable {{mesos.hostname}}
    * [AURORA-696] - No way to link directly to Completed Tasks
    * [AURORA-1496] - Re-enable Scheduler Health Endpoint
    * [AURORA-783] - Remove redundant page header text
    * [AURORA-829] - Reference documentation should be self-contained
    * [AURORA-351] - Consider using Apache Shiro for scheduler Authentication and Authorization
    * [AURORA-586] - Upgrade scheduler to guava 18
    * [AURORA-1193] - Improve UI task status reporting experience
    * [AURORA-1405] - Client cluster configuration should specify the correct port to access multiple zookeeper hosts
    * [AURORA-647] - Don't store serialized thrift objects in the database

## Task
    * [AURORA-1503] - Determine how best to keep up with Mesos releases
    * [AURORA-1437] - Implement TierManager to translate tiers to task traits
    * [AURORA-1491] - Make "aurora task" commands support optional ssh options
    * [AURORA-1490] - Update website to point towards new mailing lists
    * [AURORA-1461] - Update RPCs and client/UI to properly identify non-dedicated consumption
    * [AURORA-1464] - Add e2e integration tests for revocable tasks
    * [AURORA-1414] - Schema changes to support revocable jobs
    * [AURORA-1462] - Update quota documentation
    * [AURORA-1516] - Add update sequence into "aurora job diff" command
    * [AURORA-1473] - Add build properties into scheduler /var endpoint
    * [AURORA-1460] - Remove quota enforcement for dedicated jobs
    * [AURORA-1441] - Document oversubscription in Aurora
    * [AURORA-1536] - Add test coverage to python/src/apache/*
    * [AURORA-1502] - Create a design summary for the jobConfigDiff RPC
    * [AURORA-97] - Provide a web UI page to show history for a specific job instance
    * [AURORA-1331] - It should be possible to link to an instance from the update page
    * [AURORA-1442] - Move Twitter Commons into org.apache.aurora namespace and add headers
    * [AURORA-1419] - FrameworkInfo support for REVOCABLE_RESOURCES capability
    * [AURORA-1427] - Move build-support/packaging to aurora-packaging repo
    * [AURORA-1415] - De-generalize resource handling in Scheduler
    * [AURORA-1515] - Implement getJobUpdateDiff API without TaskConfig diff support
    * [AURORA-1439] - Modify resource counters to support revocable slot counters
    * [AURORA-1531] - upgrade psutil to 3.2.2 from 2.1.3
    * [AURORA-1416] - Centralize offer/task matching implementation in TaskAssigner
    * [AURORA-1482] - Publish 0.9.0 debs to bintray
    * [AURORA-904] - 0.8.0 Release Candidate
    * [AURORA-1418] - Ignore revocable resources in preemptor
    * [AURORA-1499] - Upgrade Pants to version 0.0.57


Aurora 0.9.0
--------------------------------------------------------------------------------
## Bug
    * [AURORA-1401] - DB deadlock caused stuck job update
    * [AURORA-1325] - `src/test/python/apache/aurora/api_util.py` is not apart of any pants targets
    * [AURORA-1315] - UpdateStoreBenchmarks broken
    * [AURORA-1400] - Debian packages cannot be used with oracle-java8
    * [AURORA-1361] - Explicit reconciliation must use SLAVE_ASSIGNED_STATES
    * [AURORA-1391] - RPMS for Centos 7 have hard dependency for daemonize package
    * [AURORA-1296] - INSTANCES_SPEC_ARGUMENT client option does not validate instance range
    * [AURORA-1339] - TaskReconciler does not block implicit reconciliation
    * [AURORA-1356] - Thermos observer fails to start
    * [AURORA-1378] - False positive in test_kerberos_end_to_end.sh
    * [AURORA-1386] - Transaction isolation on DB stores is too strict
    * [AURORA-1316] - Consolidate last_modified in client update output
    * [AURORA-1399] - update start --wait should exit non-zero when the update was non-successful
    * [AURORA-1382] - Repo URL is incorrect on website
    * [AURORA-1392] - DbCronJobStore does not go through TaskConfig de-dupe code, breaking uniqueness assumptions elsewhere
    * [AURORA-698] - aurora executor _shutdown deadline calls should be daemonized
    * [AURORA-1353] - MesosPathDetector double-counts checkpoint roots
    * [AURORA-1332] - Updater does not skip already updated instances with /INSTANCES option.
    * [AURORA-1390] - Primary key violation when modifying cron jobs with DbCronJobStore
    * [AURORA-1307] - API hooks no longer supported for certain client commands
    * [AURORA-1379] - Referential integrity violation when replaying storage
    * [AURORA-1322] - DB task store is enabled by default when staging a recovery
    * [AURORA-1363] - Please delete old releases from mirroring system
    * [AURORA-1074] - Remove the "enable_legacy_constraints" flag.
    * [AURORA-1383] - Unique constraint on task_config_metadata.key should be removed

## Epic
    * [AURORA-334] - Replace in-memory storage with H2
    * [AURORA-715] - Retire GC Executor
    * [AURORA-1079] - 0.9.0 deprecations

## Story
    * [AURORA-274] - Use JDK8 features in scheduler development
    * [AURORA-1298] - Make DbTaskStore suitable for use in production
    * [AURORA-1369] - Scheduler warns about unoptimized Operation SAVE_JOB_INSTANCE_UPDATE_EVENT
    * [AURORA-1350] - Non-prod SLA stats
    * [AURORA-570] - LeaderRedirectFilter should be applied to admin endpoints that depend on storage
    * [AURORA-1397] - Python style checker should only report errors
    * [AURORA-1352] - Audit log doesn't capture Shiro subject principal
    * [AURORA-1096] - Scheduler updater should limit the number of job/instance events
    * [AURORA-1375] - When setting quota, the scheduler should prevent setting below current usage

## Task
    * [AURORA-951] - Debian packaging for Aurora
    * [AURORA-1351] - Make observer POLLING_INTERVAL configurable
    * [AURORA-415] - H2-backed implementation of JobStore
    * [AURORA-1344] - Create Aurora oversubscription design summary
    * [AURORA-1333] - Remove GC executor code
    * [AURORA-1327] - MesosSchedulerImpl should check if reason is present when posting status updates
    * [AURORA-316] - in health_check_config allow override for uri and expected_response 
    * [AURORA-1368] - shutdown_endpoint fields should be in the aurora schema
    * [AURORA-1371] - Add exact times to events in update UI
    * [AURORA-1228] - Use explicit status update acknowledgements to improve driver throughput.
    * [AURORA-1116] - RPM packaging for Aurora
    * [AURORA-1287] - Scheduler in-memory DB needs a direct console access
    * [AURORA-1346] - Upgrade requests-kerberos to 0.7.0
    * [AURORA-1337] - aurora executor should write checkpoints into sandbox
    * [AURORA-1318] - Benchmark snapshot restore
    * [AURORA-1239] - Add a way to watch a scheduler-driven update until it's complete
    * [AURORA-556] - H2-backed implementation of TaskStore
    * [AURORA-1277] - Create a design document for Health Checks for Updates
    * [AURORA-1311] - Upgrade to latest h2 version
    * [AURORA-1341] - Use TaskStatus reason field to populate the memory limit exceeded field in UserTaskLauncher
    * [AURORA-1334] - Remove GCExecutorLauncher code
    * [AURORA-1267] - Investigate upgrading pants to 0.0.32+
    * [AURORA-1139] - Remove backwards compatibility shims from JobUpdateKey introduction
    * [AURORA-1047] - Implement state reconciliation within the scheduler


Aurora 0.8.0
--------------------------------------------------------------------------------
## Bug
    * [AURORA-1106] - Release candidate script does not generate correct branch link
    * [AURORA-1201] - auth_module is not installed in child injector
    * [AURORA-1297] - link to apache git repo on the download page outdated
    * [AURORA-1155] - GC executor broken / Insufficient automated testing
    * [AURORA-1266] - Backwards incompatibility - executor does not ignore unknown (new) fields in task definition
    * [AURORA-842] - LeaderRedirectTest#testLeader fails in local builds
    * [AURORA-330] - aurora update should fail gracefully if job is not a service
    * [AURORA-1134] - Quota checks are inaccurate for cron schedule updates
    * [AURORA-1133] - Thermos Observer does not export stats via /vars
    * [AURORA-1094] - aurora cron start --open-browser fails with stacktrace
    * [AURORA-1263] - Fetching update details for a large job update takes seconds in the UI
    * [AURORA-1153] - Preemptor frequently reloads loop-invariant host attributes
    * [AURORA-1285] - Scheduler updater does not resume updates waiting for a pulse after restart
    * [AURORA-958] - Scheduler does not retry transitions for all transient states
    * [AURORA-1174] - make-python-sdists failing on master
    * [AURORA-1008] - Pystachio section variables don't seem to work as described in the documentation
    * [AURORA-1248] - Client retries 4xx errors
    * [AURORA-1173] - JobUpdateController.systemResume() is not called on scheduler startup anymore
    * [AURORA-1138] - aurorabuild.sh should exit on error in any command
    * [AURORA-1137] - Publish centos mesos.native eggs for 0.20.1
    * [AURORA-1060] - Branch coverage check is flaky
    * [AURORA-1023] - Releasing the update lock trips off scheduler updater
    * [AURORA-1217] - Gradle run broken
    * [AURORA-1301] - Tests inheriting from AuroraClientCommandTest always pass
    * [AURORA-926] - Scheduler crashes due to JVM running out of memory on start
    * [AURORA-1020] - The --rollback-on-failure option is meaningless for "aurora job restart"
    * [AURORA-1115] - Observer is no longer finding task sandboxes
    * [AURORA-1165] - aurora update status subcommand shows invalid date values
    * [AURORA-1256] - git repository references throughout aurora.apache.org are wrong
    * [AURORA-916] - test_inotify_diskcollector is flaky
    * [AURORA-1166] - aurora update status subcommand does not filter by update status
    * [AURORA-1255] - Download links on aurora.apache.org point to old location
    * [AURORA-917] - "aurora job create" gives misleading error when used to create a cron job
    * [AURORA-1113] - Invalid create commands in the tutorial
    * [AURORA-1176] - CommandLine uses print() directly instead of doing so through context
    * [AURORA-991] - Documented steps for replicated log don't work for multi-master
    * [AURORA-1053] - StorageBackupImpl doesn't use streaming
    * [AURORA-1135] - "download" link broken in logs stdout/stderr page
    * [AURORA-1191] - end-to-end tests no longer rebuilds components
    * [AURORA-1108] - The scheduler synchronously writes a backup while writing a snapshot to the replicated log
    * [AURORA-1124] - Aurora beta-update status command is broken
    * [AURORA-823] - thermos pex GLIBC error when using py27/glibc 2.12/rhel6.4
    * [AURORA-1309] - Build can fail if repo directory absolute path is too long

## Epic
    * [AURORA-690] - Add support for external update coordination
    * [AURORA-999] - Various scheduler performance improvements
    * [AURORA-905] - 0.8.0 deprecations
    * [AURORA-1034] - Graduate Apache Aurora from Incubator

## Story
    * [AURORA-1099] - 0.7.0 missing license headers
    * [AURORA-1187] - Create JobKey-scoped Permissions and apply to AuroraSchedulerManager
    * [AURORA-1302] - Allow rc script to set an explicit version
    * [AURORA-689] - Start vetting Mesos 0.21.0
    * [AURORA-911] - Scheduling vetos are only displayed for the first task in a TaskGroup
    * [AURORA-1093] - Scheduler updates should be uniquely identified by jobKey + updateId
    * [AURORA-909] - Differentiate between dynamic and static vetoes
    * [AURORA-857] - aurora cron schedule should ouput url
    * [AURORA-974] - upgrade pants invocations once pants 0.0.25 is released
    * [AURORA-1206] - Make update status command more versatile
    * [AURORA-1236] - git repo on aurora.apache.org references old incubator repo which is 404
    * [AURORA-434] - document steps to recover replica db from backup
    * [AURORA-796] - Configurable Health-Endpoint
    * [AURORA-524] - Preemptor should export more detailed statistics
    * [AURORA-184] - Implicit scheduling constraints should be removed
    * [AURORA-1001] - Support Mesos TASK_ERROR state
    * [AURORA-1104] - Upgrade to pants 0.0.28
    * [AURORA-1231] - Blocked updates missing from cluster-wide in progress view
    * [AURORA-1025] - Update gc executor to read checkpoint stream from sandbox
    * [AURORA-1024] - Implement API for dual reading Thermos checkpoints
    * [AURORA-1028] - Export TASK_LOST source stats from Scheduler
    * [AURORA-1027] - Update thermos cli to read checkpoint stream from sandbox
    * [AURORA-1026] - Update observer to read checkpoint stream from sandbox
    * [AURORA-1210] - Aurora Graduation checklist
    * [AURORA-1299] - UpdateConfigError results in stack trace
    * [AURORA-472] - V2 end-to-end tests stall for 5 seconds due to "large change"
    * [AURORA-716] - Reconsider default for -require_slave_checkpoint
    * [AURORA-1148] - Display All Scheduling Veto Reasons for PENDING tasks
    * [AURORA-1291] - Replace enable_api_security arg with a value for http_authentication_mechanism
    * [AURORA-1290] - Allow specifying a shorthand for "well-known" Module FQCNs
    * [AURORA-1275] - Don't delay kill sequence when HTTP teardown signal could not be dispatched
    * [AURORA-1189] - Add a warning in the scheduler when the JVM version is < 1.8
    * [AURORA-1190] - Add a deprecation warning when the client-side updater is used
    * [AURORA-979] - Update to virtualenv 12.0
    * [AURORA-913] - Replace MaintenanceMode field with HostAttributes in HostOffer
    * [AURORA-1204] - Update upstart configurations when syncing sources
    * [AURORA-1306] - Upgrade to gradle 2.4
    * [AURORA-1305] - MemTaskStore: items are not removed from secondary index
    * [AURORA-358] - Allow executor command-line flags to be specified on the scheduler command-line
    * [AURORA-1308] - 0.8.0 changelog contains wontfix and duplicate ticket references
    * [AURORA-1310] - Remove blanket 'Error executing command: ' prefix from client output

## Sub-task
    * [AURORA-471] - Measure performance of the getTasks API call
    * [AURORA-1313] - Fix broken style test cases causing PEP302

## Task
    * [AURORA-811] - Add ShiroAopModule, shiro AOP @RequiresPermissions annotations
    * [AURORA-809] - Use Apache Shiro for HTTP authentication
    * [AURORA-1268] - Executor is not backwards compatible with regards to schema additions
    * [AURORA-892] - Improve specs for command line option mocks in Python tests
    * [AURORA-1156] - Preemptor perf improvements
    * [AURORA-1055] - Remove LiveClusterState
    * [AURORA-549] - Export a stat to track status update handling delay
    * [AURORA-1088] - Expose blockIfNoPulseAfterMs setting in updateSettings.html
    * [AURORA-896] - Remove client stack trace redirection
    * [AURORA-1128] - Pin python protobuf dependency to 2.6.1
    * [AURORA-1129] - Upgrade myBatis version to latest
    * [AURORA-1077] - Allow message to be stored with update write events
    * [AURORA-1062] - apache.aurora.executor.common.HealthChecker should export stats
    * [AURORA-195] - remove legacy remnants of "aurora" executor
    * [AURORA-532] - Publish twitter.common.python 0.5.7 and publish external docs
    * [AURORA-1119] - Enable UPDATE_COORDINATOR role to access pauseJobUpdate RPC
    * [AURORA-1009] - Implement pulseJobUpdates RPC
    * [AURORA-1010] - Modify updater state machine to support heartbeat-driven pause/resume
    * [AURORA-1012] - Update documentation to explain the scheduler heartbeat mechanism
    * [AURORA-1097] - Scheduler updater should suppress instance events on resume
    * [AURORA-969] - Create scheduler performance benchmark framework
    * [AURORA-1240] - Ignore JobUpdateSettings.maxWaitToInstanceRunningMs in the scheduler
    * [AURORA-817] - Add documentation for HTTP basic and kerberos authentication
    * [AURORA-1168] - beta-update list should use a hierarchy for query specifications
    * [AURORA-1181] - optimize host_drain to speed up maintenance
    * [AURORA-973] - Add a document describing thrift deprecation procedure
    * [AURORA-975] - Remove populatedDEPRECATED from PopulateJobResult
    * [AURORA-1160] - Rename beta-update to update
    * [AURORA-1159] - NearestFix does not account for certain veto types
    * [AURORA-1158] - Consider finding preemption slots asynchronously 
    * [AURORA-1214] - Reevaluate "max_schedule_attempts_per_sec" with asynchronous preemptor
    * [AURORA-1071] - Modify UpdateConfig schema to support heartbeats
    * [AURORA-1037] - Community Vote for graduation readiness
    * [AURORA-1246] - Mesos warns about executor resources being to small
    * [AURORA-1170] - Add more logging in MaintenanceController
    * [AURORA-1120] - Add the ability to optionally create an unhooked version of the Aurora client api
    * [AURORA-1219] - Improve preemptor efficiency
    * [AURORA-1080] - Upgrade mesos dependency to 0.21.1
    * [AURORA-1029] - Remove client YAML support (drop pyaml dependency)
    * [AURORA-1081] - Upgrade to latest checkstyle version
    * [AURORA-1276] - Upgrade to mesos 0.22
    * [AURORA-1040] - Submit Resolution to Board
    * [AURORA-825] - Cron tasks don't check quota when launched
    * [AURORA-723] - Create design document for security code refactor
    * [AURORA-812] - Wire in SPNEGO HTTP module
    * [AURORA-813] - Add ability to configure client to use Kerberos
    * [AURORA-810] - Add an end-to-end test case for http basic auth
    * [AURORA-808] - Refactor the scheduler to allow authenticated subject-per-request
    * [AURORA-1090] - Optimize or remove shard uniqueness check from StorageBackfill
    * [AURORA-885] - Improve lock held message in client output
    * [AURORA-324] - Migrate from Twitter ShutdownRegistry to Guava ServiceManager
    * [AURORA-1157] - Add end-to-end test coverage for async updates
    * [AURORA-1283] - Implement a benchmark for status update processing throughput.
    * [AURORA-1259] - Add metrics for scheduler update states
    * [AURORA-378] - Add config grouping visualisation to job page


Aurora 0.7.0
--------------------------------------------------------------------------------
## Bug
    * [AURORA-952] - method interceptor is fatefully intercepting finalize() with null pointer
    * [AURORA-1050] - test_end_to_end.sh is failing on master
    * [AURORA-798] - investigate flaky test: LockManagerImplTest/testNoDeadlock
    * [AURORA-83] - Killing a job attempts to transition non-active tasks
    * [AURORA-1019] - /utilization has a 404 on bootstrap resource
    * [AURORA-1002] - Thermos executor does not enforce disk quota.
    * [AURORA-946] - The replaceCronTemplate RPC does not check quota
    * [AURORA-988] - aurora client apache.aurora.client.api.ThriftInternalError error due to unexpected kwarg user_agent
    * [AURORA-996] - Aurora client batch job kill does not filter active tasks
    * [AURORA-990] - aurora job inspect --raw fails with a stack trace
    * [AURORA-989] - aurora client v2 dont have "version" command
    * [AURORA-966] - task_schedule_attempt_locked stats are not exported
    * [AURORA-965] - Aurora client prints ambiguous trailing error message
    * [AURORA-980] - rack limit of 1 is meaningless for single-instance job
    * [AURORA-949] - TRequestsTransport does not raise an exception on 5xx or 4xx responses
    * [AURORA-976] - The scheduleCronJob RPC allows duplicate job key creation
    * [AURORA-939] - Executor crashes when it receives an invalid task config
    * [AURORA-938] - TestVersionCommand::test_version_with_new_pants fails under py.test
    * [AURORA-921] - Fail fast for cron jobs in "aurora beta-update start"
    * [AURORA-1018] - Review bot is headed to infinity and beyond
    * [AURORA-997] - ReviewBot is a filthy liar
    * [AURORA-923] - Run verb does not return an exit code.
    * [AURORA-986] - RequestLoggerTest failed for Locale.FRANCE
    * [AURORA-1016] - NullPointerException in PreemptorImpl
    * [AURORA-937] - Response.serverInfo is not always populated
    * [AURORA-956] - The Scheduler can allocate Mesos Tasks with 0 Disk.
    * [AURORA-936] - Aurora admin query command is broken
    * [AURORA-992] - /apiclient/ endpoint shows documentation for thermos API
    * [AURORA-1076] - Docker patch created incompatible ExeuctorInfo changes for GC executor
    * [AURORA-1045] - Scheduler should avoid performing authentication while holding the write lock
    * [AURORA-1067] - Thermos executor test hangs
    * [AURORA-968] - Client logs duplicate error messages

## Epic
    * [AURORA-423] - 0.7.0 deprecations
    * [AURORA-633] - Support running Docker containers
    * [AURORA-710] - make aurora v2 client the default client

## Story
    * [AURORA-933] - python missing license headers
    * [AURORA-994] - Simplify client help output
    * [AURORA-930] - GC performance issues with snapshot deduplication on large clusters
    * [AURORA-998] - aurora client apache.aurora.client.api.ThriftInternalError error due to dup kwarg
    * [AURORA-121] - Make the preemptor more efficient
    * [AURORA-776] - Update documentation and scripts to use v2 client.
    * [AURORA-775] - Remove v1 client build
    * [AURORA-617] - Switch pants 3rdparty to use python_requirements
    * [AURORA-782] - Remove command bridging from client
    * [AURORA-934] - client should set User-Agent

## Task
    * [AURORA-424] - Empty string cronSchedule should not be accepted by scheduler
    * [AURORA-919] - Aurora client should provide a --verbose flag and silence DEBUG level log output by default
    * [AURORA-941] - Enforce gradle version in build.gradle
    * [AURORA-929] - Remove ReadWriteLockManager
    * [AURORA-466] - Remove message string in Response struct
    * [AURORA-691] - Remove populated field in PopulateJobResult struct
    * [AURORA-928] - Executor overhead cannot be dropped to zero
    * [AURORA-914] - Instrument task scheduling pipeline
    * [AURORA-943] - Improve messaging in admin host_drain command
    * [AURORA-832] - Remove SANDBOX_DELETED state
    * [AURORA-947] - Use thrift's built-in doc generator
    * [AURORA-766] - Client should show information for update details when starting an update.
    * [AURORA-924] - Improve cron error messages
    * [AURORA-891] - Drop argparse dependency
    * [AURORA-925] - refactor build.gradle to extract thrift compilation as a separate task class
    * [AURORA-1021] - Increase MIN_THERMOS_RESOURCES to prevent thermos OOMs.
    * [AURORA-961] - Set default --batch-size in client v2 to 1
    * [AURORA-469] - quota check failures should specify how much under quota you are
    * [AURORA-967] - Explore adding a PMD rule for validating @Timed attribute placement
    * [AURORA-962] - Allow specifying the hostname the scheduler is running on
    * [AURORA-935] - Improve logging in MaintenanceController
    * [AURORA-970] - Include aurora version (from .auroraversion) in the client help output
    * [AURORA-454] - Remove cron functionality in createJob/killTasks
    * [AURORA-1013] - Modify thrift schema to support configuring heartbeat updates.
    * [AURORA-143] - Remove the getVersion RPC
    * [AURORA-467] - Remove version field in Response struct
    * [AURORA-982] - Use documentation template when rendering docs on Aurora website
    * [AURORA-1072] - Update NOTICE to include year 2015


Aurora 0.6.0
--------------------------------------------------------------------------------
## Bug
    * [AURORA-145] - Test dependencies leak into distribution
    * [AURORA-788] - GC executor doesn't need to exit after period of inactivity
    * [AURORA-807] - GC executor doesn't ignore launchTasks when it's shutting down
    * [AURORA-607] - release script is broken
    * [AURORA-877] - Build fails if thrift cannot be downloaded
    * [AURORA-673] - aurora job restart should not require job config
    * [AURORA-672] - aurora job output format is broken around metadata
    * [AURORA-694] - When MemStorage is layered over DbStorage, SQL is not transactioned
    * [AURORA-498] - test_end_to_end.sh uses stale aurora client
    * [AURORA-504] - there should be a section to describe how to clone git repo in howtocontribute page
    * [AURORA-748] - Help command is broken
    * [AURORA-702] - Possible deadlock in killTasks
    * [AURORA-394] - Add license headers to non-vendored html and css templates
    * [AURORA-405] - Remove go links from config.py
    * [AURORA-495] - UI should always show a pending reason
    * [AURORA-901] - Client updater errors are not reported in v1
    * [AURORA-899] - Job keys are not backfilled for JobConfigurations
    * [AURORA-822] - Coverage metrics seem occasionally flaky
    * [AURORA-757] - Rename async "update" noun to "beta-update" to avoid collision with client command
    * [AURORA-628] - roles not displayed in ui
    * [AURORA-846] - document /etc/aurora/clusters.json
    * [AURORA-625] - 'aurora version' is broken
    * [AURORA-706] - Client "task ssh" command fails badly when job not found
    * [AURORA-658] - unable to run scheduler without mesos infrastructure for development
    * [AURORA-804] - Fix deprecation message for "aurora task ssh"
    * [AURORA-801] - deadlock in scheduler startup
    * [AURORA-837] - validateSessionKeyForTasks can pass empty set of roles to checkAuthenticated
    * [AURORA-770] - V2 client logs HTTP connections to info
    * [AURORA-756] - startUpdate fails with "Instance count must be positive."
    * [AURORA-863] - provision-dev-cluster.sh refers to mesos egg instead of mesos.native
    * [AURORA-676] - Fix aurora run in end to end tests
    * [AURORA-697] - GZip compression regression in scheduler
    * [AURORA-824] - scheduleCronJob does not check quota or task limits
    * [AURORA-571] - Admin maintenance fails SLA check when no prod tasks on host
    * [AURORA-561] - Impossible to copy task status events from UI
    * [AURORA-729] - Immutable wrapper objects are not always immutable
    * [AURORA-566] - The descheduleCronJob RPC does not validate SessionKey
    * [AURORA-632] - distZip includes a META-INF/about.txt
    * [AURORA-873] - Task events on job page use a different display format for timestamps
    * [AURORA-577] - observer's favicon is 146 kB
    * [AURORA-667] - aurora ConcurrentModificationException if specific job is PENDING/THROTTLED
    * [AURORA-683] - vagrant up fails due to missing box ubuntu/trusty64
    * [AURORA-644] - slave url in /slaves endpoint should use thermos port
    * [AURORA-650] - Error in cancel_update
    * [AURORA-897] - aurora scheduler unable to restore from snapshot
    * [AURORA-622] - Build failed due to pex package rename
    * [AURORA-768] - QuotaManager does not properly filter out tasks from job updates
    * [AURORA-802] - Quota is not checked correctly in startJobUpdate
    * [AURORA-900] - TransientError response message is not processed correctly
    * [AURORA-659] - Clientv2 command doesn't work correctly with bind parameters
    * [AURORA-887] - "aurora job create --open-browser" fails with error.
    * [AURORA-670] - Client command_runner logging does not work
    * [AURORA-844] - fix TOC formatting in configuration-tutorial.md
    * [AURORA-623] - test_end_to_end.sh hangs on aurora run
    * [AURORA-640] - aurora create fail due to lock held by different job
    * [AURORA-550] - Python code coverage fails with new pants
    * [AURORA-786] - Client does not log Response.messageDEPRECATED errors
    * [AURORA-609] - Admin host maintenance command does not block on post drain script
    * [AURORA-682] - Test Break- status checker name property
    * [AURORA-836] - test_integration_success in test_thermos_task_runner is flaky
    * [AURORA-684] - Test src.test.python.apache.aurora.client.cli.job is failing
    * [AURORA-458] - Web interface has become slow, especially the job page
    * [AURORA-14] - CI is broken due to lack of binary egg on Jenkins slaves
    * [AURORA-605] - Tests fail on duplicate table in H2
    * [AURORA-513] - Errors during thrift RPC calls cause ugly stack dumps
    * [AURORA-779] - v2 client has worse error message than v1
    * [AURORA-648] - Vagrant provisioner fails to download mesos egg and deb
    * [AURORA-753] - aurora cron show aborts early
    * [AURORA-187] - scheduler failover should never abort an update
    * [AURORA-641] - NULL not allowed for column "SLAVE_ID"
    * [AURORA-669] - Thermos runner collect_updates() gets stuck in a while loop when timeout is 0
    * [AURORA-730] - Performance regression in fetching HostAttributes while scheduling
    * [AURORA-666] - Aurora job status --write-json does not convert status values
    * [AURORA-597] - Error in deschedule call
    * [AURORA-728] - Executor does not handle announcer errors properly
    * [AURORA-792] - Aurora job update does not use job_spec when calculating large update warning
    * [AURORA-722] - snapshot performance issues
    * [AURORA-920] - Deadlock during scheduler startup
    * [AURORA-793] - Client prints redundant messages
    * [AURORA-6] - Accessing url property of ZookeeperSchedulerClient fails if proxy_url is not set and client is not connected
    * [AURORA-831] - cron deschedule help includes ambiguous options
    * [AURORA-884] - Coverage report analysis may be flaky due to use of Stats
    * [AURORA-889] - aurora2 beta-update list is broken
    * [AURORA-912] - Scheduler cannot read PruneJobUpdateHistory log operations
    * [AURORA-784] - Client reports "update has started" for no-op update

## Epic
    * [AURORA-16] - Refactor Aurora UI
    * [AURORA-610] - Job update orchestration in the scheduler
    * [AURORA-147] - Initial Apache Incubator release

## Story
    * [AURORA-736] - Update committer docs with steps for adding a gpg key
    * [AURORA-600] - RC2 License and NOTICE updates
    * [AURORA-231] - Upgrade gradle license plugin to v9 which contains reduced debug output
    * [AURORA-703] - Document dedicated roles
    * [AURORA-114] - Globs for Aurora job keys
    * [AURORA-764] - Stop sending deleted task events, ignore incoming deleted task events.
    * [AURORA-840] - Add an FAQ for cluster operators
    * [AURORA-839] - Add documentation describing the scheduler's storage system
    * [AURORA-755] - Issue with partial deploys in the update instance summary
    * [AURORA-795] - Implement a way to temporarily disable health check for a running instance
    * [AURORA-131] - Deprecate v1 client
    * [AURORA-718] - JobUpdateConfiguration should reflect work required for a job update
    * [AURORA-828] - Documentation could make a better job at selling aurora
    * [AURORA-621] - Implement instance update logic
    * [AURORA-741] - DbJobUpdateStore can't fetch updates that have no initial state
    * [AURORA-634] - Add a monitoring guide
    * [AURORA-745] - Show in-flight and recently completed updates in scheduler UI
    * [AURORA-579] - Upgrading Mesos version from 0.18.0 to 0.19.0
    * [AURORA-769] - No-op job update fails with "Missing both initial and desired states. At least one is required."
    * [AURORA-473] - V2 client lacks informative output when updating
    * [AURORA-227] - Aurora build should check for the Python version
    * [AURORA-422] - clientv2 splash page is >250 lines
    * [AURORA-674] - Increment Aurora to depend upon mesos 0.20.0
    * [AURORA-642] - aurora job inspect calls print_out() incorrectly
    * [AURORA-587] - Add discovery manager implementation
    * [AURORA-688] - sudo should not be required when running build commands w/ vagrant.
    * [AURORA-875] - Update Aurora to depend on mesos 0.20.1
    * [AURORA-717] - Store new task configuration in JobUpdateConfiguration as InstanceTaskConfig
    * [AURORA-781] - Fix bind parameter processing in client
    * [AURORA-585] - aurora/thermos test failure on py26 due to pex
    * [AURORA-848] - Handle resourceOffers callback asynchronously
    * [AURORA-695] - Upgrade aurora pants to 0.0.23
    * [AURORA-340] - Remove IsolatedSchedulerModule and surrounding code
    * [AURORA-733] - MedianAlgorithm results should be windowed in time
    * [AURORA-686] - Job updates may fail due to exceeding role quota
    * [AURORA-841] - LeaderRedirectFilter using rewritten URI path as redirect target
    * [AURORA-369] - Create a REST-like interface to aurora
    * [AURORA-606] - Remove dependency on twitter HttpModule
    * [AURORA-771] - 'see log for details' in client output is confusing
    * [AURORA-743] - Figure out retention policy for scheduler job update data
    * [AURORA-456] - "aurora version" command raises KeyError: 'sha'
    * [AURORA-854] - v2 help for cron shows that deschedule takes a --bind-var option but deschedule does not accept a config file
    * [AURORA-867] - python build broken on OS X 10.10
    * [AURORA-910] - Scheduler should retry Driver.killTask
    * [AURORA-72] - Improve root README.md
    * [AURORA-827] - Client error logdir path not set correctly

## Sub-task
    * [AURORA-551] - Use getTasksWithoutConfig and getConfigSummary in UI

## Task
    * [AURORA-87] - Display job diff in the scheduler when an update is in progress
    * [AURORA-612] - Implement the storage primitives to persist update history
    * [AURORA-382] - Organize tasks by tabs on job page
    * [AURORA-878] - Cache Host Attributes along Offer
    * [AURORA-626] - Add wait_for_batch_completion option into parallel updater
    * [AURORA-363] - the new pants selects 2.6.x by default if it's available
    * [AURORA-883] - Create a utility that provides early CI feedback on code reviews
    * [AURORA-230] - Fail out if aurora create gets a --shards argument
    * [AURORA-615] - Update aurora client to use job update RPCs
    * [AURORA-819] - Investigate JaCoCo plugin failure in Jenkins Build 633
    * [AURORA-408] - Update client "job" commands to remove cron-related behavior.
    * [AURORA-412] - Upgrade psutil once post-2.1.1 release is cut
    * [AURORA-820] - Admin host_drain should throttle status waiting calls
    * [AURORA-611] - Define scheduler API methods to create and manage job updates
    * [AURORA-803] - Return valid JSON structure as "job status" result with "--write-json"
    * [AURORA-608] - GcExecutorLauncher should throttle initial activity spike
    * [AURORA-170] - expose process exit status via observer UI
    * [AURORA-763] - Document how to use the new asynchronous updater feature
    * [AURORA-868] - Decouple initial scheduling delay from first scheduling penalty
    * [AURORA-843] - Export metric tracking slaves with insufficient resources for gc_executors
    * [AURORA-747] - The rollbackOnFailure flag in JobUpdateSettings is not wired
    * [AURORA-613] - Implement job update logic
    * [AURORA-742] - Add client commands to query server-driven updates.
    * [AURORA-774] - Expose MTTA/R SLA metrics for non-prod jobs
    * [AURORA-94] - Refactor/remove SchedulerCore in favor of StateManager
    * [AURORA-737] - Improve clientv2 usage helplines.
    * [AURORA-714] - Remove 30sec wait from host_drain command
    * [AURORA-603] - Make clientv1 command hooks testable
    * [AURORA-700] - Scheduler UI should use asynchronous HTTP requests
    * [AURORA-614] - Include information about updates in the scheduler UI
    * [AURORA-142] - Remove getVersion API from client
    * [AURORA-440] - Document cron
    * [AURORA-679] - Upgrade jetty
    * [AURORA-627] - use latest psutil library for thermos in pants
    * [AURORA-419] - Add search to job page
    * [AURORA-176] - more gracefully handle cases where user does not exist on machine
    * [AURORA-311] - add support for Mesos masters running with --no-root_submissions
    * [AURORA-751] - Remove SANDBOX_DELETED task state
    * [AURORA-806] - Support per batch post_drain execution in admin host_drain command
    * [AURORA-436] - Make bootstrap grids consistent in Scheduler UI
    * [AURORA-732] - Disable server-driven job updates by default
    * [AURORA-581] - Add lightweight hooks for mutating clientv1 commands.
    * [AURORA-425] - Merge Active and completed tasks on job page into a single table
    * [AURORA-646] - Improve end-to-end test coverage for clientv2
    * [AURORA-833] - Extract complex gradle tasks from build.gradle
    * [AURORA-333] - finish all deprecations in schema/base.py
    * [AURORA-175] - thermos runner should discriminate failures using exit status
    * [AURORA-772] - Add username to the update events
    * [AURORA-61] - Figure out what to do with thermos README.md
    * [AURORA-544] - Add an option to allow users to specify log levels in client
    * [AURORA-874] - Make clientv2 job status include a header line for tasks like v1.
    * [AURORA-880] - Add some wiggle room when requiring min coverage be raised
    * [AURORA-651] - perform_maintenance_hosts should not temporarily remove machines
    * [AURORA-645] - Improve coverage of clientv2 commands
    * [AURORA-685] - Add task_%STATUS%_%JOB% stat
    * [AURORA-692] - aurora_admin should have a find_scheduler command
    * [AURORA-90] - Log all RPCs
    * [AURORA-678] - Serve static HTTP assets out of a classpath directory
    * [AURORA-744] - Scheduler updater should support wait_for_batch_completion flag
    * [AURORA-20] - Contribute a "Developing Aurora Client" section
    * [AURORA-545] - Add a flag to allow users to prevent blocking of unknown exceptions in client
    * [AURORA-649] - Implement scheduler API methods linking updater logic and storage
    * [AURORA-43] - Rename maintenance commands to have a consistent prefix
    * [AURORA-313] - Add variable min offer jitter time window so Aurora can decline offers faster
    * [AURORA-84] - Deprecate the Identity struct
    * [AURORA-830] - Make Executor Overhead Configurable
    * [AURORA-886] - aurora job create --wait-until should exit with error code if the job being waited on fails


Aurora 0.5.0
--------------------------------------------------------------------------------
## Bug
    * [AURORA-13] - howtocontribute page on aurora.i.a.o should reference docs/contributing.md
    * [AURORA-3] - Update code for ASF namespace and license headers
    * [AURORA-5] - devtools vm broken with provisioning error
    * [AURORA-12] - thermos.py trying to len() a generator
    * [AURORA-25] - Scheduler never announces leadership
    * [AURORA-27] - Scheduler will not react to unknown running tasks
    * [AURORA-26] - Fix TaskPath import in thermos binary
    * [AURORA-40] - aurora_admin scheduler_print_recovery_tasks is broken
    * [AURORA-196] - Unable to build aurora_client.pex on Ubuntu 12.04
    * [AURORA-136] - SchedulerLifecycle ACTIVE state is unused
    * [AURORA-135] - mem_storage_write_operation* stats overcount
    * [AURORA-134] - LogStorage store implementations internally invoke write
    * [AURORA-223] - Improve admin Host Maintenance module
    * [AURORA-221] - Enforce scheduler suicide on log write failure
    * [AURORA-190] - The new scheduler UI landing page does not define default column sorting
    * [AURORA-179] - Local scheduler run fails to register with mesos
    * [AURORA-162] - aurora client does not honor HealthCheckConfig when doing updates
    * [AURORA-151] - thermos_task_runner test is flaky
    * [AURORA-150] - Unsupported status: THROTTLED exception
    * [AURORA-194] - Preemptor should not consider THROTTLED tasks preemption candidates
    * [AURORA-204] - unavailable username causes hung executor
    * [AURORA-101] - aurora diff test is flaky
    * [AURORA-102] - Add failOnVersionConfict() to scheduler build
    * [AURORA-100] - Thrift connection appears to keep the scheduler from shutting down
    * [AURORA-88] - get_quota -h lists --cluster as deprecated
    * [AURORA-120] - Scheduler page title no longer includes cluster name
    * [AURORA-119] - Job counts are incorrect on new scheduler home page
    * [AURORA-59] - Scheduler reports task count stats before storage is fully recovered
    * [AURORA-57] - aurora should include a DISCLAIMER
    * [AURORA-55] - clientcommands.md cites incorrect clusters.json location
    * [AURORA-56] - executor logs way too much
    * [AURORA-51] - Scheduler stalls during startup if storage recovery fails
    * [AURORA-50] - Scheduler deadlock
    * [AURORA-46] - Populate tasks_lost_rack stats before serving
    * [AURORA-45] - Scheduler should wait for registered to be called before attempting to invoke driver
    * [AURORA-41] - test_status.py breaks build in commit a49d94c 'Fix bad merge commit'
    * [AURORA-60] - Commit e1aee67 re-creates src/main/python/twitter after namespace change occurring 
    * [AURORA-126] - IllegalArgumentException when preparing GC executor launch
    * [AURORA-123] - Building/provisioning vagrant VMs fails on OSX Mavericks.=
    * [AURORA-247] - Client restart fails with "Values instance has no attribute 'rollback_on_failure'"
    * [AURORA-249] - Optional is printed in scheduler thrift response message
    * [AURORA-244] - Fix zookeeper logs from being swallowed due to missing log4j.properties
    * [AURORA-229] - Apache Aurora logo is missing a trademark
    * [AURORA-237] - aurora client unit test failures
    * [AURORA-250] - Protobuf version conflict on recent mesos version update
    * [AURORA-213] - aurora_client.pex and aurora_admin.pex toss exception about unicode character in metadata
    * [AURORA-210] - Cron jobs with RUN_OVERLAP are not mapped on startup
    * [AURORA-259] - Authentication errors cause stack dump in client
    * [AURORA-264] - Scheduler should be resilient to duplicated attributes
    * [AURORA-265] - Missing tooltips for some task states in dictionary.js
    * [AURORA-271] - Task status is not reported correctly in the UI
    * [AURORA-267] - Task state tooltips clipped by row height
    * [AURORA-288] - aurora_admin is missing host maintenance commands
    * [AURORA-537] - SLA safe domain host-scoped falls back to cluster-wide when no tasks returned
    * [AURORA-529] - pants is broken
    * [AURORA-536] - new pants setup_py is broken
    * [AURORA-543] - thermos_observer build fail due to pants
    * [AURORA-573] - Scheduler fails RPCs with SQL exception
    * [AURORA-525] - Drop red from the configuration grouping visualisation
    * [AURORA-523] - Escape cmdline value in Observer UI
    * [AURORA-514] - Admin increase_quota is broken.
    * [AURORA-512] - Client quota_check.py does not handle non->prod and prod->non job transitions
    * [AURORA-494] - aurora_admin's perform_maintenance_hosts command doesn't fail on unknown hosts
    * [AURORA-488] - clientv2 help string contains extra newlines
    * [AURORA-485] - Broken SchedulerIT test
    * [AURORA-483] - Following tutorial results in LOST tasks
    * [AURORA-480] - End to end tests fail under vagrant due to apparent vagrant image errors
    * [AURORA-457] - Expose auroraUI as a global
    * [AURORA-455] - Config summary displays range incorrectly
    * [AURORA-503] - clientv2 DistributedCommandRunner is missing a symbol
    * [AURORA-502] - Aurora2 binary needs to reference admin commands
    * [AURORA-475] - Remove Copyright /d/d/d/d Apache Software Foundation from the source files license header
    * [AURORA-499] - Interrupted vagrant provisioning leaves multiple VMs running
    * [AURORA-497] - Client V2 does not suppress unhandled error stack trace
    * [AURORA-310] - Clientv2 bridge fails when command isn't specified
    * [AURORA-315] - E2E test is broken
    * [AURORA-453] - Regression: vagrant-based tests failing 
    * [AURORA-452] - End-to-end tests fail on release distributions
    * [AURORA-372] - Python tests fail with "Untranslateable" exception
    * [AURORA-402] - SANDBOX_DELETED message is not shown in the header.
    * [AURORA-401] - Client commands that take instances should provide a strict option.
    * [AURORA-399] - Restart command does not check for invalid parameters
    * [AURORA-400] - Restart generates incorrect error message when called with invalid instances
    * [AURORA-397] - Broken build due to incorrect target in test
    * [AURORA-375] - list missing shipits args do not match docs
    * [AURORA-374] - New UI does not show task message in a collapsed view
    * [AURORA-373] - New UI aggregates tasks from different roles
    * [AURORA-395] - Scheduler should not send SANDBOX_DELETED tasks to GC executor
    * [AURORA-393] - release candidate script doesn't need to create checksums for signature files
    * [AURORA-344] - Tutorial test does not work on linux
    * [AURORA-368] - newer pants/commons lib break aurora packaging
    * [AURORA-366] - ScheduledThreadPoolExecutor in AsyncModule does not log unhandled errors.
    * [AURORA-349] - e2e test broken on master
    * [AURORA-362] - Make client config plugins "before_dispatch" a no-op by default
    * [AURORA-359] - StateManager.deleteTasks() does not provide task instance
    * [AURORA-339] - Improve column layout of job page
    * [AURORA-338] - Incorrect job stats in getJobSummary API
    * [AURORA-365] - Exclude SANDBOX_DELETED from the AdjustRetainedTasks message
    * [AURORA-420] - scheduler crash due to corrupt replica data?
    * [AURORA-450] - Cron Summary table should appear underneath the Config Summary
    * [AURORA-447] - Cron changes broke python thrift test
    * [AURORA-442] - Admin SLA commands should be resilient to task queries producing no result
    * [AURORA-437] - aurora clientv2 help is malformed
    * [AURORA-416] - Scheduling rate limiter is not used
    * [AURORA-413] - aurora update fails if update results in a pending job
    * [AURORA-411] - On job page, 'Running duration' is always 'a few seconds'
    * [AURORA-410] - MetricCalculator thread should block until storage is ready
    * [AURORA-439] - stacktrace from 'aurora sla get-job-uptime -h'
    * [AURORA-478] - /cron endpoint is broken after quartz change
    * [AURORA-297] - javadoc generation broken
    * [AURORA-307] - aurora open command throws a stacktrace when called with no arguments
    * [AURORA-302] - TaskGroups may abandon tasks
    * [AURORA-301] - aurora_admin query is broken
    * [AURORA-295] - Admin sla_list_safe_domain does not filter hosts properly
    * [AURORA-563] - UI does not show config bar
    * [AURORA-560] - Scheduler may hang while tearing down due to Quartz thread
    * [AURORA-355] - Website docs are outdated
    * [AURORA-564] - killTasks will not kill cron jobs that do not currently have active tasks
    * [AURORA-583] - test failures due to apparent pants issue
    * [AURORA-582] - Slave attributes cached incorrectly by scheduler
    * [AURORA-377] - No Veto reason is exposed for a task stuck in PENDING due to host constraints
    * [AURORA-584] - Storage is not READY uncaught exception during getJobSummary
    * [AURORA-596] - SQL constraint violation in DbAttributeStore
    * [AURORA-443] - Aurora admin perform_maintenance_hosts must bail out if no hosts found

## Epic
    * [AURORA-205] - Have a way to query for job uptime metrics providing a basis for future SLA monitoring
    * [AURORA-290] - Expose basic SLA job stats from scheduler

## Story
    * [AURORA-11] - Aurora preemptor should reserve resources feed for PENDING task.
    * [AURORA-10] - Document and script tagging process
    * [AURORA-9] - Maintenance servlet should expose information about DRAINED hosts
    * [AURORA-8] - Support using Mesos binaries during vagrant up
    * [AURORA-23] - Transition tasks through the recently-introduced THROTTLED state
    * [AURORA-38] - Deprecate CronCollisionPolicy.RUN_OVERLAP
    * [AURORA-140] - Add getInfo API call, deprecate getVersion
    * [AURORA-132] - Restore cron functionality with license-compatible library
    * [AURORA-222] - Updater should run health checks in parallel
    * [AURORA-193] - Automate license header checks
    * [AURORA-191] - Holistic improvement of Java + Gradle + Thrift development workflow
    * [AURORA-184] - Implicit scheduling constraints should be configurable
    * [AURORA-153] - Add indices to OfferQueueImpl
    * [AURORA-152] - Break down free slots metrics into dedicated and shared
    * [AURORA-139] - Scheduling performance could be vastly improved by caching job information
    * [AURORA-149] - python code should have a checkstyle run as part of the build
    * [AURORA-201] - aurora needs a "really, really kill this task" command
    * [AURORA-200] - set_quota should die if given invalid arguments
    * [AURORA-104] - Create a tool that, given an aurora config file, creates a diagram of an application architecture
    * [AURORA-108] - make set_quota in aurora_admin require explicit units
    * [AURORA-78] - automate and enforce release workflow
    * [AURORA-77] - Update build-support/release/tag-release to create dev snapshots as well
    * [AURORA-58] - Consider caching hashCode in thrift wrapper classes
    * [AURORA-49] - KEYS file for signed releases
    * [AURORA-44] - aurora python code should be exported as publishable sdists
    * [AURORA-122] - Introduce a task store secondary index on slave host
    * [AURORA-71] - Generated aurora artifacts must be suffixed with "incubating"
    * [AURORA-242] - Install a SecurityManager to require unit test diligence
    * [AURORA-228] - Consider using gradle javascript plugin
    * [AURORA-240] - Upgrade to mesos 0.17.0
    * [AURORA-236] - Document "Run until success" semantics for adhoc jobs
    * [AURORA-251] - Upgrade protobuf to 2.5.0
    * [AURORA-214] - Launch GC executor tasks asynchronously
    * [AURORA-218] - Aurora Analytics
    * [AURORA-219] - Aurora/Mesos Client Generalization
    * [AURORA-225] - Shell scripts in checkout should use an absolute path
    * [AURORA-224] - Make health checking more configurable in updater
    * [AURORA-261] - on sandbox garbage collection, just de-link the slave HREF on the finished tasks page
    * [AURORA-260] - Improve safety of killing a job
    * [AURORA-280] - Improve organization of the job page
    * [AURORA-255] - Tasks in a job should schedule faster
    * [AURORA-299] - Improve vagrant setup
    * [AURORA-552] - License headers missing on files
    * [AURORA-491] - Scheduler failing in vagrant environment
    * [AURORA-482] - Frequent transient errors running python tests
    * [AURORA-470] - Tasks get stuck in THROTTLED state on restart or leader change
    * [AURORA-406] - SLA stats should not be in internal TSDB
    * [AURORA-322] - upgrade mesos egg to 0.18.0
    * [AURORA-318] - Improve documentation and unit testing for Host Maintenance API
    * [AURORA-388] - Update changelog to only pickup fixed issues 
    * [AURORA-384] - Remove cron jobs table from /role page
    * [AURORA-379] - Deprecate Identity struct in api.thrift
    * [AURORA-370] - The killTasks RPC should not wait until tasks are killed
    * [AURORA-392] - Add apache- to source distribution name
    * [AURORA-332] - Extend the client plugin architecture to support pre-dispatch and cleanup operations
    * [AURORA-331] - tainted data isn't properly escaped in HTML templates
    * [AURORA-348] - Add machine maintenance auth capability
    * [AURORA-347] - CLI should surface information about locks
    * [AURORA-346] - UI should surface information about locks
    * [AURORA-342] - Remove the non-HTTP thrift port
    * [AURORA-361] - Remove health checking from the client
    * [AURORA-323] - Add ability to merge in github pull requests similar to rbt
    * [AURORA-449] - Upgrade to Bootstrap 3
    * [AURORA-438] - Turn on JSHint check during build
    * [AURORA-569] - Current leading scheduler should be exposed via an endpoint
    * [AURORA-562] - Expose a stat for count of LOST status updates for GC executor tasks
    * [AURORA-565] - update top level readme with instructions on bootstrapping and running initial test
    * [AURORA-211] - Scheduler UI should redirect to the current leader
    * [AURORA-350] - Parallelize updates to speed up deploys
    * [AURORA-593] - Enable jenkins jacoco plugin
    * [AURORA-574] - Add documentation for HTTP health checking and graceful task exit
    * [AURORA-594] - RC1 files missing Apache license headers
    * [AURORA-590] - Release scripts branch and CHANGELOG urls are wrong in generated email template
    * [AURORA-599] - Reset changelog and version for 0.5.0 rc2

## Sub-task
    * [AURORA-521] - Add pagination to getTasksStatus
    * [AURORA-519] - Add endpoint for configuration summary
    * [AURORA-481] - Add big job to local test fixture
    * [AURORA-463] - Use asynchronous transport in Thrift.js client
    * [AURORA-500] - Remove GZipFilter

## Task
    * [AURORA-7] - Setup jenkins job
    * [AURORA-2] - Import Aurora into Apache Git
    * [AURORA-1] - Initial website content for import
    * [AURORA-4] - Transfer Github stars and watchers
    * [AURORA-36] - Remove scheduler_list_job_updates verb from aurora_admin
    * [AURORA-33] - Show Job Summary by role on home page
    * [AURORA-32] - Replace old scheduler home page with the new page
    * [AURORA-22] - Update website for new reviews mailing list
    * [AURORA-30] - Clean up and coalesce 3rdparty python deps
    * [AURORA-39] - Create a page that lists jobs for a role
    * [AURORA-17] - Use promises for calling thrift end points 
    * [AURORA-18] - Show an error message when the thrift call to scheduler fails
    * [AURORA-220] - Plugin framework for clientv2
    * [AURORA-192] - Switch to client quota checks
    * [AURORA-186] - rename thermos_executor to aurora_executor
    * [AURORA-183] - Upgrade twitter.common.python to 0.3.0
    * [AURORA-178] - Log/observe snapshot operations
    * [AURORA-158] - replace TaskConfig.packages with TaskConfig.metadata
    * [AURORA-157] - Reorder python imports to be consistent
    * [AURORA-146] - Destroy log file using git clean
    * [AURORA-144] - Dynamic backoff to task timeout value
    * [AURORA-141] - Deprecate getVersion API
    * [AURORA-148] - Jobs should be able to set an UpdateConfig with abort_on_failure = True
    * [AURORA-198] - Add ability to specify shards in DistributedCommandRunner
    * [AURORA-209] - Add sla_probe_hosts command into aurora_admin client
    * [AURORA-207] - Add get_job_uptime command into aurora client
    * [AURORA-208] - Add sla_list_safe_domain command into aurora_admin client
    * [AURORA-206] - Add get_task_up_count command into aurora client
    * [AURORA-203] - Implement help system for clientv2 bridge framework.
    * [AURORA-202] - Improve "help" system for noun/verb framework.
    * [AURORA-106] - Create a new task store with a hierarchical structure for storing tasks.
    * [AURORA-82] - Introduce a DRAINING task state into the scheduler state machine
    * [AURORA-81] - Make clientv2 deployable.
    * [AURORA-80] - Add end-to-end test of client v2, client v1, and bridged client.
    * [AURORA-79] - Move deployment into clientv2
    * [AURORA-117] - Scheduler performance issues with very large jobs
    * [AURORA-116] - Improve efficiency of saving host attributes (or avoid saving host attributes)
    * [AURORA-115] - Update to mesos-0.15
    * [AURORA-107] - Add "quota" noun to client
    * [AURORA-76] - Implement bridging for clientv2 command line framework.
    * [AURORA-75] - Upgrade dependencies coming from twitter commons
    * [AURORA-73] - Break out storage latency and log latency into percentiles
    * [AURORA-54] - Create remaining clientv2 job verbs
    * [AURORA-53] - Add update command for clientv2
    * [AURORA-48] - Docs should be named in an SEO-friendly way and rendered on the website
    * [AURORA-47] - Initial import of Aurora documentation
    * [AURORA-42] - Modify client side code to distinguish between api objects
    * [AURORA-63] - TaskAssignerImpl lacks test coverage
    * [AURORA-62] - Improve test coverage for CronJobManager
    * [AURORA-129] - Create a vagrant "test cluster" config for multi-slave end-to-end tests.
    * [AURORA-128] - Make aurora ssh and aurora run generate better error messages.
    * [AURORA-125] - Fix clusters.json generated for vagrant, so that it contains the traits needed for 'aurora run' and 'aurora ssh'
    * [AURORA-124] - Implement a "task" noun for client v2
    * [AURORA-70] - Replace SchedulerzJob page with the Angular UI job page.
    * [AURORA-69] - Implement a page to list jobs for a role/environment
    * [AURORA-68] - Add a thrift API to get quota consumption info for a given role and environment
    * [AURORA-67] - Add a thrift API to get job summary for a role and environment
    * [AURORA-66] - Replace SchedulerRole servlet with UI client pages.
    * [AURORA-65] - Add a thrift API to get quota information for a role
    * [AURORA-64] - Add a thrift API to get job summary for a role
    * [AURORA-246] - update aurora client to use the new getQuota API
    * [AURORA-239] - Admin sla command perf improvements
    * [AURORA-235] - Add JobKey set into TaskQuery
    * [AURORA-234] - Replace HTML tables in docs with markdown
    * [AURORA-233] - Improve performance of sla_list_safe_domain
    * [AURORA-232] - TaskQuery needs to support a set of slaveHosts
    * [AURORA-292] - Create a new endpoint for SLA stats
    * [AURORA-293] - Implement SLA processing core
    * [AURORA-291] - Preserve ancestor details to improve accuracy of SLA calculations
    * [AURORA-226] - Create packaging target for clientv2
    * [AURORA-283] - Add batchsize to client v2 kill, killall, restart, update.
    * [AURORA-281] - Create a page that lists the jobs for a specific role/env
    * [AURORA-277] - Add next cron run info to getJobSummary API
    * [AURORA-276] - Add logging hooks to clientv2
    * [AURORA-263] - Support a min guaranteed task history retention period
    * [AURORA-253] - Add clientv2 design doc to the apache repos
    * [AURORA-287] - Aurora admin sla_list_safe_domain must ignore non prod jobs
    * [AURORA-286] - Draft proposal to refactor in-memory storage to use relational database
    * [AURORA-272] - Change job uptime baseline from STARTING to RUNNING
    * [AURORA-270] - Command hooks for clientv2
    * [AURORA-269] - Add a way to configure built-in "mandatory" hooks
    * [AURORA-268] - Implement instance descriptor syntax to all appropriate commands.
    * [AURORA-266] - Make a clientv2 version of the end-to-end test
    * [AURORA-298] - Update all dependencies coming from twitter commons and upgrade to guava 16
    * [AURORA-533] - killTasks rpc should return a message indicating if the tasks were killed
    * [AURORA-539] - Create a getTaskStatusLight RPC
    * [AURORA-528] - Document available SLA metrics
    * [AURORA-531] - the aurora client should use requests for its thrift transport
    * [AURORA-508] - Fix ugliness in aurora help
    * [AURORA-516] - Increase maximum instances/job in aurora scheduler
    * [AURORA-484] - Add a "developing aurora client" document.
    * [AURORA-479] - Drop restart_threshold > watch_secs validation in UpdateConfig
    * [AURORA-461] - Modify API return types and values to allow client logging.
    * [AURORA-505] - Add a target for a standalone clientv2
    * [AURORA-496] - Modify config binding helper registration in clientv2
    * [AURORA-407] - Implement clientv2 "cron" noun.
    * [AURORA-404] - Validate values between UpdateConfig and HealthCheckConfig
    * [AURORA-314] - create annotated tag for 0.5.0
    * [AURORA-403] - Add a clientv2 command to list the jobs defined in a config file.
    * [AURORA-376] - Change default config values to account for executor health checks
    * [AURORA-390] - UI should be able to query any scheduler backend
    * [AURORA-386] - Always show resource consumption table.
    * [AURORA-381] - Add a Navbar with Aurora logo on every page
    * [AURORA-378] - Add config grouping visualisation to job page
    * [AURORA-396] - scheduler internal UI wraps fields unnecessarily
    * [AURORA-329] - Restrict SLA commands to use only RUNNING tasks for calculating uptime
    * [AURORA-335] - H2-backed implementation of LockStore
    * [AURORA-345] - killTasks should not fail with "No jobs to kill" error
    * [AURORA-341] - Create KEYS file under https://dist.apache.org/repos/dist/dev/incubator/aurora
    * [AURORA-352] - Exclude tasks in PENDING status from task summary on Job page
    * [AURORA-356] - Add batchsize to clientv1 implementations of kill & killall
    * [AURORA-417] - Add API calls needed for new client cron commands
    * [AURORA-446] - Remove --groups_per_batch option from the perform_maintenace_hosts
    * [AURORA-445] - Admin perform_maintenance_hosts to check job SLA before draining
    * [AURORA-441] - Add grouping option into admin SLA commands
    * [AURORA-428] - Allow project override in list-missing-shipits script
    * [AURORA-477] - Modify clientv2 commands to always log messages returned by the scheduler
    * [AURORA-305] - Admin sla commands should support min_instance_count option
    * [AURORA-548] - scheduler should always show tasks_lost_rack_XXX metrics
    * [AURORA-432] - Allow user-defined variables for custom shorthands in client
    * [AURORA-430] - Support common command shorthands
    * [AURORA-542] - perform_maintenance_hosts should drain hosts that passed SLA check
    * [AURORA-433] - Write a design doc describing the aurora shorthands and init files.
    * [AURORA-421] - H2-backed implementation of QuotaStore
    * [AURORA-465] - Update scheduler deployment documentation to remove mention of dedicated thrift port
    * [AURORA-431] - Support configurable defaults using init files.
    * [AURORA-435] - Chunk the responses of getTasksStatus
    * [AURORA-555] - H2-backed implementation of SchedulerStore
    * [AURORA-576] - Define a thrift API for client operations.
    * [AURORA-553] - Switch to getTasksWithoutConfig RPC on the client where applicable
    * [AURORA-567] - Have client commands that load config files log the contents of the loaded config.
    * [AURORA-557] - H2-backed implementation of AttributeStore



