Re: Beam's Avro 1.8.x dependency

2020-01-17 Thread Elliotte Rusty Harold
I'm not saying it is a best practice. I'm suggesting we should figure
out whether it's a best practice, worst practice, or somewhere in
between and document in which situations it is or is not a good idea.
Up till now I haven't really considered it an alternative to shading
so it seems worth thinking about more deeply.

On Fri, Jan 17, 2020 at 1:35 PM Kenneth Knowles  wrote:
>
>
>
> On Fri, Jan 17, 2020 at 10:21 AM Elliotte Rusty Harold  
> wrote:
>>
>> Thanks. That's a very clear explanation. I should think about how to
>> incorporate that into https://jlbp.dev
>
>
> Might want to give it some time before calling it a best practice. Maybe 
> we'll come to regret it :-). But I'm willing to say it is a better 
> alternative to shading in most cases, with the major exception being 
> generated code (like proto libs) that depend on libraries (like 
> protobuf-java). Ideally, proto compiler would vendor the dep into each 
> generated lib so we don't have to deal with the issue at all. Instead we do 
> it ourselves.
>
> Kenn
>
>>
>>
>>
>> On Fri, Jan 17, 2020 at 12:12 PM Aaron Dixon  wrote:
>> >
>> > @Tomo Suzuki Thanks for looking at this and your thorough analysis// let 
>> > me know if I can help with any regression testing, CRs, or more context 
>> > anything else.
>> >
>> > ---
>> >
>> > @Elliotte I was a little confused at first re: vendoring vs shading but 
>> > here is how I understand it (happy to be corrected if anything I say here 
>> > is a mischaracterization); I tend to over-explain for my own clarity 
>> > fwiw--using Guava as an example:
>> >
>> > With SHADING you have your project (e.g., Beam) depend directly on Guava 
>> > and its public package names. Your build will then compile and link to 
>> > these package names and only after-the-fact [1] rewrite the byte-code to 
>> > rename the guava package. This entails both byte-code rewriting the Guava 
>> > class files (to rename the packages of the Guava code itself) and 
>> > byte-code rewriting all of your project class files that import Guava (to 
>> > change the import to use the new package name).
>> >
>> > With VENDORING you release a renamed Guava ("vendor") JAR and depend on 
>> > that directly from your project. So your project's source code itself 
>> > imports the (repackated)  vendor JAR and depends on the renamed packages 
>> > directly. Your project build then has no need for shading or byte code 
>> > rewriting of its own classes. I see vendoring making it very clear what is 
>> > going on when looking at a project's source code and its dependencies, and 
>> > there are likely other tangible brass-tacks benefits to vendoring besides 
>> > the conceptual clarity over shading.
>> >
>> > [1] You can see that Maven shade:shade goal binds by default to Maven's 
>> > package phase (which is well after after compilation).
>> >
>> > On Fri, Jan 17, 2020 at 9:16 AM Tomo Suzuki  wrote:
>> >>
>> >> Ismaël and I think the short-term solution for Aaron's issue is to
>> >> define Beam's own class for Avro's TimestampConversion. Luckily it's
>> >> the only blocker for Avro 1.9 I found.
>> >> I created a ticket https://issues.apache.org/jira/browse/BEAM-9144 and
>> >> PR https://github.com/apache/beam/pull/10628 .
>> >>
>> >> Regards,
>> >> Tomo
>> >>
>> >> On Fri, Jan 17, 2020 at 7:32 AM Elliotte Rusty Harold
>> >>  wrote:
>> >> >
>> >> > On Thu, Jan 16, 2020 at 7:08 PM Kenneth Knowles  wrote:
>> >> > >
>> >> > > Regarding Google's advice about shading: don't go to a "one version 
>> >> > > rule" monorepo for advice about solving diamond dependencies in the 
>> >> > > wild.
>> >> >
>> >> > FWIW these docs came out of the open source, Github, multirepo, many
>> >> > versions part of Google Cloud, not the mono repo world of google3.
>> >> > Though I will say the more time I spend trying to deal with these
>> >> > issues the more I love the monorepo.
>> >> >
>> >> > > It is a useful description of the pitfalls. We (and Flink before us, 
>> >> > > and likely many more) are already doing something that avoids many of 
>> >> > > them or makes them less likely. Building a separate vendored library 
>> >> > > is simpler and more robust than the "shade during build".
>> >> > >
>> >> >
>> >> > I've only encountered "vendoring" as distinct from shading in Beam.
>> >> > Are there more details about this anywhere? A quick Google search only
>> >> > turned up one Beam doc that pointed to Go docs and a cloud endpoints
>> >> > doc that seemed to use it as a synonym for shading.
>> >> >
>> >> >
>> >> > --
>> >> > Elliotte Rusty Harold
>> >> > elh...@ibiblio.org
>> >>
>> >>
>> >>
>> >> --
>> >> Regards,
>> >> Tomo
>>
>>
>>
>> --
>> Elliotte Rusty Harold
>> elh...@ibiblio.org



-- 
Elliotte Rusty Harold
elh...@ibiblio.org


Re: Beam's Avro 1.8.x dependency

2020-01-17 Thread Kenneth Knowles
On Fri, Jan 17, 2020 at 10:21 AM Elliotte Rusty Harold 
wrote:

> Thanks. That's a very clear explanation. I should think about how to
> incorporate that into https://jlbp.dev


Might want to give it some time before calling it a best practice. Maybe
we'll come to regret it :-). But I'm willing to say it is a better
alternative to shading in most cases, with the major exception being
generated code (like proto libs) that depend on libraries (like
protobuf-java). Ideally, proto compiler would vendor the dep into each
generated lib so we don't have to deal with the issue at all. Instead we do
it ourselves.

Kenn


