Mark Chu-Carroll created AURORA-520:
---------------------------------------

             Summary: Update "aurora job diff"
                 Key: AURORA-520
                 URL: https://issues.apache.org/jira/browse/AURORA-520
             Project: Aurora
          Issue Type: Task
          Components: Client
            Reporter: Mark Chu-Carroll


Users complain because the "aurora job diff" command doesn't work the way 
they'd like it to. In its current form, it's got two major problems.

(1) It reports spurious differences between running jobs and local 
configurations, due to automatically filled fields that shouldn't be part of 
the comparison. For example, a job config specifies who created using an 
Identity record, which has two fields: the rolename running the job, and the 
username of the person who ran the command. For comparing live jobs against 
local configs, that's irrelevant.

(2) The diffs are very hard to read. Diffs are generated by downloading the 
running task configs for a job, and writing them to the disk in json; then 
uploading the local config, getting *it* converted to thrift, and writing that 
to the disk in json, and then running the Unix diff command on the two json 
files.

Unix diff isn't the most pleasant thing to read under the best of 
circumstances. But making matters worse, the entire json format of the files 
being diffed is unfamiliar to users! So they're looking at a hard-to-read diff 
syntax ranging over an unfamiliar data syntax.

To fix this, I'd like to replace the use of Unix diff. The json records for the 
configs are semantically just trees. Writing a comparison function that 
compares corresponding trees is pretty easy, and can generate *much* better 
diffs. 

An example of the diff to be generated by this code would be something like the 
following - assuming that the local config increases the number of instances 
from 2 to 3, and the CPU request from 2 to 4:

{noformat}
Local config has a different number of tasks: 3 local vs 2 running
Task diffs found in instance 1:
    Field 'numCpus' is '4' local, but '2' remote
2 total diff(s) found
{noformat}




--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to