Prettify the json dumped during exceptions while validating a writer/reader 
schema
----------------------------------------------------------------------------------

                 Key: AVRO-642
                 URL: https://issues.apache.org/jira/browse/AVRO-642
             Project: Avro
          Issue Type: Improvement
          Components: java, python
    Affects Versions: 1.4.0
         Environment: Avro-Trunk
            Reporter: Harsh J Chouraria
            Assignee: Harsh J Chouraria
            Priority: Minor
             Fix For: 1.4.0
         Attachments: avro.java.schema.pretty.r1.diff, 
avro.py.schema.pretty.r1.diff

Right now the exception that's thrown when a reader and written schema don't 
match (while reading a file), looks like this:

{noformat}
Found 
{"type":"record","name":"Test","fields":[{"name":"stringField","type":"string"},{"name":"longField","type":"long"}]},
 expecting 
{"type":"record","name":"Test1","fields":[{"name":"stringField","type":"string"},{"name":"longField","type":"long"}]}
{noformat}

While this is perfectly okay for small schema with a few fields, it gets hard 
to debug for complex and large ones.

The attached patch changes the exception message to look like:
{noformat}
Found {
  "type" : "record",
  "name" : "Test",
  "fields" : [ {
    "name" : "stringField",
    "type" : "string"
  }, {
    "name" : "longField",
    "type" : "long"
  } ]
}, expecting {
  "type" : "record",
  "name" : "Test1",
  "fields" : [ {
    "name" : "stringField",
    "type" : "string"
  }, {
    "name" : "longField",
    "type" : "long"
  } ]
}
{noformat}

P.s. Ideally a diff-like message would help too, but its mileage may vary. I 
guess with the pretty output printed, a user may easily do a diff (since they 
now have newlines), so us providing this is not _really_ needed.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to