Do we have some example tests that we can make more thorough so they will be reasonably exhaustive?
On Mon, Jan 2, 2023 at 1:54 PM Reuven Lax <re...@google.com> wrote: > Be very careful with the auto schema stuff around Avro. These classes > dynamically inspect Avro-generated classes (to codegen schema accessors) so > it will be easy to break this in a way that is not seen at compile time. > > On Mon, Jan 2, 2023 at 12:17 PM Alexey Romanenko <aromanenko....@gmail.com> > wrote: > >> Here is the recent update on the progress for this topic. >> >> After receiving a feedback on the design document [1] presented to >> community before and having the several discussions after (many thanks for >> this!), it was decided to take an “*option 4*” (*“Move Avro from “core” >> to generic Avro extensions using multiple Avro version specific adapters to >> handle breaking changes”*) as a way to move forward. >> >> We created an umbrella issue to track the progress [2] and the* first >> step* (“*Create Avro extension for Java SDK*”) of this [3] is already >> finished and merged. This new created extension (“ >> *sdks/java/extensions/avro/*") replicates the same Avro support >> behaviour as it's currently implemented in Java SDK “*core*”. It >> required almost no changes for the current user API (only relaxation of >> access modifiers for several class members and methods to provide an access >> from other packages to them), so it should *not* introduce any potential >> breaking changes for users, especially if they still use the current Beam >> Avro's version (1.8.2). >> >> The *next step* will be to switch all Beam Java modules to use the new >> Avro extension instead of using the “core” Avro classes. Again, we don’t >> expect any user API breaking changes for this step. >> >> *Note*: As a price for smooth and not breakable transition, we have to >> support two equal versions of Beam Avro's code (in “*core*" and in “ >> *extensions/avro*”) until the old code will be deprecated (it’s expected >> to be the *third step*). So, till this, please apply your Java SDK >> Avro-related changes (if any) in two places to keep them in sync. >> >> >> Also, please, share any of your feedback, questions, ideas or concerns on >> this topic. >> >> >> [1] >> https://docs.google.com/document/d/1tKIyTk_-HhkmVuJsxvWP5eTELESpCBe_Vmb1nJ3Ia34/edit?usp=sharing >> [2] https://github.com/apache/beam/issues/24292 >> [3] https://github.com/apache/beam/issues/24293 >> >> — >> Alexey >> >> >> >> On 18 Nov 2022, at 15:56, Alexey Romanenko <aromanenko....@gmail.com> >> wrote: >> >> Since there are no principal objections against the proposed option 2 >> (extract Avro-related code from “core” to Avro extension but keep it in >> “core” for some time because of transition period), then we will try to >> move forward and take this path. >> >> I’m pretty sure that we will face some hidden issues while working on >> this, so I’ll keep you posted =) >> >> — >> Alexey >> >> On 11 Nov 2022, at 18:05, Austin Bennett <aus...@apache.org> wrote: >> >> @Moritz: I *think* should be fine, and don't have anything specific to >> offer for what might go wrong throughout the process. :-) :shrug: >> >> >> >> On Fri, Nov 11, 2022 at 2:07 AM Moritz Mack <mm...@talend.com> wrote: >> >>> Thanks a lot for the feedback so far! I can only second Alexey. It was >>> painful to come to realize that the only feasible option seems to be >>> copying a lot of code during the transition phase. >>> >>> For that reason, it will be critical to be disciplined about the removal >>> of the to-be deprecated code in core and, ahead of time, agree on when to >>> remove it again. Any thought on how long the transition phase should be? >>> >>> >>> >>> *I am concerned of what could go wrong for users in the >>> in-between/transition state while more slowly transitioning avro to >>> extension.* >>> >>> >>> >>> @Austin Do you have any specific concern in mind here? >>> >>> To minimize this risk, we propose that all APIs should be kept as is to >>> make the migration as easy as possible and kick off with the Avro version >>> used in core. The only thing that changes will be package names. >>> >>> >>> >>> / Moritz >>> >>> >>> >>> On 10.11.22, 22:46, "Kenneth Knowles" <k...@apache.org> wrote: >>> >>> >>> >>> Thank you for writing this document. It really helps to understand the >>> options. I agree that option 2 (make a new extension and deprecate from >>> core) seems best. I think +Reuven Lax might have the most context on any >>> technical issue we will >>> >>> Thank you for writing this document. It really helps to understand the >>> options. I agree that option 2 (make a new extension and deprecate from >>> core) seems best. I think +Reuven Lax <re...@google.com> might have the >>> most context on any technical issue we will encounter around schema codegen. >>> >>> >>> >>> Kenn >>> >>> >>> >>> On Thu, Nov 10, 2022 at 7:24 AM Alexey Romanenko < >>> aromanenko....@gmail.com> wrote: >>> >>> Personally, I think that keeping two mostly identical versions of >>> Avro-related code in two different places (“core" and "extension") is rathe >>> bad practice, especially, in case of need to fix some issues there - >>> though, it’s a very low risk there since this code is quite mature and it’s >>> not touched often. On the other hand, it should give time for users >>> (several Beam releases) to update their code and use Avro from extension >>> artifact instead of core. >>> >>> >>> >>> Though, if we accept that this breaking change at compile time is >>> allowable, then this process of transition should be much faster and can be >>> performed within only one Beam release. Our main concern here is runtime >>> breaking changes that we can miss but *must* be avoided by all means. >>> >>> >>> >>> — >>> >>> Alexey >>> >>> >>> >>> On 9 Nov 2022, at 18:47, Austin Bennett <aus...@apache.org> wrote: >>> >>> >>> >>> Being tied to a specific version of a dependency, and esp. one that is >>> not-[actually-long-term]critical, sounds like a problem. It doesn't seem >>> like Avro needs to be in core. I am in favor of about any path someone >>> wants to address towards removing that from core [ *#2 in the design >>> doc seems reasonable* ]. >>> >>> >>> >>> Naturally, having ways to more easily change versions [esp. to remediate >>> CVEs, but for any specific reason ], seems very valuable. >>> >>> >>> >>> It reads as a significant problem; I wouldn't take issue with a breaking >>> [ compile time ] change, if that got things addressed and somewhat >>> straightforwardly - *I am concerned of what could go wrong for users in >>> the in-between/transition state while more slowly transitioning avro to >>> extension.* >>> >>> >>> >>> On Wed, Nov 9, 2022 at 5:43 AM Alexey Romanenko < >>> aromanenko....@gmail.com> wrote: >>> >>> Any thoughts on this? For now, we'd need to decide which path finally to >>> take to move forward. >>> >>> >>> >>> Thanks in advance! >>> >>> >>> >>> — >>> >>> Alexey >>> >>> >>> >>> On 4 Nov 2022, at 16:44, Alexey Romanenko <aromanenko....@gmail.com> >>> wrote: >>> >>> >>> >>> Hi all, >>> >>> >>> >>> Following-up an Avro dependency update discussion [1] that showed a lot >>> of uncertainties to move forward, Moritz and I decided to create a design >>> document [2] with potential options, that we believe, can be considered and >>> used further. Unfortunately, all solutions lead to breaking changes in some >>> way, though, for some of them the negative effect can be reduced by >>> preparing users for this in advance and make this transition smoother. >>> >>> >>> >>> Please, take a look on this doc and leave your comments and opinions - >>> your feedback is very welcomed! >>> >>> >>> >>> [1] https://lists.apache.org/thread/mz8hvz8dwhd0tzmv2lyobhlz7gtg4gq7 >>> <https://urldefense.com/v3/__https:/lists.apache.org/thread/mz8hvz8dwhd0tzmv2lyobhlz7gtg4gq7__;!!CiXD_PY!ThEMK5roxk1uO6Fpjmb3STnoNeOVFmjhytcQpHAT6WFXjpRioz7nJPSvMRRHwUXJovjHbRvmvA$> >>> >>> [2] >>> https://docs.google.com/document/d/1tKIyTk_-HhkmVuJsxvWP5eTELESpCBe_Vmb1nJ3Ia34/edit?usp=sharing >>> <https://urldefense.com/v3/__https:/docs.google.com/document/d/1tKIyTk_-HhkmVuJsxvWP5eTELESpCBe_Vmb1nJ3Ia34/edit?usp=sharing__;!!CiXD_PY!ThEMK5roxk1uO6Fpjmb3STnoNeOVFmjhytcQpHAT6WFXjpRioz7nJPSvMRRHwUXJoviZ8R6YKA$> >>> >>> >>> >>> — >>> >>> Alexey >>> >>> >>> >>> >>> >>> *As a recipient of an email from Talend, your contact personal data will >>> be on our systems. Please see our privacy notice. >>> <https://www.talend.com/privacy/>* >>> >>> >>> >> >>