>
>
> On Fri, Jan 17, 2020 at 12:12 PM Aaron Dixon  wrote:
> >
> > @Tomo Suzuki Thanks for looking at this and your thorough analysis// let
> me know if I can help with any regression testing, CRs, or more context
> anything else.
> >
> > ---
> >
> > @Elliotte I was a little confused at first re: vendoring vs shading but
> here is how I understand it (happy to be corrected if anything I say here
> is a mischaracterization); I tend to over-explain for my own clarity
> fwiw--using Guava as an example:
> >
> > With SHADING you have your project (e.g., Beam) depend directly on Guava
> and its public package names. Your build will then compile and link to
> these package names and only after-the-fact [1] rewrite the byte-code to
> rename the guava package. This entails both byte-code rewriting the Guava
> class files (to rename the packages of the Guava code itself) and byte-code
> rewriting all of your project class files that import Guava (to change the
> import to use the new package name).
> >
> > With VENDORING you release a renamed Guava ("vendor") JAR and depend on
> that directly from your project. So your project's source code itself
> imports the (repackated)  vendor JAR and depends on the renamed packages
> directly. Your project build then has no need for shading or byte code
> rewriting of its own classes. I see vendoring making it very clear what is
> going on when looking at a project's source code and its dependencies, and
> there are likely other tangible brass-tacks benefits to vendoring besides
> the conceptual clarity over shading.
> >
> > [1] You can see that Maven shade:shade goal binds by default to Maven's
> package phase (which is well after after compilation).
> >
> > On Fri, Jan 17, 2020 at 9:16 AM Tomo Suzuki  wrote:
> >>
> >> Ismaël and I think the short-term solution for Aaron's issue is to
> >> define Beam's own class for Avro's TimestampConversion. Luckily it's
> >> the only blocker for Avro 1.9 I found.
> >> I created a ticket https://issues.apache.org/jira/browse/BEAM-9144 and
> >> PR https://github.com/apache/beam/pull/10628 .
> >>
> >> Regards,
> >> Tomo
> >>
> >> On Fri, Jan 17, 2020 at 7:32 AM Elliotte Rusty Harold
> >>  wrote:
> >> >
> >> > On Thu, Jan 16, 2020 at 7:08 PM Kenneth Knowles 
> wrote:
> >> > >
> >> > > Regarding Google's advice about shading: don't go to a "one version
> rule" monorepo for advice about solving diamond dependencies in the wild.
> >> >
> >> > FWIW these docs came out of the open source, Github, multirepo, many
> >> > versions part of Google Cloud, not the mono repo world of google3.
> >> > Though I will say the more time I spend trying to deal with these
> >> > issues the more I love the monorepo.
> >> >
> >> > > It is a useful description of the pitfalls. We (and Flink before
> us, and likely many more) are already doing something that avoids many of
> them or makes them less likely. Building a separate vendored library is
> simpler and more robust than the "shade during build".
> >> > >
> >> >
> >> > I've only encountered "vendoring" as distinct from shading in Beam.
> >> > Are there more details about this anywhere? A quick Google search only
> >> > turned up one Beam doc that pointed to Go docs and a cloud endpoints
> >> > doc that seemed to use it as a synonym for shading.
> >> >
> >> >
> >> > --
> >> > Elliotte Rusty Harold
> >> > elh...@ibiblio.org
> >>
> >>
> >>
> >> --
> >> Regards,
> >> Tomo
>
>
>
> --
> Elliotte Rusty Harold
> elh...@ibiblio.org
>


Re: Beam's Avro 1.8.x dependency

2020-01-17 Thread Elliotte Rusty Harold
Thanks. That's a very clear explanation. I should think about how to
incorporate that into https://jlbp.dev


On Fri, Jan 17, 2020 at 12:12 PM Aaron Dixon  wrote:
>
> @Tomo Suzuki Thanks for looking at this and your thorough analysis// let me 
> know if I can help with any regression testing, CRs, or more context anything 
> else.
>
> ---
>
> @Elliotte I was a little confused at first re: vendoring vs shading but here 
> is how I understand it (happy to be corrected if anything I say here is a 
> mischaracterization); I tend to over-explain for my own clarity fwiw--using 
> Guava as an example:
>
> With SHADING you have your project (e.g., Beam) depend directly on Guava and 
> its public package names. Your build will then compile and link to these 
> package names and only after-the-fact [1] rewrite the byte-code to rename the 
> guava package. This entails both byte-code rewriting the Guava class files 
> (to rename the packages of the Guava code itself) and byte-code rewriting all 
> of your project class files that import Guava (to change the import to use 
> the new package name).
>
> With VENDORING you release a renamed Guava ("vendor") JAR and depend on that 
> directly from your project. So your project's source code itself imports the 
> (repackated)  vendor JAR and depends on the renamed packages directly. Your 
> project build then has no need for shading or byte code rewriting of its own 
> classes. I see vendoring making it very clear what is going on when looking 
> at a project's source code and its dependencies, and there are likely other 
> tangible brass-tacks benefits to vendoring besides the conceptual clarity 
> over shading.
>
> [1] You can see that Maven shade:shade goal binds by default to Maven's 
> package phase (which is well after after compilation).
>
> On Fri, Jan 17, 2020 at 9:16 AM Tomo Suzuki  wrote:
>>
>> Ismaël and I think the short-term solution for Aaron's issue is to
>> define Beam's own class for Avro's TimestampConversion. Luckily it's
>> the only blocker for Avro 1.9 I found.
>> I created a ticket https://issues.apache.org/jira/browse/BEAM-9144 and
>> PR https://github.com/apache/beam/pull/10628 .
>>
>> Regards,
>> Tomo
>>
>> On Fri, Jan 17, 2020 at 7:32 AM Elliotte Rusty Harold
>>  wrote:
>> >
>> > On Thu, Jan 16, 2020 at 7:08 PM Kenneth Knowles  wrote:
>> > >
>> > > Regarding Google's advice about shading: don't go to a "one version 
>> > > rule" monorepo for advice about solving diamond dependencies in the wild.
>> >
>> > FWIW these docs came out of the open source, Github, multirepo, many
>> > versions part of Google Cloud, not the mono repo world of google3.
>> > Though I will say the more time I spend trying to deal with these
>> > issues the more I love the monorepo.
>> >
>> > > It is a useful description of the pitfalls. We (and Flink before us, and 
>> > > likely many more) are already doing something that avoids many of them 
>> > > or makes them less likely. Building a separate vendored library is 
>> > > simpler and more robust than the "shade during build".
>> > >
>> >
>> > I've only encountered "vendoring" as distinct from shading in Beam.
>> > Are there more details about this anywhere? A quick Google search only
>> > turned up one Beam doc that pointed to Go docs and a cloud endpoints
>> > doc that seemed to use it as a synonym for shading.
>> >
>> >
>> > --
>> > Elliotte Rusty Harold
>> > elh...@ibiblio.org
>>
>>
>>
>> --
>> Regards,
>> Tomo



-- 
Elliotte Rusty Harold
elh...@ibiblio.org


Re: Beam's Avro 1.8.x dependency

2020-01-17 Thread Kenneth Knowles
On Fri, Jan 17, 2020 at 9:12 AM Aaron Dixon  wrote:

> @Tomo Suzuki Thanks for looking at this and your thorough analysis// let
> me know if I can help with any regression testing, CRs, or more context
> anything else.
>
> ---
>
> @Elliotte I was a little confused at first re: vendoring vs shading but
> here is how I understand it (happy to be corrected if anything I say here
> is a mischaracterization); I tend to over-explain for my own clarity
> fwiw--using Guava as an example:
>
> With SHADING you have your project (e.g., Beam) depend directly on Guava
> and its public package names. Your build will then compile and link to
> these package names and only after-the-fact [1] rewrite the byte-code to
> rename the guava package. This entails both byte-code rewriting the Guava
> class files (to rename the packages of the Guava code itself) and byte-code
> rewriting all of your project class files that import Guava (to change the
> import to use the new package name).
>
> With VENDORING you release a renamed Guava ("vendor") JAR and depend on
> that directly from your project. So your project's source code itself
> imports the (repackated)  vendor JAR and depends on the
> renamed packages directly. Your project build then has no need for shading
> or byte code rewriting of its own classes. I see vendoring making it very
> clear what is going on when looking at a project's source code and its
> dependencies, and there are likely other tangible brass-tacks benefits to
> vendoring besides the conceptual clarity over shading.
>

Exactly. Vendoring can also refer to just making your own copy of a
library. The conceptual clarity extends beyond humans into clarity for
tooling. IDEs understand it better, and it is much easier to manage builds.
And of course it avoids jar bloat and speeds builds. It isn't perfect. You
lose interop.

Kenn



