I recently thought about the same idea. Use case for us would be to scale a job 0 instances. While this sounds useless at first, it can be quite powerful when trying to implement a feature like socket activation.
________________________________________ From: Maxim Khutornenko <ma...@apache.org> Sent: Wednesday, June 29, 2016 22:43 To: dev@aurora.apache.org Subject: [PROPOSAL] Job as a first-class citizen TL;DR - I am proposing we store and maintain job-level data (JobConfiguration [1]) instead of relying on storing everything in a TaskConfig [2]. Aurora storage currently does not have a concept of a "job" when it comes to services and adhoc jobs. Instead, it relies on a collection of TaskConfigs that represent a view of what the job state is. This is in stark contrast to cron jobs, which are already represented by the JobConfiguration struct. This lack of representation limits our ability to deliver richer features and may result in suboptimal design and storage utilization. Specifically, the following is currently impossible: - storing normalized job-level data without repeating it in every task (e.g. contactEmail, isService); - maintaining job-level data that may be different for every instance (SLA requirements, topology specs for stateful services and etc.); - knowing what the job instance count is without pulling all ACTIVE tasks and iterating over them. To address the above, I propose we start treating Aurora job as a tangible entity in the storage and specifically use JobConfiguration wherever applicable. As a welcome side effect, this will let us: - allow instantaneous job updates when job-level fields are updated (e.g. those that don't require instance restarts); - finally get rid of the deprecated Identity struct [3]; - reduce or completely eliminate DB garbage collection of abandoned job keys [4] Any thoughts, suggestions, objections? Thanks, Maxim [1] - https://github.com/apache/aurora/blob/4e28b9c8b29b66f2f10b0a6cafdec1f8e2c1bd7b/api/src/main/thrift/org/apache/aurora/gen/api.thrift#L316-L338 [2] - https://github.com/apache/aurora/blob/4e28b9c8b29b66f2f10b0a6cafdec1f8e2c1bd7b/api/src/main/thrift/org/apache/aurora/gen/api.thrift#L240-L284 [3] - https://issues.apache.org/jira/browse/AURORA-84 [4] - RowGarbageCollector: https://github.com/apache/aurora/blob/b24619b28c4dbb35188871bacd0091a9e01218e3/src/main/java/org/apache/aurora/scheduler/storage/db/RowGarbageCollector.java