[
https://issues.apache.org/jira/browse/AVRO-2906?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17180838#comment-17180838
]
Hudson commented on AVRO-2906:
------------------------------
SUCCESS: Integrated in Jenkins build AvroJava #928 (See
[https://builds.apache.org/job/AvroJava/928/])
AVRO-2906: Traversal validation (#936) (github:
[https://github.com/apache/avro/commit/efb12314b5acfea075a533368441c0f5a3b844d4])
* (edit) lang/py/avro/io.py
* (edit) lang/py/avro/schema.py
> 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
> Priority: Major
>
> 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|[https://github.com/apache/avro/pull/936]] also moves validation from
> a mapping of type/logical_type to lambda functions into a validate method on
> each schema type, ensuring that a schema is responsible for validating
> itself.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)