> [1] You can see that Maven shade:shade goal binds by default to Maven's
> package phase (which is well after after compilation).
>
> On Fri, Jan 17, 2020 at 9:16 AM Tomo Suzuki  wrote:
>
>> Ismaël and I think the short-term solution for Aaron's issue is to
>> define Beam's own class for Avro's TimestampConversion. Luckily it's
>> the only blocker for Avro 1.9 I found.
>> I created a ticket https://issues.apache.org/jira/browse/BEAM-9144 and
>> PR https://github.com/apache/beam/pull/10628 .
>>
>> Regards,
>> Tomo
>>
>> On Fri, Jan 17, 2020 at 7:32 AM Elliotte Rusty Harold
>>  wrote:
>> >
>> > On Thu, Jan 16, 2020 at 7:08 PM Kenneth Knowles 
>> wrote:
>> > >
>> > > Regarding Google's advice about shading: don't go to a "one version
>> rule" monorepo for advice about solving diamond dependencies in the wild.
>> >
>> > FWIW these docs came out of the open source, Github, multirepo, many
>> > versions part of Google Cloud, not the mono repo world of google3.
>> > Though I will say the more time I spend trying to deal with these
>> > issues the more I love the monorepo.
>> >
>> > > It is a useful description of the pitfalls. We (and Flink before us,
>> and likely many more) are already doing something that avoids many of them
>> or makes them less likely. Building a separate vendored library is simpler
>> and more robust than the "shade during build".
>> > >
>> >
>> > I've only encountered "vendoring" as distinct from shading in Beam.
>> > Are there more details about this anywhere? A quick Google search only
>> > turned up one Beam doc that pointed to Go docs and a cloud endpoints
>> > doc that seemed to use it as a synonym for shading.
>> >
>> >
>> > --
>> > Elliotte Rusty Harold
>> > elh...@ibiblio.org
>>
>>
>>
>> --
>> Regards,
>> Tomo
>>
>


Re: Beam's Avro 1.8.x dependency

2020-01-17 Thread Aaron Dixon
@Tomo Suzuki Thanks for looking at this and your thorough analysis// let me
know if I can help with any regression testing, CRs, or more context
anything else.

---

@Elliotte I was a little confused at first re: vendoring vs shading but
here is how I understand it (happy to be corrected if anything I say here
is a mischaracterization); I tend to over-explain for my own clarity
fwiw--using Guava as an example:

With SHADING you have your project (e.g., Beam) depend directly on Guava
and its public package names. Your build will then compile and link to
these package names and only after-the-fact [1] rewrite the byte-code to
rename the guava package. This entails both byte-code rewriting the Guava
class files (to rename the packages of the Guava code itself) and byte-code
rewriting all of your project class files that import Guava (to change the
import to use the new package name).

With VENDORING you release a renamed Guava ("vendor") JAR and depend on
that directly from your project. So your project's source code itself
imports the (repackated)  vendor JAR and depends on the
renamed packages directly. Your project build then has no need for shading
or byte code rewriting of its own classes. I see vendoring making it very
clear what is going on when looking at a project's source code and its
dependencies, and there are likely other tangible brass-tacks benefits to
vendoring besides the conceptual clarity over shading.

[1] You can see that Maven shade:shade goal binds by default to Maven's
package phase (which is well after after compilation).

On Fri, Jan 17, 2020 at 9:16 AM Tomo Suzuki  wrote:

> Ismaël and I think the short-term solution for Aaron's issue is to
> define Beam's own class for Avro's TimestampConversion. Luckily it's
> the only blocker for Avro 1.9 I found.
> I created a ticket https://issues.apache.org/jira/browse/BEAM-9144 and
> PR https://github.com/apache/beam/pull/10628 .
>
> Regards,
> Tomo
>
> On Fri, Jan 17, 2020 at 7:32 AM Elliotte Rusty Harold
>  wrote:
> >
> > On Thu, Jan 16, 2020 at 7:08 PM Kenneth Knowles  wrote:
> > >
> > > Regarding Google's advice about shading: don't go to a "one version
> rule" monorepo for advice about solving diamond dependencies in the wild.
> >
> > FWIW these docs came out of the open source, Github, multirepo, many
> > versions part of Google Cloud, not the mono repo world of google3.
> > Though I will say the more time I spend trying to deal with these
> > issues the more I love the monorepo.
> >
> > > It is a useful description of the pitfalls. We (and Flink before us,
> and likely many more) are already doing something that avoids many of them
> or makes them less likely. Building a separate vendored library is simpler
> and more robust than the "shade during build".
> > >
> >
> > I've only encountered "vendoring" as distinct from shading in Beam.
> > Are there more details about this anywhere? A quick Google search only
> > turned up one Beam doc that pointed to Go docs and a cloud endpoints
> > doc that seemed to use it as a synonym for shading.
> >
> >
> > --
> > Elliotte Rusty Harold
> > elh...@ibiblio.org
>
>
>
> --
> Regards,
> Tomo
>


Re: Beam's Avro 1.8.x dependency

2020-01-17 Thread Tomo Suzuki
Ismaël and I think the short-term solution for Aaron's issue is to
define Beam's own class for Avro's TimestampConversion. Luckily it's
the only blocker for Avro 1.9 I found.
I created a ticket https://issues.apache.org/jira/browse/BEAM-9144 and
PR https://github.com/apache/beam/pull/10628 .

Regards,
Tomo

On Fri, Jan 17, 2020 at 7:32 AM Elliotte Rusty Harold
 wrote:
>
> On Thu, Jan 16, 2020 at 7:08 PM Kenneth Knowles  wrote:
> >
> > Regarding Google's advice about shading: don't go to a "one version rule" 
> > monorepo for advice about solving diamond dependencies in the wild.
>
> FWIW these docs came out of the open source, Github, multirepo, many
> versions part of Google Cloud, not the mono repo world of google3.
> Though I will say the more time I spend trying to deal with these
> issues the more I love the monorepo.
>
> > It is a useful description of the pitfalls. We (and Flink before us, and 
> > likely many more) are already doing something that avoids many of them or 
> > makes them less likely. Building a separate vendored library is simpler and 
> > more robust than the "shade during build".
> >
>
> I've only encountered "vendoring" as distinct from shading in Beam.
> Are there more details about this anywhere? A quick Google search only
> turned up one Beam doc that pointed to Go docs and a cloud endpoints
> doc that seemed to use it as a synonym for shading.
>
>
> --
> Elliotte Rusty Harold
> elh...@ibiblio.org



-- 
Regards,
Tomo


Re: Beam's Avro 1.8.x dependency

2020-01-17 Thread Elliotte Rusty Harold
On Thu, Jan 16, 2020 at 7:08 PM Kenneth Knowles  wrote:
>
> Regarding Google's advice about shading: don't go to a "one version rule" 
> monorepo for advice about solving diamond dependencies in the wild.

FWIW these docs came out of the open source, Github, multirepo, many
versions part of Google Cloud, not the mono repo world of google3.
Though I will say the more time I spend trying to deal with these
issues the more I love the monorepo.

> It is a useful description of the pitfalls. We (and Flink before us, and 
> likely many more) are already doing something that avoids many of them or 
> makes them less likely. Building a separate vendored library is simpler and 
> more robust than the "shade during build".
>

