Aurora 0.13.0
--------------------------------------------------------------------------------
## Story
    * [AURORA-1653] - Add a way to get the running version of aurora in the UI

## Task
    * [AURORA-1493] - create ELB-friendly endpoint to detect leading scheduler


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



