First, this creates a data incompatibility, not just an API
incompatibility, so it should not be permitted in 1.9.0.  Apps that worked,
even when updated for API changes, will not be able to read data they could
before they upgraded.

Second, folks might actually use this feature in reasonable ways.  For
example, Avro provides a recursive schema for arbitrary Json data is in the
class org.apache.avro.data.Json.  This class is used by at least some code
on Github.

https://github.com/search?q=%22org.apache.avro.data.Json%22&type=Code

Many of these are probably dead code, or forks of Avro itself, but a few
appear to be valid uses.

Does anyone reading this list use this feature?

Thanks,

Doug

On Fri, Nov 30, 2018 at 10:22 AM Raymie Stata <[email protected]> wrote:

> I understand we've been willing to introduce backward-incompatible API
> changes (not file-format changes) into minor release versions.  If so,
> here's an idea for consideration:
>
> Let's eliminate recursive records from Avro 1.9.x.  Recursion
> introduces a _lot_ of complexity into many parts of the Avro code
> base.  We could vastly simplify the code base, and probably speed
> things up, by getting rid of this feature.
>
> The specific proposal would be that Avro 1.9.x would refuse to accept
> recursive records, and thus would not be able to read binary files
> written by older versions of Avro.  I haven't heard of anyone actually
> using them, so I don't think this would be a problem.
>

Reply via email to