Sijie.
let me write an example.

if you have this Pojo class
class Pojo {
    String foo;
    String bar;
}

if you use Schema.AVRO(Pojo.class)

with Avro 1.9 you will probably see a Schema with the fields in this
order: foo, bar
with Avro 1.10 you will see exactly the schema with bar, foo. (in
alphabetical order)

This is a potential problem because the same Java code that used to
write/read the "foo,bar" schema after upgrading to the new version of
Pulsar (with Avro 1.10) it will start writing with a different schema
("bar,foo")
and those two schemas are not compatible to each other. Because you
cannot change the order of fields.

We have tests that verify that Schema.AVRO(Pojo.class) produces a
schema in the expected order of fields, and they are failing.
I had started to fix all of the tests (the fix is trivial), but as far
as I was fixing them I realized that this change may cause unexpected
problems to users.

you can see the errors here on CI on the Avro upgrade patch
https://github.com/apache/pulsar/pull/9898/checks?check_run_id=2106075182

I have tried to reproduce a problem with real clients but I am not
able to produce an error.

I am missing some part of the story, do you have an explanation ?

Enrico


Il giorno mar 16 mar 2021 alle ore 02:13 Sijie Guo
<guosi...@gmail.com> ha scritto:
>
> I don't quite understand the compatibility issue here. Looking into
> AVRO-2579, it seems that only the order of fields returned will be
> different. We don't depend on the ordering for the compatibility checks.
>
> Can you explain more about the compatibility issue you refer to?
>
> Thanks,
> Sijie
>
> On Mon, Mar 15, 2021 at 3:52 AM Enrico Olivelli <eolive...@gmail.com> wrote:
>
> > Hello,
> > I am working on the upgrade of Avro from 1.9 to 1.10.1.
> >
> > I noticed a bad behaviour change about Schema.AVRO(Pojo.class).
> > Basically the new Avro version creates the Schema by sorting the
> > fields in alphabetical order and this is an incompatible schema
> > change.
> >
> > More details here
> > https://github.com/apache/pulsar/pull/9898
> >
> > and here
> > https://issues.apache.org/jira/browse/AVRO-2579
> >
> > Am I missing something?
> >
> > Thoughts ?
> >
> > Enrico
> >

Reply via email to