Cristopher Ewing created AVRO-2906:
--------------------------------------

             Summary: Replace recursive validation with traversal-based 
solution for Python avro
                 Key: AVRO-2906
                 URL: https://issues.apache.org/jira/browse/AVRO-2906
             Project: Apache Avro
          Issue Type: Improvement
          Components: python
         Environment: [github pr|[https://github.com/apache/avro/pull/936]]
            Reporter: Cristopher Ewing


The existing validation scheme for the Python implementation of avro is 
recursive.  This is problematic in Python because language support for 
recursion is not great, and because for more deeply nested schemas, recursion 
is inefficient.  Another issue with the current scheme is that error reporting 
for validation problems is generic. Unless a global variable in code is changed 
to allow errors for sub-schemas to be reported directly, the only report one 
gets is an exception that says the entire schema is invalid, which is not 
particularly useful when hunting bugs in serializing very large schemas.

My proposal is to replace this existing validation approach with a new approach 
that uses breadth-first traversal of the schema for validation.  The approach 
solves the inefficiencies of recursion, and at the same time, allows for errors 
to be reported for the exact spot in the over-all schema where they happened.

My implementation, in this PR in github



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to