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. >