I've only encountered "vendoring" as distinct from shading in Beam.
Are there more details about this anywhere? A quick Google search only
turned up one Beam doc that pointed to Go docs and a cloud endpoints
doc that seemed to use it as a synonym for shading.


-- 
Elliotte Rusty Harold
elh...@ibiblio.org


Re: Beam's Avro 1.8.x dependency

2020-01-16 Thread Kenneth Knowles
Regarding Google's advice about shading: don't go to a "one version rule"
monorepo for advice about solving diamond dependencies in the wild.

It is a useful description of the pitfalls. We (and Flink before us, and
likely many more) are already doing something that avoids many of them or
makes them less likely. Building a separate vendored library is simpler and
more robust than the "shade during build".

Ismaël's point #2 is important: we can't shade or vendor Avro if we intend
to use it with user-generated code. Generated code with external
dependencies requires coordination with the vendoring, as we do for
portability + gRPC. The ProtoCoder uses non-vendored proto for this reason.
The one totally internal use of Avro I am aware of is BigQueryIO. This
could perhaps use a vendored Avro. But OTOH it is already in an isolated
module so it is less severe.

And as many have pointed out, upgrading a dep across a breaking change is a
breaking change. "Stop depending on Avro" is a breaking change as well. So
if we are going to do that, moving it out of core is a more valuable
breaking change.

But perhaps highlighting Gleb's comment: we can build a separate
library/artifacts for providing an AvroCoder that uses Avro 1.9.x (and
potentially make a separate one for 1.8.x and encourage users to use that).
We might be able to make Avro 1.8.x optional for the core SDK, finding a
way for a user to pin to 1.9 as long as they don't touch the parts of the
SDK that use 1.8.

Kenn

On Thu, Jan 16, 2020 at 1:49 PM Aaron Dixon  wrote:

