Github user StephanEwen commented on the issue:

    https://github.com/apache/flink/pull/4943
  
    Thanks for the review, addressing the comments.
    
    I found the problem with the backwards compatibility: It is the Avro 
version upgrade.
    Avro types generated with Avro 1.7.7 (Flink 1.3) and serialized as PoJos 
don't work when read into PoJos generated from the same Schema in Avro 1.8.2 
(Flink 1.4). The Avro class structure changed, breaking the Pojo compatibility.
    
    Avro is binary format compatible, but not class compatible across versions, 
it seems. Makes sense, for a serialization format.
    
    Now, this brings up a few issues:
      - Users that use generated Avro types from earlier Avro versions would be 
forced to upgrade (re-create) these classes with the new Avro version, if they 
upgrade Flink and it pulls in a newer Avro version. We might solve that by 
removing avro from `flink-dist` and pushing it into "user code space", where 
users can dependency manage the Avro version they want and need.
    
      - In light of that, actually retaining Avro/Pojo backwards compatibility 
seems super complicated. I would almost suggest to not do that, because it 
seems it will not be transparent for users anyways (with Avro itself breaking 
compatibility).


---

Reply via email to