Aurora 0.19.1
--------------------------------------------------------------------------------
## Bug
    * [AURORA-1962] - Incorrect parsing of empty strings into list command line options


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