> Looks like there's some strategy to get to the right solution here and
> that it may likely involve breaking compatibility.
>
> One option for myself would be to strip the Beam JAR of AvroCoder and
> combine with the old AvroCoder from Beam 2.16 -- this would allow me to
> upgrade Beam but of course is rather hacky.
>
> On second thought, was the breaking change from Beam 2.16->2.17 really
> necessary? If not, could AvroCoder be restored to a 1.9.x "compatible"
> implementation and kept this way for the Beam 2.1x version lineage?
>
> This seems like a somewhat fair ask given the way that I'm suddenly
> blocked --- however I do realize this is somewhat of a technicality; ie,
> Beam 2.16-'s compatibility with my usage of Avro 1.9.x was incidental.
>
> But, still, if the changes to AvroCoder weren't necessary, restoring back
> would unblock me and anyone else using Avro 1.9.x (surely I'm not the only
> one!?)
>
>
> On Thu, Jan 16, 2020 at 12:22 PM Elliotte Rusty Harold 
> wrote:
>
>> Avro does not follow semver. They update the major version when the
>> serialization format changes and the minor version when the API
>> changes in a backwards incompatible way. See
>> https://issues.apache.org/jira/browse/AVRO-2687
>>
>> On Thu, Jan 16, 2020 at 12:50 PM Luke Cwik  wrote:
>> >
>> > Does avro not follow semantic versioning and upgrading to 1.9 should
>> have been backwards compatible or does our usage reach into the internals
>> of avro?
>> >
>> > On Thu, Jan 16, 2020 at 6:16 AM Ismaël Mejía  wrote:
>> >>
>> >> I forgot to explain why the most obvious path (just upgrade Avro to
>> version
>> >> 1.9.x) is not a valid long term solution. Other systems Beam runs on
>> top of
>> >> (e.g.  Spark!) also leak Avro into their core so in the moment Spark
>> moves up
>> >> to Avro 1.9.x Spark runner users will be in a really fragile position
>> where
>> >> things will work until they don't (similar to Aaron's case) so a
>> stronger reason
>> >> to getAvro out of Beam core.
>> >>
>> >>
>> >> On Thu, Jan 16, 2020 at 1:59 PM Elliotte Rusty Harold <
>> elh...@ibiblio.org> wrote:
>> >>>
>> >>> Shading should be a last resort:
>> >>>
>> >>> https://jlbp.dev/JLBP-18.html
>> >>>
>> >>> It tends to cause more problems than it solves. At best it's a stopgap
>> >>> measure when you don't have the resources to fix the real problem. In
>> >>> this case it sounds like the real issue is that AVRO is not stable.
>> >>> There are at least three other solutions in a case like this:
>> >>>
>> >>> 1. Fix Avro at the root.
>> >>> 2. Fork Avro and then fix it.
>> >>> 3. Stop depending on Avro.
>> >>>
>> >>> None of these are trivial which is why shading gets considered.
>> >>> However shading doesn't fix the underlying problems, and ultimately
>> >>> makes a product as unreliable as its least reliable dependency. :-(
>> >>>
>> >>> On Thu, Jan 16, 2020 at 2:01 AM jincheng sun <
>> sunjincheng...@gmail.com> wrote:
>> >>> >
>> >>> > I found that there are several dependencies shaded and planned to
>> made as vendored artifacts in [1]. I'm not sure why Avro is not shaded
>> before. From my point of view, it's a good idea to shade Avro and make it a
>> vendored artifact if there are no special reasons blocking us to do that.
>> Regarding to how to create a vendored artifact, you can refer to [2] for
>> more details.
>> >>> >
>> >>> > Best,
>> >>> > Jincheng
>> >>> >
>> >>> > [1] https://issues.apache.org/jira/browse/BEAM-5819
>> >>> 

Re: Beam's Avro 1.8.x dependency

2020-01-16 Thread Aaron Dixon
Looks like there's some strategy to get to the right solution here and that
it may likely involve breaking compatibility.

One option for myself would be to strip the Beam JAR of AvroCoder and
combine with the old AvroCoder from Beam 2.16 -- this would allow me to
upgrade Beam but of course is rather hacky.

On second thought, was the breaking change from Beam 2.16->2.17 really
necessary? If not, could AvroCoder be restored to a 1.9.x "compatible"
implementation and kept this way for the Beam 2.1x version lineage?

This seems like a somewhat fair ask given the way that I'm suddenly blocked
--- however I do realize this is somewhat of a technicality; ie, Beam
2.16-'s compatibility with my usage of Avro 1.9.x was incidental.

But, still, if the changes to AvroCoder weren't necessary, restoring back
would unblock me and anyone else using Avro 1.9.x (surely I'm not the only
one!?)


On Thu, Jan 16, 2020 at 12:22 PM Elliotte Rusty Harold 
wrote:

> Avro does not follow semver. They update the major version when the
> serialization format changes and the minor version when the API
> changes in a backwards incompatible way. See
> https://issues.apache.org/jira/browse/AVRO-2687
>
> On Thu, Jan 16, 2020 at 12:50 PM Luke Cwik  wrote:
> >
> > Does avro not follow semantic versioning and upgrading to 1.9 should
> have been backwards compatible or does our usage reach into the internals
> of avro?
> >
> > On Thu, Jan 16, 2020 at 6:16 AM Ismaël Mejía  wrote:
> >>
> >> I forgot to explain why the most obvious path (just upgrade Avro to
> version
> >> 1.9.x) is not a valid long term solution. Other systems Beam runs on
> top of
> >> (e.g.  Spark!) also leak Avro into their core so in the moment Spark
> moves up
> >> to Avro 1.9.x Spark runner users will be in a really fragile position
> where
> >> things will work until they don't (similar to Aaron's case) so a
> stronger reason
> >> to getAvro out of Beam core.
> >>
> >>
> >> On Thu, Jan 16, 2020 at 1:59 PM Elliotte Rusty Harold <
> elh...@ibiblio.org> wrote:
> >>>
> >>> Shading should be a last resort:
> >>>
> >>> https://jlbp.dev/JLBP-18.html
> >>>
> >>> It tends to cause more problems than it solves. At best it's a stopgap
> >>> measure when you don't have the resources to fix the real problem. In
> >>> this case it sounds like the real issue is that AVRO is not stable.
> >>> There are at least three other solutions in a case like this:
> >>>
> >>> 1. Fix Avro at the root.
> >>> 2. Fork Avro and then fix it.
> >>> 3. Stop depending on Avro.
> >>>
> >>> None of these are trivial which is why shading gets considered.
> >>> However shading doesn't fix the underlying problems, and ultimately
> >>> makes a product as unreliable as its least reliable dependency. :-(
> >>>
> >>> On Thu, Jan 16, 2020 at 2:01 AM jincheng sun 
> wrote:
> >>> >
> >>> > I found that there are several dependencies shaded and planned to
> made as vendored artifacts in [1]. I'm not sure why Avro is not shaded
> before. From my point of view, it's a good idea to shade Avro and make it a
> vendored artifact if there are no special reasons blocking us to do that.
> Regarding to how to create a vendored artifact, you can refer to [2] for
> more details.
> >>> >
> >>> > Best,
> >>> > Jincheng
> >>> >
> >>> > [1] https://issues.apache.org/jira/browse/BEAM-5819
> >>> > [2] https://github.com/apache/beam/blob/master/vendor/README.md
> >>> >
> >>> >
> >>> > Tomo Suzuki  于2020年1月16日周四 下午1:18写道:
> >>> >>
> >>> >> I've been upgrading dependencies around gRPC. This Avro-problem is
> >>> >> interesting to me.
> >>> >> I'll study BEAM-8388 more tomorrow.
> >>> >>
> >>> >> On Wed, Jan 15, 2020 at 10:51 PM Luke Cwik 
> wrote:
> >>> >> >
> >>> >> > +Tomo Suzuki +jincheng sun
> >>> >> > There have been a few contributors upgrading the dependencies and
> validating things not breaking by running the majority of the post commit
> integration tests and also using the linkage checker to show that we aren't
> worse off with respect to our dependency tree. Reaching out to them to help
> your is your best bet of getting these upgrades through.
> >>> >> >
> >>> >> > On Wed, Jan 15, 2020 at 6:52 PM Aaron Dixon 
> wrote:
> >>> >> >>
> >>> >> >> I meant to mention that we must use Avro 1.9.x as we rely on
> some schema resolution fixes not present in 1.8.x - so am indeed blocked.
> >>> >> >>
> >>> >> >> On Wed, Jan 15, 2020 at 8:50 PM Aaron Dixon 
> wrote:
> >>> >> >>>
> >>> >> >>> It looks like Avro version dependency from Beam has come up in
> the past [1, 2].
> >>> >> >>>
> >>> >> >>> I'm currently on Beam 2.16.0, which has been compatible with my
> usage of Avro 1.9.x.
> >>> >> >>>
> >>> >> >>> But upgrading to Beam 2.17.0 is not possible for us now that
> 2.17.0 has some dependencies on Avro classes only available in 1.8.x.
> >>> >> >>>
> >>> >> >>> Wondering if anyone else is similar blocked and what it would
> take to prioritize Beam upgrading to 1.9.x or better using a shaded version
> so that clients can use their own 

Re: Beam's Avro 1.8.x dependency

2020-01-16 Thread Elliotte Rusty Harold
Avro does not follow semver. They update the major version when the
serialization format changes and the minor version when the API
changes in a backwards incompatible way. See
https://issues.apache.org/jira/browse/AVRO-2687

On Thu, Jan 16, 2020 at 12:50 PM Luke Cwik  wrote:
>
> Does avro not follow semantic versioning and upgrading to 1.9 should have 
> been backwards compatible or does our usage reach into the internals of avro?
>
> On Thu, Jan 16, 2020 at 6:16 AM Ismaël Mejía  wrote:
>>
>> I forgot to explain why the most obvious path (just upgrade Avro to version
>> 1.9.x) is not a valid long term solution. Other systems Beam runs on top of
>> (e.g.  Spark!) also leak Avro into their core so in the moment Spark moves up
>> to Avro 1.9.x Spark runner users will be in a really fragile position where
>> things will work until they don't (similar to Aaron's case) so a stronger 
>> reason
>> to getAvro out of Beam core.
>>
>>
>> On Thu, Jan 16, 2020 at 1:59 PM Elliotte Rusty Harold  
>> wrote:
>>>
>>> Shading should be a last resort:
>>>
>>> https://jlbp.dev/JLBP-18.html
>>>
>>> It tends to cause more problems than it solves. At best it's a stopgap
>>> measure when you don't have the resources to fix the real problem. In
>>> this case it sounds like the real issue is that AVRO is not stable.
>>> There are at least three other solutions in a case like this:
>>>
>>> 1. Fix Avro at the root.
>>> 2. Fork Avro and then fix it.
>>> 3. Stop depending on Avro.
>>>
>>> None of these are trivial which is why shading gets considered.
>>> However shading doesn't fix the underlying problems, and ultimately
>>> makes a product as unreliable as its least reliable dependency. :-(
>>>
>>> On Thu, Jan 16, 2020 at 2:01 AM jincheng sun  
>>> wrote:
>>> >
>>> > I found that there are several dependencies shaded and planned to made as 
>>> > vendored artifacts in [1]. I'm not sure why Avro is not shaded before. 
>>> > From my point of view, it's a good idea to shade Avro and make it a 
>>> > vendored artifact if there are no special reasons blocking us to do that. 
>>> > Regarding to how to create a vendored artifact, you can refer to [2] for 
>>> > more details.
>>> >
>>> > Best,
>>> > Jincheng
>>> >
>>> > [1] https://issues.apache.org/jira/browse/BEAM-5819
>>> > [2] https://github.com/apache/beam/blob/master/vendor/README.md
>>> >
>>> >
>>> > Tomo Suzuki  于2020年1月16日周四 下午1:18写道:
>>> >>
>>> >> I've been upgrading dependencies around gRPC. This Avro-problem is
>>> >> interesting to me.
>>> >> I'll study BEAM-8388 more tomorrow.
>>> >>
>>> >> On Wed, Jan 15, 2020 at 10:51 PM Luke Cwik  wrote:
>>> >> >
>>> >> > +Tomo Suzuki +jincheng sun
>>> >> > There have been a few contributors upgrading the dependencies and 
>>> >> > validating things not breaking by running the majority of the post 
>>> >> > commit integration tests and also using the linkage checker to show 
>>> >> > that we aren't worse off with respect to our dependency tree. Reaching 
>>> >> > out to them to help your is your best bet of getting these upgrades 
>>> >> > through.
>>> >> >
>>> >> > On Wed, Jan 15, 2020 at 6:52 PM Aaron Dixon  wrote:
>>> >> >>
>>> >> >> I meant to mention that we must use Avro 1.9.x as we rely on some 
>>> >> >> schema resolution fixes not present in 1.8.x - so am indeed blocked.
>>> >> >>
>>> >> >> On Wed, Jan 15, 2020 at 8:50 PM Aaron Dixon  wrote:
>>> >> >>>
>>> >> >>> It looks like Avro version dependency from Beam has come up in the 
>>> >> >>> past [1, 2].
>>> >> >>>
>>> >> >>> I'm currently on Beam 2.16.0, which has been compatible with my 
>>> >> >>> usage of Avro 1.9.x.
>>> >> >>>
>>> >> >>> But upgrading to Beam 2.17.0 is not possible for us now that 2.17.0 
>>> >> >>> has some dependencies on Avro classes only available in 1.8.x.
>>> >> >>>
>>> >> >>> Wondering if anyone else is similar blocked and what it would take 
>>> >> >>> to prioritize Beam upgrading to 1.9.x or better using a shaded 
>>> >> >>> version so that clients can use their own Avro version for their own 
>>> >> >>> coding purposes. (Eg, I parse Avro messages from a KafkaIO source 
>>> >> >>> and need 1.9.x for this but am perfectly happy if Beam's Avro coding 
>>> >> >>> facilities used a shaded other version.)
>>> >> >>>
>>> >> >>> I've made a comment on BEAM-8388 [1] to this effect. But polling 
>>> >> >>> community for discussion.
>>> >> >>>
>>> >> >>> [1] https://issues.apache.org/jira/browse/BEAM-8388
>>> >> >>> [2] https://github.com/apache/beam/pull/9779
>>> >> >>>
>>> >>
>>> >>
>>> >> --
>>> >> Regards,
>>> >> Tomo
>>>
>>>
>>>
>>> --
>>> Elliotte Rusty Harold
>>> elh...@ibiblio.org



-- 
Elliotte Rusty Harold
elh...@ibiblio.org


Re: Beam's Avro 1.8.x dependency

2020-01-16 Thread Ismaël Mejía
I forgot to explain why the most obvious path (just upgrade Avro to version
1.9.x) is not a valid long term solution. Other systems Beam runs on top of
(e.g.  Spark!) also leak Avro into their core so in the moment Spark moves
up
to Avro 1.9.x Spark runner users will be in a really fragile position where
things will work until they don't (similar to Aaron's case) so a stronger
reason
to getAvro out of Beam core.


On Thu, Jan 16, 2020 at 1:59 PM Elliotte Rusty Harold 
wrote:

> Shading should be a last resort:
>
> https://jlbp.dev/JLBP-18.html
>
> It tends to cause more problems than it solves. At best it's a stopgap
> measure when you don't have the resources to fix the real problem. In
> this case it sounds like the real issue is that AVRO is not stable.
> There are at least three other solutions in a case like this:
>
> 1. Fix Avro at the root.
> 2. Fork Avro and then fix it.
> 3. Stop depending on Avro.
>
> None of these are trivial which is why shading gets considered.
> However shading doesn't fix the underlying problems, and ultimately
> makes a product as unreliable as its least reliable dependency. :-(
>
> On Thu, Jan 16, 2020 at 2:01 AM jincheng sun 
> wrote:
> >
> > I found that there are several dependencies shaded and planned to made
> as vendored artifacts in [1]. I'm not sure why Avro is not shaded before.
> From my point of view, it's a good idea to shade Avro and make it a
> vendored artifact if there are no special reasons blocking us to do that.
> Regarding to how to create a vendored artifact, you can refer to [2] for
> more details.
> >
> > Best,
> > Jincheng
> >
> > [1] https://issues.apache.org/jira/browse/BEAM-5819
> > [2] https://github.com/apache/beam/blob/master/vendor/README.md
> >
> >
> > Tomo Suzuki  于2020年1月16日周四 下午1:18写道:
> >>
> >> I've been upgrading dependencies around gRPC. This Avro-problem is
> >> interesting to me.
> >> I'll study BEAM-8388 more tomorrow.
> >>
> >> On Wed, Jan 15, 2020 at 10:51 PM Luke Cwik  wrote:
> >> >
> >> > +Tomo Suzuki +jincheng sun
> >> > There have been a few contributors upgrading the dependencies and
> validating things not breaking by running the majority of the post commit
> integration tests and also using the linkage checker to show that we aren't
> worse off with respect to our dependency tree. Reaching out to them to help
> your is your best bet of getting these upgrades through.
> >> >
> >> > On Wed, Jan 15, 2020 at 6:52 PM Aaron Dixon 
> wrote:
> >> >>
> >> >> I meant to mention that we must use Avro 1.9.x as we rely on some
> schema resolution fixes not present in 1.8.x - so am indeed blocked.
> >> >>
> >> >> On Wed, Jan 15, 2020 at 8:50 PM Aaron Dixon 
> wrote:
> >> >>>
> >> >>> It looks like Avro version dependency from Beam has come up in the
> past [1, 2].
> >> >>>
> >> >>> I'm currently on Beam 2.16.0, which has been compatible with my
> usage of Avro 1.9.x.
> >> >>>
> >> >>> But upgrading to Beam 2.17.0 is not possible for us now that 2.17.0
> has some dependencies on Avro classes only available in 1.8.x.
> >> >>>
> >> >>> Wondering if anyone else is similar blocked and what it would take
> to prioritize Beam upgrading to 1.9.x or better using a shaded version so
> that clients can use their own Avro version for their own coding purposes.
> (Eg, I parse Avro messages from a KafkaIO source and need 1.9.x for this
> but am perfectly happy if Beam's Avro coding facilities used a shaded other
> version.)
> >> >>>
> >> >>> I've made a comment on BEAM-8388 [1] to this effect. But polling
> community for discussion.
> >> >>>
> >> >>> [1] https://issues.apache.org/jira/browse/BEAM-8388
> >> >>> [2] https://github.com/apache/beam/pull/9779
> >> >>>
> >>
> >>
> >> --
> >> Regards,
> >> Tomo
>
>
>
> --
> Elliotte Rusty Harold
> elh...@ibiblio.org
>


Re: Beam's Avro 1.8.x dependency

2020-01-16 Thread Elliotte Rusty Harold
Shading should be a last resort:

https://jlbp.dev/JLBP-18.html

It tends to cause more problems than it solves. At best it's a stopgap
measure when you don't have the resources to fix the real problem. In
this case it sounds like the real issue is that AVRO is not stable.
There are at least three other solutions in a case like this:

1. Fix Avro at the root.
2. Fork Avro and then fix it.
3. Stop depending on Avro.

None of these are trivial which is why shading gets considered.
However shading doesn't fix the underlying problems, and ultimately
makes a product as unreliable as its least reliable dependency. :-(

On Thu, Jan 16, 2020 at 2:01 AM jincheng sun  wrote:
>
> I found that there are several dependencies shaded and planned to made as 
> vendored artifacts in [1]. I'm not sure why Avro is not shaded before. From 
> my point of view, it's a good idea to shade Avro and make it a vendored 
> artifact if there are no special reasons blocking us to do that. Regarding to 
> how to create a vendored artifact, you can refer to [2] for more details.
>
> Best,
> Jincheng
>
> [1] https://issues.apache.org/jira/browse/BEAM-5819
> [2] https://github.com/apache/beam/blob/master/vendor/README.md
>
>
> Tomo Suzuki  于2020年1月16日周四 下午1:18写道:
>>
>> I've been upgrading dependencies around gRPC. This Avro-problem is
>> interesting to me.
>> I'll study BEAM-8388 more tomorrow.
>>
>> On Wed, Jan 15, 2020 at 10:51 PM Luke Cwik  wrote:
>> >
>> > +Tomo Suzuki +jincheng sun
>> > There have been a few contributors upgrading the dependencies and 
>> > validating things not breaking by running the majority of the post commit 
>> > integration tests and also using the linkage checker to show that we 
>> > aren't worse off with respect to our dependency tree. Reaching out to them 
>> > to help your is your best bet of getting these upgrades through.
>> >
>> > On Wed, Jan 15, 2020 at 6:52 PM Aaron Dixon  wrote:
>> >>
>> >> I meant to mention that we must use Avro 1.9.x as we rely on some schema 
>> >> resolution fixes not present in 1.8.x - so am indeed blocked.
>> >>
>> >> On Wed, Jan 15, 2020 at 8:50 PM Aaron Dixon  wrote:
>> >>>
>> >>> It looks like Avro version dependency from Beam has come up in the past 
>> >>> [1, 2].
>> >>>
>> >>> I'm currently on Beam 2.16.0, which has been compatible with my usage of 
>> >>> Avro 1.9.x.
>> >>>
>> >>> But upgrading to Beam 2.17.0 is not possible for us now that 2.17.0 has 
>> >>> some dependencies on Avro classes only available in 1.8.x.
>> >>>
>> >>> Wondering if anyone else is similar blocked and what it would take to 
>> >>> prioritize Beam upgrading to 1.9.x or better using a shaded version so 
>> >>> that clients can use their own Avro version for their own coding 
>> >>> purposes. (Eg, I parse Avro messages from a KafkaIO source and need 
>> >>> 1.9.x for this but am perfectly happy if Beam's Avro coding facilities 
>> >>> used a shaded other version.)
>> >>>
>> >>> I've made a comment on BEAM-8388 [1] to this effect. But polling 
>> >>> community for discussion.
>> >>>
>> >>> [1] https://issues.apache.org/jira/browse/BEAM-8388
>> >>> [2] https://github.com/apache/beam/pull/9779
>> >>>
>>
>>
>> --
>> Regards,
>> Tomo



-- 
Elliotte Rusty Harold
elh...@ibiblio.org


Re: Beam's Avro 1.8.x dependency

2020-01-16 Thread Gleb Kanterov
Adding to Ismaël, I find moving Avro out of the core, and keeping
compatibility as a non-exclusive options. Of course, it would require more
effort from our side.

On Thu, Jan 16, 2020 at 12:29 PM Ismaël Mejía  wrote:

> For the interested there was also some extra context in the discussion at:
> https://github.com/apache/beam/pull/9779
>
> Gleb mentioned the key two points:
>
> 1. The fact that Avro is exposed in the User API in beam-sdks-java-core
> was a
>mistake and makes fixing this issue backwards incompatible.
>
> 2. Shading is not an option because Avro compiler would generate specific
>records that won't match the non-vendored version so we will break user
>records compatibility (for example for users with a schema registry).
>
> So save if I am missing something and someone can give an alternative, we
> are
> in a situation where the only solution to the issue is to do (1), move
> Avro out
> of core as an extension but then the question is would we sacrifice
> breaking
> backwards compatibility for this issue. I am in the 'we should do it' camp.
> What do others think?
>
>
> On Thu, Jan 16, 2020 at 10:17 AM Gleb Kanterov  wrote:
>
>> There are significant changes between Avro 1.8 and Avro 1.9. I'm not sure
>> it's possible for beam-sdks-java-core to support both at the same time. The
>> fact that AvroIO is a part of the beam-sdks-java-core doesn't make it
>> simpler. However, I can see how we can build two binary artifacts with the
>> same user-facing API each supporting own version of Avro.
>>
>> Shading or vendoring would be a breaking change because public signatures
>> of AvroIO (and few other IOs, for instance, BigQueryIO) refer to classes
>> from Avro, for instance, GenericRecord. Furthermore, a lot of Beam users
>> use Avro compiler to generate Java code for SpecificRecord, which would
>> refer to non-vendored version.
>>
>


Re: Beam's Avro 1.8.x dependency

2020-01-16 Thread Ismaël Mejía
For the interested there was also some extra context in the discussion at:
https://github.com/apache/beam/pull/9779

Gleb mentioned the key two points:

1. The fact that Avro is exposed in the User API in beam-sdks-java-core was
a
   mistake and makes fixing this issue backwards incompatible.

2. Shading is not an option because Avro compiler would generate specific
   records that won't match the non-vendored version so we will break user
   records compatibility (for example for users with a schema registry).

So save if I am missing something and someone can give an alternative, we
are
in a situation where the only solution to the issue is to do (1), move Avro
out
of core as an extension but then the question is would we sacrifice breaking
backwards compatibility for this issue. I am in the 'we should do it' camp.
What do others think?


On Thu, Jan 16, 2020 at 10:17 AM Gleb Kanterov  wrote:

> There are significant changes between Avro 1.8 and Avro 1.9. I'm not sure
> it's possible for beam-sdks-java-core to support both at the same time. The
> fact that AvroIO is a part of the beam-sdks-java-core doesn't make it
> simpler. However, I can see how we can build two binary artifacts with the
> same user-facing API each supporting own version of Avro.
>
> Shading or vendoring would be a breaking change because public signatures
> of AvroIO (and few other IOs, for instance, BigQueryIO) refer to classes
> from Avro, for instance, GenericRecord. Furthermore, a lot of Beam users
> use Avro compiler to generate Java code for SpecificRecord, which would
> refer to non-vendored version.
>


Re: Beam's Avro 1.8.x dependency

2020-01-16 Thread Gleb Kanterov
There are significant changes between Avro 1.8 and Avro 1.9. I'm not sure
it's possible for beam-sdks-java-core to support both at the same time. The
fact that AvroIO is a part of the beam-sdks-java-core doesn't make it
simpler. However, I can see how we can build two binary artifacts with the
same user-facing API each supporting own version of Avro.

Shading or vendoring would be a breaking change because public signatures
of AvroIO (and few other IOs, for instance, BigQueryIO) refer to classes
from Avro, for instance, GenericRecord. Furthermore, a lot of Beam users
use Avro compiler to generate Java code for SpecificRecord, which would
refer to non-vendored version.


Re: Beam's Avro 1.8.x dependency

2020-01-15 Thread jincheng sun
I found that there are several dependencies shaded and planned to made as
vendored artifacts in [1]. I'm not sure why Avro is not shaded before. From
my point of view, it's a good idea to shade Avro and make it a vendored
artifact if there are no special reasons blocking us to do that. Regarding
to how to create a vendored artifact, you can refer to [2] for more
details.

Best,
Jincheng

[1] https://issues.apache.org/jira/browse/BEAM-5819
[2] https://github.com/apache/beam/blob/master/vendor/README.md


Tomo Suzuki  于2020年1月16日周四 下午1:18写道:

> I've been upgrading dependencies around gRPC. This Avro-problem is
> interesting to me.
> I'll study BEAM-8388 more tomorrow.
>
> On Wed, Jan 15, 2020 at 10:51 PM Luke Cwik  wrote:
> >
> > +Tomo Suzuki +jincheng sun
> > There have been a few contributors upgrading the dependencies and
> validating things not breaking by running the majority of the post commit
> integration tests and also using the linkage checker to show that we aren't
> worse off with respect to our dependency tree. Reaching out to them to help
> your is your best bet of getting these upgrades through.
> >
> > On Wed, Jan 15, 2020 at 6:52 PM Aaron Dixon  wrote:
> >>
> >> I meant to mention that we must use Avro 1.9.x as we rely on some
> schema resolution fixes not present in 1.8.x - so am indeed blocked.
> >>
> >> On Wed, Jan 15, 2020 at 8:50 PM Aaron Dixon  wrote:
> >>>
> >>> It looks like Avro version dependency from Beam has come up in the
> past [1, 2].
> >>>
> >>> I'm currently on Beam 2.16.0, which has been compatible with my usage
> of Avro 1.9.x.
> >>>
> >>> But upgrading to Beam 2.17.0 is not possible for us now that 2.17.0
> has some dependencies on Avro classes only available in 1.8.x.
> >>>
> >>> Wondering if anyone else is similar blocked and what it would take to
> prioritize Beam upgrading to 1.9.x or better using a shaded version so that
> clients can use their own Avro version for their own coding purposes. (Eg,
> I parse Avro messages from a KafkaIO source and need 1.9.x for this but am
> perfectly happy if Beam's Avro coding facilities used a shaded other
> version.)
> >>>
> >>> I've made a comment on BEAM-8388 [1] to this effect. But polling
> community for discussion.
> >>>
> >>> [1] https://issues.apache.org/jira/browse/BEAM-8388
> >>> [2] https://github.com/apache/beam/pull/9779
> >>>
>
>
> --
> Regards,
> Tomo
>


Re: Beam's Avro 1.8.x dependency

2020-01-15 Thread Tomo Suzuki
I've been upgrading dependencies around gRPC. This Avro-problem is
interesting to me.
I'll study BEAM-8388 more tomorrow.

On Wed, Jan 15, 2020 at 10:51 PM Luke Cwik  wrote:
>
> +Tomo Suzuki +jincheng sun
> There have been a few contributors upgrading the dependencies and validating 
> things not breaking by running the majority of the post commit integration 
> tests and also using the linkage checker to show that we aren't worse off 
> with respect to our dependency tree. Reaching out to them to help your is 
> your best bet of getting these upgrades through.
>
> On Wed, Jan 15, 2020 at 6:52 PM Aaron Dixon  wrote:
>>
>> I meant to mention that we must use Avro 1.9.x as we rely on some schema 
>> resolution fixes not present in 1.8.x - so am indeed blocked.
>>
>> On Wed, Jan 15, 2020 at 8:50 PM Aaron Dixon  wrote:
>>>
>>> It looks like Avro version dependency from Beam has come up in the past [1, 
>>> 2].
>>>
>>> I'm currently on Beam 2.16.0, which has been compatible with my usage of 
>>> Avro 1.9.x.
>>>
>>> But upgrading to Beam 2.17.0 is not possible for us now that 2.17.0 has 
>>> some dependencies on Avro classes only available in 1.8.x.
>>>
>>> Wondering if anyone else is similar blocked and what it would take to 
>>> prioritize Beam upgrading to 1.9.x or better using a shaded version so that 
>>> clients can use their own Avro version for their own coding purposes. (Eg, 
>>> I parse Avro messages from a KafkaIO source and need 1.9.x for this but am 
>>> perfectly happy if Beam's Avro coding facilities used a shaded other 
>>> version.)
>>>
>>> I've made a comment on BEAM-8388 [1] to this effect. But polling community 
>>> for discussion.
>>>
>>> [1] https://issues.apache.org/jira/browse/BEAM-8388
>>> [2] https://github.com/apache/beam/pull/9779
>>>


-- 
Regards,
Tomo


Re: Beam's Avro 1.8.x dependency

2020-01-15 Thread Luke Cwik
+Tomo Suzuki  +jincheng sun 
There have been a few contributors upgrading the dependencies and
validating things not breaking by running the majority of the post commit
integration tests and also using the linkage checker to show that we aren't
worse off with respect to our dependency tree. Reaching out to them to help
your is your best bet of getting these upgrades through.

On Wed, Jan 15, 2020 at 6:52 PM Aaron Dixon  wrote:

> I meant to mention that we must use Avro 1.9.x as we rely on some schema
> resolution fixes not present in 1.8.x - so am indeed blocked.
>
> On Wed, Jan 15, 2020 at 8:50 PM Aaron Dixon  wrote:
>
>> It looks like Avro version dependency from Beam has come up in the past
>> [1, 2].
>>
>> I'm currently on Beam 2.16.0, which has been compatible with my usage of
>> Avro 1.9.x.
>>
>> But upgrading to Beam 2.17.0 is not possible for us now that 2.17.0 has
>> some dependencies on Avro classes only available in 1.8.x.
>>
>> Wondering if anyone else is similar blocked and what it would take to
>> prioritize Beam upgrading to 1.9.x or better using a shaded version so that
>> clients can use their own Avro version for their own coding purposes. (Eg,
>> I parse Avro messages from a KafkaIO source and need 1.9.x for this but am
>> perfectly happy if Beam's Avro coding facilities used a shaded other
>> version.)
>>
>> I've made a comment on BEAM-8388 [1] to this effect. But polling
>> community for discussion.
>>
>> [1] https://issues.apache.org/jira/browse/BEAM-8388
>> [2] https://github.com/apache/beam/pull/9779
>>
>>


Re: Beam's Avro 1.8.x dependency

2020-01-15 Thread Aaron Dixon
I meant to mention that we must use Avro 1.9.x as we rely on some schema
resolution fixes not present in 1.8.x - so am indeed blocked.

On Wed, Jan 15, 2020 at 8:50 PM Aaron Dixon  wrote:

> It looks like Avro version dependency from Beam has come up in the past
> [1, 2].
>
> I'm currently on Beam 2.16.0, which has been compatible with my usage of
> Avro 1.9.x.
>
> But upgrading to Beam 2.17.0 is not possible for us now that 2.17.0 has
> some dependencies on Avro classes only available in 1.8.x.
>
> Wondering if anyone else is similar blocked and what it would take to
> prioritize Beam upgrading to 1.9.x or better using a shaded version so that
> clients can use their own Avro version for their own coding purposes. (Eg,
> I parse Avro messages from a KafkaIO source and need 1.9.x for this but am
> perfectly happy if Beam's Avro coding facilities used a shaded other
> version.)
>
> I've made a comment on BEAM-8388 [1] to this effect. But polling community
> for discussion.
>
> [1] https://issues.apache.org/jira/browse/BEAM-8388
> [2] https://github.com/apache/beam/pull/9779
>
>