+1 for option 3 (unfortunately all options have pros and cons, but I think
option 3 does a better job with regards to trade-offs).

Ismael

On Mon, May 9, 2016 at 7:56 PM, Gwen Shapira <g...@confluent.io> wrote:

> We need to conclude this discussion in order to unblock the release.
>
> If I understand correctly, we have 3 options on the table:
>
> 1. Add the missing APIs as "deprecated".
> Pros: Conceptually, the right way to get rid of an API without breaking
> Storm
> Cons: Users of the new API will get ugly warnings, and they are
> actually doing the right thing. This will encourage bad usage of our
> APIs.
>
> 2. Add the missing APIs and sticking with them forever.
> Pros: Avoid breaking Storm and avoid ugly warnings
> Cons: Uglier and more confusing APIs for Consumer for eternity. We
> marked the API as @unstable specifically to avoid this scenario.
>
> 3. Leave things as is. Storm (and maybe few others) will need to do a
> bit of reflection to support the new consumer in both 0.9.0 and 0.10.0
> branches.
> Pros: Clean APIs for our Consumer, clear meaning for "@unstable" in
> the community.
> Cons: Some extra work for Storm.
>
> With Apache Kafka's interests in mind, I think #3 is the right way
> forward. Anything else is worse for Kafka users.
>
> I'd love to hear from the rest of the members :)
>
> Gwen
>
> On Sun, May 8, 2016 at 1:56 AM, Ismael Juma <ism...@juma.me.uk> wrote:
> > Hi Harsha,
> >
> > See inline.
> >
> > On Sun, May 8, 2016 at 3:02 AM, Harsha <ka...@harsha.io> wrote:
> >
> >> Ismael,
> >>        Do we need to add old assign and subscribe that accepts List.
> >
> >
> > Yes, to maintain binary compatibility. If you compile your jar with
> > kafka-clients 0.9.0.1 and then run it with kafka-clients 0.10.0.0 you
> will
> > get an error like:
> >
> > ~/t/binary-compat-test ❯❯❯ java -cp
> >
> src:lib/kafka-clients-0.10.0.0.jar:lib/slf4j-api-1.7.21.jar:lib/slf4j-log4j12-1.7.21.jar:lib/log4j-1.2.17.jar
> > test.BinaryCompat
> > Exception in thread "main" java.lang.NoSuchMethodError:
> >
> org.apache.kafka.clients.consumer.KafkaConsumer.subscribe(Ljava/util/List;)V
> > at test.BinaryCompat.main(BinaryCompat.java:21)
> >
> > That is a real error from a simple test I did. This is why I asked in my
> > original message if you had tested that your proposed PR fixed your issue
> > completely (I don't think it does).
> >
> > It will get implicitly cast to collection with the new methods.
> >>
> >
> > That is only the case if the code is recompiled with 0.10.0.0 (i.e.
> source
> > compatibility).
> >
> > Hope this makes things clearer.
> >
> > Ismael
> >
> > P.S. Source code for the simple test I did:
> > https://gist.github.com/ijuma/dfec36382779b5022989b4380af99b37
> >
> >
> >> The only problem comes from the methods that accepts varargs.
> >>
> >> -Harsha
> >>
> >> On Sat, May 7, 2016, at 05:53 PM, Mark Grover wrote:
> >> > Thanks Ismael, I agree with you, it makes sense to leave things the
> way
> >> > they are in Kafka 0.10.
> >> >
> >> > On Fri, May 6, 2016 at 5:27 PM, Ismael Juma <ism...@juma.me.uk>
> wrote:
> >> >
> >> > > Hi Mark,
> >> > >
> >> > > Thanks for the email. First of all, I'd like to mention that the
> >> `Unstable`
> >> > > annotation has been removed from the new Java consumer in 0.10, so
> you
> >> can
> >> > > expect compatibility from now on. We definitely understand that
> >> > > compatibility is important for widespread adoption.
> >> > >
> >> > > The current PR for KAFKA-3633 adds deprecated and overloaded methods
> >> for
> >> > > `seekToBeginning`, `seekToEnd`, `pause` and `resume` each taking a
> >> varargs
> >> > > parameter for backwards compatibility. If these methods solved the
> >> binary
> >> > > compatibility issue, I'd be supportive of adding them.
> >> > >
> >> > > However, as I pointed out in my original message (and Jason
> elaborated
> >> > > subsequently), something would also have to be done about `assign`
> and
> >> > > `subscribe` in order to maintain binary compatibility between 0.9
> and
> >> 0.10.
> >> > > And a good solution for these methods is elusive.
> >> > >
> >> > > If we add deprecated and overloaded methods that take a `List`
> >> parameter,
> >> > > then every existing user of the new consumer will be exposed to a
> >> > > deprecated warning (or error if they have a warning as error build
> >> policy)
> >> > > because everyone uses `subscribe`. Avoiding the warning involves
> using
> >> > > `Set` instead of `List`, which is a bit weird and unintuitive
> >> (although we
> >> > > could document it).
> >> > >
> >> > > We could add the overloaded methods without deprecating them. In
> this
> >> case,
> >> > > we would be stuck with two methods for the same thing forever (for
> both
> >> > > `subscribe` and `assign`). This makes the API more confusing and
> >> overloads
> >> > > mean that type inference from lambdas would be less effective (if at
> >> all
> >> > > effective).
> >> > >
> >> > > Or we could leave things as they are. The `subscribe` and `assign`
> >> changes
> >> > > are source compatible so no source changes are needed by the common
> >> user
> >> > > who just compiles against a particular version of the Kafka clients
> >> > > library. It's also important to note that kafka-clients 0.9 works
> fine
> >> with
> >> > > 0.10 brokers. Supporting both 0.9 and 0.10 clients from the same JAR
> >> will
> >> > > be a bit annoying, but the ugly shim code for that is
> straightforward
> >> to
> >> > > write for advanced users that need this.
> >> > >
> >> > > I should make it clear that this is my position, other committers
> may
> >> feel
> >> > > differently.
> >> > >
> >> > > Ismael
> >> > >
> >> > > On Sat, May 7, 2016 at 12:38 AM, Mark Grover <m...@apache.org>
> wrote:
> >> > >
> >> > > > I understand and empathize with both sides of the story here. I
> spend
> >> > > some
> >> > > > of my time on Spark and Kafka integration and I have cc'ed Cody
> who's
> >> > > been
> >> > > > working on new Kafka consumer API with Spark Streaming.
> >> > > > Spark hasn't merged the new Kafka consumer API integration, the PR
> >> is up
> >> > > > and we, as a community, are deliberating
> >> > > > <
> >> > > >
> >> > >
> >>
> https://issues.apache.org/jira/browse/SPARK-12177?focusedCommentId=15274910&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-15274910
> >> > > > >
> >> > > > if now is the right time to put this in, given the flux in the
> API,
> >> the
> >> > > > lack of delegation tokens support, etc.
> >> > > >
> >> > > > The proposed Spark integration with Kafka's new API relies on
> >> > > > KafkaConsumer::pause() and KafkaConsumer::seekToEnd() and those
> >> methods
> >> > > > break compatibility between 0.9 and 0.10 RC4 (since KAFKA-3633
> >> > > > <https://issues.apache.org/jira/browse/KAFKA-3633> remains
> >> unresolved).
> >> > > >
> >> > > > What this means is that if Spark supports both 0.9 and 0.10, we
> are
> >> going
> >> > > > to have some complexity to compile against 0.9 and 0.10. So, Spark
> >> > > > community, Cody and myself are all leaning towards not putting
> Kafka
> >> 0.9
> >> > > > support in, and only supporting starting Kafka 0.10 (or, may be
> even
> >> > > later)
> >> > > > depending on the compatibility situation. The point I am trying to
> >> make
> >> > > is
> >> > > > that the new consumer API doesn't add much value for us just yet
> and
> >> > > > breaking compatibility doesn't help in encouraging us to add
> support
> >> for
> >> > > it
> >> > > > in Spark.
> >> > > >
> >> > > > As far as this particular topic (KAFKA-3633) goes, I don't have a
> >> strong
> >> > > > vote, since Spark isn't likely to support 0.9's new kafka consumer
> >> API
> >> > > > anyways. However, I'd state the obvious that compatibility is
> >> important
> >> > > if
> >> > > > you'd like to encourage us to adopt the new API.
> >> > > >
> >> > > > Mark
> >> > > >
> >> > > > On Mon, May 2, 2016 at 10:45 AM, Guozhang Wang <
> wangg...@gmail.com>
> >> > > wrote:
> >> > > >
> >> > > > > Just my two cents here:
> >> > > > >
> >> > > > > I agree with Ewen and Grant on the indication of the "unstable"
> >> > > > annotations
> >> > > > > of being possible for backward incompatible. That means, users
> can
> >> > > make a
> >> > > > > call themselves of whether to start trying out the new APIs /
> >> libraries
> >> > > > > with the risk or changing code when it changes in a later
> release
> >> or
> >> > > just
> >> > > > > wait for it to be stable. Personally I don't think it would
> result
> >> in
> >> > > no
> >> > > > > one ever going to try out "unstable" new APIs, even in their
> >> production
> >> > > > > usages (for example at LI we used the LiKafkaClient to wrap the
> >> apache
> >> > > > > kafka clients and one motivation is to abstract any API backward
> >> > > > > incompatibility); for cases like the Storm integration
> scenarios,
> >> yes
> >> > > it
> >> > > > > may become a considering blocker for incorporating "unstable"
> APIs,
> >> > > > again I
> >> > > > > think it is just a decision we will educate users to make
> >> themselves.
> >> > > > >
> >> > > > >
> >> > > > > Guozhang
> >> > > > >
> >> > > > >
> >> > > > > On Sat, Apr 30, 2016 at 8:13 AM, Harsha <ka...@harsha.io>
> wrote:
> >> > > > >
> >> > > > > > Hi Jason,
> >> > > > > >             Yes I am in favor removing them 0.11 and it
> >> definitely
> >> > > > gives
> >> > > > > >             everyone one major version to update their
> clients to
> >> > > > remove
> >> > > > > >             the deprecated commands.
> >> > > > > >
> >> > > > > > Thanks,
> >> > > > > > Harsha
> >> > > > > >
> >> > > > > > On Fri, Apr 29, 2016, at 11:02 PM, Ewen Cheslack-Postava
> wrote:
> >> > > > > > > I agree with Grant that we really need to indicate to
> >> consumers of
> >> > > > APIs
> >> > > > > > > that when we mark it as unstable, it *really* means
> unstable.
> >> This
> >> > > > is a
> >> > > > > > > more general problem of needing to define our APIs and
> >> stability --
> >> > > > but
> >> > > > > > > I's
> >> > > > > > > say that while we probably were too hasty in adding APIs, it
> >> was
> >> > > > > probably
> >> > > > > > > better to add *some* indication of stability and support
> than
> >> just
> >> > > > add
> >> > > > > > > APIs
> >> > > > > > > with not promises.
> >> > > > > > >
> >> > > > > > > On the other hand, since I helped introduce the Unstable
> >> > > annotation,
> >> > > > > even
> >> > > > > > > then it wasn't entirely clear what it meant, and I am a firm
> >> > > believer
> >> > > > > in
> >> > > > > > > attempting to provide *some* migration period for
> incompatible
> >> > > > > changes, I
> >> > > > > > > would be more than happy to adapt the public API to provide
> >> > > backwards
> >> > > > > > > compatibility for those APIs for *at least* one release.
> >> > > > > > >
> >> > > > > > > Is there a strong reason for not doing this that isn't
> >> > > incompatible?
> >> > > > > > >
> >> > > > > > > And shouldn't we try to be as helpful to consumers of our
> *new*
> >> > > APIs
> >> > > > as
> >> > > > > > > possible -- we want them to adopt new APIs! If there's a
> small
> >> > > amount
> >> > > > > of
> >> > > > > > > effort on our part that keeps things compatible, at least
> over
> >> the
> >> > > > > course
> >> > > > > > > of a major release, it encourages downstream projects to try
> >> our
> >> > > APIs
> >> > > > > > > earlier, and that's a good thing. It won't always be
> perfect;
> >> > > > sometimes
> >> > > > > > > we'll need to break major new features in a minor release;
> but
> >> in
> >> > > > > > > general,
> >> > > > > > > won't it be better?
> >> > > > > > >
> >> > > > > > > We should be very clear that we are going to remove these
> APIs
> >> with
> >> > > > the
> >> > > > > > > 0.11 release, which should hopefully make it clear what
> Storm
> >> can
> >> > > > > expect
> >> > > > > > > from us in terms of compatibility (noting, of course, that
> we
> >> make
> >> > > no
> >> > > > > > > real
> >> > > > > > > promises currently about how long 0.10.x releases will be
> >> made! we
> >> > > > > > > already
> >> > > > > > > make few guarantees about long term support).
> >> > > > > > >
> >> > > > > > > I know it would be ideal if all "external" stakeholders
> could
> >> get
> >> > > > their
> >> > > > > > > vote in with the KIP, but it's probably unrealistic to
> expect
> >> that
> >> > > to
> >> > > > > > > happen any time soon -- not everyone will see developments
> in
> >> the
> >> > > > Kafka
> >> > > > > > > project. I think we should give *a bit* of flexibility,
> >> especially
> >> > > > for
> >> > > > > > > stuff we were all on the fence about, when these types of
> >> issues
> >> > > come
> >> > > > > up.
> >> > > > > > >
> >> > > > > > > Everyone seemed to be on the fence previously. Is there a
> good
> >> > > reason
> >> > > > > not
> >> > > > > > > to adopt the suggested changes, that cost of a bit of
> >> compatibility
> >> > > > > pain?
> >> > > > > > >
> >> > > > > > > -Ewen
> >> > > > > > >
> >> > > > > > >
> >> > > > > > > On Fri, Apr 29, 2016 at 7:58 PM, Jason Gustafson <
> >> > > ja...@confluent.io
> >> > > > >
> >> > > > > > > wrote:
> >> > > > > > >
> >> > > > > > > > Hey Harsha,
> >> > > > > > > >
> >> > > > > > > > Just to clarify, are you ok with removing the methods in a
> >> later
> >> > > > > > release
> >> > > > > > > > (say 0.11)? As I mentioned above, the only weird ones are
> >> > > > subscribe()
> >> > > > > > and
> >> > > > > > > > assign(), which will have a deprecated version which
> accepts
> >> > > List.
> >> > > > > > Users
> >> > > > > > > > will have to change their code to use another collection
> >> type or
> >> > > a
> >> > > > > > typecast
> >> > > > > > > > to avoid deprecation warnings. That's annoying, but maybe
> >> better
> >> > > > than
> >> > > > > > > > breaking compatibility. Does it make sense to update the
> KIP
> >> with
> >> > > > > your
> >> > > > > > > > proposal and request a new vote?
> >> > > > > > > >
> >> > > > > > > > Thanks,
> >> > > > > > > > Jason
> >> > > > > > > >
> >> > > > > > > > On Fri, Apr 29, 2016 at 4:25 PM, Harsha <ka...@harsha.io>
> >> wrote:
> >> > > > > > > >
> >> > > > > > > > > Grant,
> >> > > > > > > > >          I am sure this is discussed and voted. I've
> seen
> >> the
> >> > > > > > > > >          discussion. Given that there is an opportunity
> to
> >> make
> >> > > > it
> >> > > > > > less
> >> > > > > > > > >          painful for the users who shipped consumers
> using
> >> the
> >> > > > > 0.9.x
> >> > > > > > we
> >> > > > > > > > >          should consider that.
> >> > > > > > > > > ". However, for now the documentation of
> >> > > > > > > > > > > the Unstable annotation says, "No guarantee is
> >> provided as
> >> > > to
> >> > > > > > > > > reliability
> >> > > > > > > > > > > or stability across any level of release
> >> granularity."  If
> >> > > we
> >> > > > > > can't
> >> > > > > > > > > > > leverage the Unstable annotation to make breaking
> >> changes
> >> > > > where
> >> > > > > > > > > necessary,
> >> > > > > > > > > > > it will be tough to vet new apis without generating
> a
> >> lot
> >> > > of
> >> > > > > > > > deprecated
> >> > > > > > > > > > > code."
> >> > > > > > > > > Yes we can tell everyone thats because we marked api
> >> unstable
> >> > > we
> >> > > > > > gonna
> >> > > > > > > > > break it in future release and not even consider make it
> >> > > > > compatible.
> >> > > > > > > > > With this approach I am sure no one would be interested
> in
> >> > > > writing
> >> > > > > or
> >> > > > > > > > > using any of the api's until they are stable and thats
> not
> >> way
> >> > > to
> >> > > > > vet
> >> > > > > > > > > new apis.
> >> > > > > > > > >
> >> > > > > > > > > -Harsha
> >> > > > > > > > >
> >> > > > > > > > >
> >> > > > > > > > >
> >> > > > > > > > > On Fri, Apr 29, 2016, at 10:39 AM, Grant Henke wrote:
> >> > > > > > > > > > If anyone wants to review the KIP call discussion we
> had
> >> on
> >> > > > this
> >> > > > > > just
> >> > > > > > > > > > before the vote, here is a link to the relevant
> session
> >> (6
> >> > > > > minutes
> >> > > > > > in):
> >> > > > > > > > > > https://youtu.be/Hcjur17TjBE?t=6m
> >> > > > > > > > > >
> >> > > > > > > > > > On Fri, Apr 29, 2016 at 12:21 PM, Grant Henke <
> >> > > > > ghe...@cloudera.com
> >> > > > > > >
> >> > > > > > > > > > wrote:
> >> > > > > > > > > >
> >> > > > > > > > > > > I think you are right Jason. People were definitely
> on
> >> the
> >> > > > > fence
> >> > > > > > > > about
> >> > > > > > > > > > > this and we went back and forth for quite some time.
> >> > > > > > > > > > >
> >> > > > > > > > > > > I think the main point in the KIP discussion that
> made
> >> this
> >> > > > > > decision,
> >> > > > > > > > > is
> >> > > > > > > > > > > that the Consumer was annotated with the Unstable
> >> > > annotation.
> >> > > > > > Given
> >> > > > > > > > how
> >> > > > > > > > > > > new the Consumer is, we wanted to leverage that to
> make
> >> > > sure
> >> > > > > the
> >> > > > > > > > > interface
> >> > > > > > > > > > > is clean. The same will be true for KafkaStreams in
> the
> >> > > > > upcoming
> >> > > > > > > > > release.
> >> > > > > > > > > > >
> >> > > > > > > > > > > We did agree that we should discuss the annotations
> and
> >> > > what
> >> > > > > our
> >> > > > > > > > > > > compatibility story is in the future. However, for
> now
> >> the
> >> > > > > > > > > documentation of
> >> > > > > > > > > > > the Unstable annotation says, "No guarantee is
> >> provided as
> >> > > to
> >> > > > > > > > > reliability
> >> > > > > > > > > > > or stability across any level of release
> >> granularity."  If
> >> > > we
> >> > > > > > can't
> >> > > > > > > > > > > leverage the Unstable annotation to make breaking
> >> changes
> >> > > > where
> >> > > > > > > > > necessary,
> >> > > > > > > > > > > it will be tough to vet new apis without generating
> a
> >> lot
> >> > > of
> >> > > > > > > > deprecated
> >> > > > > > > > > > > code.
> >> > > > > > > > > > >
> >> > > > > > > > > > > Note: We did remove the Unstable annotation from the
> >> > > Consumer
> >> > > > > > > > interface
> >> > > > > > > > > > > for 0.10 implying that it is now stable. (KAFKA-3435
> >> > > > > > > > > > > <https://issues.apache.org/jira/browse/KAFKA-3435>)
> >> > > > > > > > > > >
> >> > > > > > > > > > > Thanks,
> >> > > > > > > > > > > Grant
> >> > > > > > > > > > >
> >> > > > > > > > > > > On Fri, Apr 29, 2016 at 12:05 PM, Jason Gustafson <
> >> > > > > > > > ja...@confluent.io>
> >> > > > > > > > > > > wrote:
> >> > > > > > > > > > >
> >> > > > > > > > > > >> Hey Harsha,
> >> > > > > > > > > > >>
> >> > > > > > > > > > >> One issue with adding back subscribe(List), but
> >> marking it
> >> > > > > > > > deprecated
> >> > > > > > > > > is
> >> > > > > > > > > > >> that it may confuse some users if they use the
> typical
> >> > > > > > > > Arrays.asList()
> >> > > > > > > > > > >> pattern. You'd have to cast to a Collection to
> avoid
> >> the
> >> > > > > > deprecation
> >> > > > > > > > > > >> warning, which is awkward. Maybe it would be
> better in
> >> > > that
> >> > > > > > case to
> >> > > > > > > > > keep
> >> > > > > > > > > > >> the List alternatives forever?
> >> > > > > > > > > > >>
> >> > > > > > > > > > >> In general, I'm not opposed to adding the methods
> >> back.
> >> > > When
> >> > > > > we
> >> > > > > > > > voted
> >> > > > > > > > > on
> >> > > > > > > > > > >> KIP-45, I think many of us were on the fence
> anyway.
> >> It
> >> > > > would
> >> > > > > be
> >> > > > > > > > nice
> >> > > > > > > > > to
> >> > > > > > > > > > >> hear what others think.
> >> > > > > > > > > > >>
> >> > > > > > > > > > >> -Jason
> >> > > > > > > > > > >>
> >> > > > > > > > > > >> On Thu, Apr 28, 2016 at 6:30 PM, Harsha <
> >> ka...@harsha.io>
> >> > > > > > wrote:
> >> > > > > > > > > > >>
> >> > > > > > > > > > >> > Hi Jason,
> >> > > > > > > > > > >> >     "t. I think what you're
> >> > > > > > > > > > >> > saying is that the KafkaSpout has been compiled
> >> against
> >> > > > the
> >> > > > > > 0.9
> >> > > > > > > > > client,
> >> > > > > > > > > > >> > but
> >> > > > > > > > > > >> > it may need to be to run against 0.10 (if the
> user
> >> > > depends
> >> > > > > on
> >> > > > > > that
> >> > > > > > > > > > >> > version
> >> > > > > > > > > > >> > instead). Is that correct?"
> >> > > > > > > > > > >> >
> >> > > > > > > > > > >> > Yes thats true.
> >> > > > > > > > > > >> >
> >> > > > > > > > > > >> > " Is that correct? In general, are you expecting
> >> that
> >> > > > > > KafkaSpout
> >> > > > > > > > > > >> > > > will work with any kafka-clients greater than
> >> 0.9?"
> >> > > > > > > > > > >> >
> >> > > > > > > > > > >> > In general yes . But given that interface is
> marked
> >> > > > unstable
> >> > > > > > its
> >> > > > > > > > > > >> > probably not reasonable to expect to work across
> >> the new
> >> > > > > > versions
> >> > > > > > > > > > >> > of the Kafka.
> >> > > > > > > > > > >> >
> >> > > > > > > > > > >> > "Another question that
> >> > > > > > > > > > >> > > > comes to mind is whether we would also need
> to
> >> > > revert
> >> > > > to
> >> > > > > > the
> >> > > > > > > > old
> >> > > > > > > > > > >> > versions
> >> > > > > > > > > > >> > > > of subscribe() and assign().
> >> > > > > > > > > > >> > Yes you are right on these methods. We need to
> add
> >> for
> >> > > > these
> >> > > > > > two
> >> > > > > > > > as
> >> > > > > > > > > > >> > well.
> >> > > > > > > > > > >> >
> >> > > > > > > > > > >> >
> >> > > > > > > > > > >> > My issue is users who built their clients using
> >> 0.9.x
> >> > > java
> >> > > > > api
> >> > > > > > > > will
> >> > > > > > > > > have
> >> > > > > > > > > > >> > to change once the 0.10 release is out.
> Alternative
> >> I am
> >> > > > > > proposing
> >> > > > > > > > > is to
> >> > > > > > > > > > >> > give these users time to move onto the new api
> thats
> >> > > added
> >> > > > > and
> >> > > > > > > > keep
> >> > > > > > > > > the
> >> > > > > > > > > > >> > old methods with deprecated tag for atleast one
> >> version.
> >> > > > > > > > > > >> >
> >> > > > > > > > > > >> > Thanks,
> >> > > > > > > > > > >> > Harsha
> >> > > > > > > > > > >> >
> >> > > > > > > > > > >> >
> >> > > > > > > > > > >> > On Thu, Apr 28, 2016, at 04:41 PM, Grant Henke
> >> wrote:
> >> > > > > > > > > > >> > > FYI. I have attached a sample clients API
> >> > > > > > change/compatibility
> >> > > > > > > > > report
> >> > > > > > > > > > >> to
> >> > > > > > > > > > >> > > KAFKA-1880 <
> >> > > > > > https://issues.apache.org/jira/browse/KAFKA-1880>.
> >> > > > > > > > > The
> >> > > > > > > > > > >> > report
> >> > > > > > > > > > >> > > shows changes in the public apis between the
> 0.9
> >> and
> >> > > > trunk
> >> > > > > > > > > branches.
> >> > > > > > > > > > >> Some
> >> > > > > > > > > > >> > > of them are expected per KIP-45 obviously.
> >> > > > > > > > > > >> > >
> >> > > > > > > > > > >> > > Thanks,
> >> > > > > > > > > > >> > > Grant
> >> > > > > > > > > > >> > >
> >> > > > > > > > > > >> > >
> >> > > > > > > > > > >> > > On Thu, Apr 28, 2016 at 6:33 PM, Jason
> Gustafson <
> >> > > > > > > > > ja...@confluent.io>
> >> > > > > > > > > > >> > > wrote:
> >> > > > > > > > > > >> > >
> >> > > > > > > > > > >> > > > Hey Harsha,
> >> > > > > > > > > > >> > > >
> >> > > > > > > > > > >> > > > We're just trying to understand the problem
> >> first. I
> >> > > > > think
> >> > > > > > > > what
> >> > > > > > > > > > >> you're
> >> > > > > > > > > > >> > > > saying is that the KafkaSpout has been
> compiled
> >> > > > against
> >> > > > > > the
> >> > > > > > > > 0.9
> >> > > > > > > > > > >> > client, but
> >> > > > > > > > > > >> > > > it may need to be to run against 0.10 (if the
> >> user
> >> > > > > > depends on
> >> > > > > > > > > that
> >> > > > > > > > > > >> > version
> >> > > > > > > > > > >> > > > instead). Is that correct? In general, are
> you
> >> > > > expecting
> >> > > > > > that
> >> > > > > > > > > > >> > KafkaSpout
> >> > > > > > > > > > >> > > > will work with any kafka-clients greater than
> >> 0.9?
> >> > > > > Another
> >> > > > > > > > > question
> >> > > > > > > > > > >> > that
> >> > > > > > > > > > >> > > > comes to mind is whether we would also need
> to
> >> > > revert
> >> > > > to
> >> > > > > > the
> >> > > > > > > > old
> >> > > > > > > > > > >> > versions
> >> > > > > > > > > > >> > > > of subscribe() and assign(). The argument
> type
> >> was
> >> > > > > changed
> >> > > > > > > > from
> >> > > > > > > > > > >> List to
> >> > > > > > > > > > >> > > > Collection, which is not binary compatible,
> >> right?
> >> > > > > > > > > > >> > > >
> >> > > > > > > > > > >> > > > Thanks,
> >> > > > > > > > > > >> > > > Jason
> >> > > > > > > > > > >> > > >
> >> > > > > > > > > > >> > > > On Thu, Apr 28, 2016 at 1:41 PM, Harsha <
> >> > > > > ka...@harsha.io>
> >> > > > > > > > > wrote:
> >> > > > > > > > > > >> > > >
> >> > > > > > > > > > >> > > > > Hi Ismael,
> >> > > > > > > > > > >> > > > >               This will solve both binary
> and
> >> > > source
> >> > > > > > > > > > >> compatibility.
> >> > > > > > > > > > >> > > > >               Storm has new KafkaSpout that
> >> used
> >> > > > 0.9.x
> >> > > > > > new
> >> > > > > > > > > > >> KafkaSpout
> >> > > > > > > > > > >> > > > >               API. As part of that spout we
> >> used
> >> > > > > > > > > > >> > > > >               KafkaConsumer.seekToBeginning
> >> and
> >> > > > other
> >> > > > > > > > methods.
> >> > > > > > > > > > >> Since
> >> > > > > > > > > > >> > the
> >> > > > > > > > > > >> > > > >               method signature changed as
> >> part of
> >> > > > > > KIP-45. If
> >> > > > > > > > > we
> >> > > > > > > > > > >> > update
> >> > > > > > > > > > >> > > > >               the version to 0.10 we are
> >> breaking
> >> > > > the
> >> > > > > > > > > > >> KafkaConsumer
> >> > > > > > > > > > >> > > > >               calls in our Storm spout. In
> >> storm's
> >> > > > > case
> >> > > > > > we
> >> > > > > > > > ask
> >> > > > > > > > > > >> users
> >> > > > > > > > > > >> > to
> >> > > > > > > > > > >> > > > >               create uber jar with all the
> >> > > required
> >> > > > > > > > > dependencies
> >> > > > > > > > > > >> and
> >> > > > > > > > > > >> > > > >               users can free to use which
> >> version
> >> > > of
> >> > > > > > kafka
> >> > > > > > > > > they
> >> > > > > > > > > > >> can
> >> > > > > > > > > > >> > to
> >> > > > > > > > > > >> > > > >               be part of uber jar. If they
> use
> >> > > storm
> >> > > > > 1.0
> >> > > > > > > > > release
> >> > > > > > > > > > >> > version
> >> > > > > > > > > > >> > > > >               of storm-kafka with kafka
> 0.10
> >> than
> >> > > it
> >> > > > > > will
> >> > > > > > > > > create
> >> > > > > > > > > > >> > issues
> >> > > > > > > > > > >> > > > >               without the patch.
> >> > > > > > > > > > >> > > > >              I am still not getting clear
> >> answer
> >> > > > here.
> >> > > > > > Whats
> >> > > > > > > > > > >> exactly
> >> > > > > > > > > > >> > the
> >> > > > > > > > > > >> > > > >              issue in having these methods
> >> with
> >> > > > > > deprecated
> >> > > > > > > > > tag? we
> >> > > > > > > > > > >> > keep
> >> > > > > > > > > > >> > > > >              the interface as it is.
> >> > > > > > > > > > >> > > > >
> >> > > > > > > > > > >> > > > > Thanks,
> >> > > > > > > > > > >> > > > > Harsha
> >> > > > > > > > > > >> > > > >
> >> > > > > > > > > > >> > > > > On Thu, Apr 28, 2016, at 01:27 PM, Ismael
> Juma
> >> > > > wrote:
> >> > > > > > > > > > >> > > > > > Hi Harsha,
> >> > > > > > > > > > >> > > > > >
> >> > > > > > > > > > >> > > > > > What is the aim of the PR, is it to fix
> >> binary
> >> > > > > > > > > compatibility,
> >> > > > > > > > > > >> > source
> >> > > > > > > > > > >> > > > > > compatibility or both? I think it only
> fixes
> >> > > > source
> >> > > > > > > > > > >> compatibility,
> >> > > > > > > > > > >> > so I
> >> > > > > > > > > > >> > > > > > am
> >> > > > > > > > > > >> > > > > > interested in what testing has been done
> to
> >> > > ensure
> >> > > > > > that
> >> > > > > > > > > this fix
> >> > > > > > > > > > >> > solves
> >> > > > > > > > > > >> > > > > > the
> >> > > > > > > > > > >> > > > > > Storm issue.
> >> > > > > > > > > > >> > > > > >
> >> > > > > > > > > > >> > > > > > Thanks,
> >> > > > > > > > > > >> > > > > > Ismael
> >> > > > > > > > > > >> > > > > >
> >> > > > > > > > > > >> > > > > > On Thu, Apr 28, 2016 at 12:58 PM, Harsha
> <
> >> > > > > > ka...@harsha.io
> >> > > > > > > > >
> >> > > > > > > > > > >> wrote:
> >> > > > > > > > > > >> > > > > >
> >> > > > > > > > > > >> > > > > > > Hi,
> >> > > > > > > > > > >> > > > > > >        We missed this vote earlier and
> >> > > realized
> >> > > > > > thats
> >> > > > > > > > its
> >> > > > > > > > > > >> > breaking
> >> > > > > > > > > > >> > > > the
> >> > > > > > > > > > >> > > > > > >        0.9.x client api
> compatibility.  I
> >> > > > opened a
> >> > > > > > JIRA
> >> > > > > > > > > here
> >> > > > > > > > > > >> > > > > > >
> >> > > > > > https://issues.apache.org/jira/browse/KAFKA-3633
> >> > > > > > > > .
> >> > > > > > > > > > >> Can we
> >> > > > > > > > > > >> > > > keep
> >> > > > > > > > > > >> > > > > > >        the old methods with deprecated
> >> tag in
> >> > > > 0.10
> >> > > > > > > > > release.
> >> > > > > > > > > > >> > > > > > >
> >> > > > > > > > > > >> > > > > > > Thanks,
> >> > > > > > > > > > >> > > > > > > Harsha
> >> > > > > > > > > > >> > > > > > >
> >> > > > > > > > > > >> > > > > > > On Fri, Mar 18, 2016, at 01:51 PM,
> Jason
> >> > > > Gustafson
> >> > > > > > > > wrote:
> >> > > > > > > > > > >> > > > > > > > Looks like the KIP has passed. The
> >> finally
> >> > > > tally
> >> > > > > > is +5
> >> > > > > > > > > among
> >> > > > > > > > > > >> > > > > committers
> >> > > > > > > > > > >> > > > > > > > and
> >> > > > > > > > > > >> > > > > > > > +9 overall.
> >> > > > > > > > > > >> > > > > > > >
> >> > > > > > > > > > >> > > > > > > > Thanks to Pierre-Yves Ritschard for
> all
> >> of
> >> > > the
> >> > > > > > hard
> >> > > > > > > > > work and
> >> > > > > > > > > > >> > > > > persistence
> >> > > > > > > > > > >> > > > > > > > with this!
> >> > > > > > > > > > >> > > > > > > >
> >> > > > > > > > > > >> > > > > > > > -Jason
> >> > > > > > > > > > >> > > > > > > >
> >> > > > > > > > > > >> > > > > > > > On Wed, Mar 16, 2016 at 9:01 PM, Ewen
> >> > > > > > Cheslack-Postava
> >> > > > > > > > > > >> > > > > > > > <e...@confluent.io>
> >> > > > > > > > > > >> > > > > > > > wrote:
> >> > > > > > > > > > >> > > > > > > >
> >> > > > > > > > > > >> > > > > > > > > +1.
> >> > > > > > > > > > >> > > > > > > > >
> >> > > > > > > > > > >> > > > > > > > > Normally I'd be more of a stickler
> for
> >> > > > > > > > compatibility,
> >> > > > > > > > > but
> >> > > > > > > > > > >> > this is
> >> > > > > > > > > > >> > > > > new,
> >> > > > > > > > > > >> > > > > > > I
> >> > > > > > > > > > >> > > > > > > > > think it's worth emphasizing that
> >> unstable
> >> > > > > > actually
> >> > > > > > > > > means
> >> > > > > > > > > > >> > > > unstable
> >> > > > > > > > > > >> > > > > &
> >> > > > > > > > > > >> > > > > > > might
> >> > > > > > > > > > >> > > > > > > > > require recompile (and maybe even
> >> adapting
> >> > > > > code
> >> > > > > > when
> >> > > > > > > > > we
> >> > > > > > > > > > >> > think the
> >> > > > > > > > > > >> > > > > > > change
> >> > > > > > > > > > >> > > > > > > > > warrants it), and I think the
> impact
> >> is
> >> > > > > > relatively
> >> > > > > > > > low
> >> > > > > > > > > > >> since
> >> > > > > > > > > > >> > > > those
> >> > > > > > > > > > >> > > > > > > adopting
> >> > > > > > > > > > >> > > > > > > > > the new consumer know that it's
> very
> >> new.
> >> > > > > Agreed
> >> > > > > > > > with
> >> > > > > > > > > > >> > Guozhang
> >> > > > > > > > > > >> > > > that
> >> > > > > > > > > > >> > > > > > > better
> >> > > > > > > > > > >> > > > > > > > > documenting the annotations will
> help
> >> (and
> >> > > > > > > > personally
> >> > > > > > > > > > >> > apologize
> >> > > > > > > > > > >> > > > for
> >> > > > > > > > > > >> > > > > > > that
> >> > > > > > > > > > >> > > > > > > > > since we hastily introduced the
> >> > > annotations
> >> > > > to
> >> > > > > > give
> >> > > > > > > > > > >> ourselves
> >> > > > > > > > > > >> > > > > wiggle
> >> > > > > > > > > > >> > > > > > > room
> >> > > > > > > > > > >> > > > > > > > > on Connect).
> >> > > > > > > > > > >> > > > > > > > >
> >> > > > > > > > > > >> > > > > > > > > -Ewen
> >> > > > > > > > > > >> > > > > > > > >
> >> > > > > > > > > > >> > > > > > > > > On Wed, Mar 16, 2016 at 5:17 PM,
> Joel
> >> > > Koshy
> >> > > > <
> >> > > > > > > > > > >> > jjkosh...@gmail.com
> >> > > > > > > > > > >> > > > >
> >> > > > > > > > > > >> > > > > > > wrote:
> >> > > > > > > > > > >> > > > > > > > >
> >> > > > > > > > > > >> > > > > > > > > > +1
> >> > > > > > > > > > >> > > > > > > > > >
> >> > > > > > > > > > >> > > > > > > > > > On Tue, Mar 15, 2016 at 2:18 PM,
> >> Jason
> >> > > > > > Gustafson <
> >> > > > > > > > > > >> > > > > ja...@confluent.io
> >> > > > > > > > > > >> > > > > > > >
> >> > > > > > > > > > >> > > > > > > > > > wrote:
> >> > > > > > > > > > >> > > > > > > > > >
> >> > > > > > > > > > >> > > > > > > > > > > I'd like to open the vote for
> >> KIP-45.
> >> > > > > We've
> >> > > > > > > > > discussed
> >> > > > > > > > > > >> > several
> >> > > > > > > > > > >> > > > > > > > > > alternatives
> >> > > > > > > > > > >> > > > > > > > > > > on the mailing list and in the
> KIP
> >> > > call,
> >> > > > > but
> >> > > > > > > > this
> >> > > > > > > > > > >> vote is
> >> > > > > > > > > > >> > > > only
> >> > > > > > > > > > >> > > > > on
> >> > > > > > > > > > >> > > > > > > the
> >> > > > > > > > > > >> > > > > > > > > > > documented KIP:
> >> > > > > > > > > > >> > > > > > > > > > >
> >> > > > > > > > > > >> > > > > > > > > >
> >> > > > > > > > > > >> > > > > > > > >
> >> > > > > > > > > > >> > > > > > >
> >> > > > > > > > > > >> > > > >
> >> > > > > > > > > > >> > > >
> >> > > > > > > > > > >> >
> >> > > > > > > > > > >>
> >> > > > > > > > >
> >> > > > > > > >
> >> > > > > >
> >> > > > >
> >> > > >
> >> > >
> >>
> https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=61337336
> >> > > > > > > > > > >> .
> >> > > > > > > > > > >> > > > > > > > > > > This
> >> > > > > > > > > > >> > > > > > > > > > > change will not be compatible
> with
> >> > > 0.9,
> >> > > > > but
> >> > > > > > it
> >> > > > > > > > > will
> >> > > > > > > > > > >> > provide a
> >> > > > > > > > > > >> > > > > > > cleaner
> >> > > > > > > > > > >> > > > > > > > > API
> >> > > > > > > > > > >> > > > > > > > > > > long term for users to work
> with.
> >> This
> >> > > > is
> >> > > > > > really
> >> > > > > > > > > the
> >> > > > > > > > > > >> last
> >> > > > > > > > > > >> > > > > chance to
> >> > > > > > > > > > >> > > > > > > > > make
> >> > > > > > > > > > >> > > > > > > > > > an
> >> > > > > > > > > > >> > > > > > > > > > > incompatible change like this
> with
> >> > > 0.10
> >> > > > > > shortly
> >> > > > > > > > > on the
> >> > > > > > > > > > >> > way,
> >> > > > > > > > > > >> > > > but
> >> > > > > > > > > > >> > > > > > > > > > compatible
> >> > > > > > > > > > >> > > > > > > > > > > options (such as method
> >> overloading)
> >> > > > could
> >> > > > > > be
> >> > > > > > > > > brought
> >> > > > > > > > > > >> up
> >> > > > > > > > > > >> > > > again
> >> > > > > > > > > > >> > > > > in
> >> > > > > > > > > > >> > > > > > > the
> >> > > > > > > > > > >> > > > > > > > > > > future if we find it's needed.
> >> > > > > > > > > > >> > > > > > > > > > >
> >> > > > > > > > > > >> > > > > > > > > > > Thanks,
> >> > > > > > > > > > >> > > > > > > > > > > Jason
> >> > > > > > > > > > >> > > > > > > > > > >
> >> > > > > > > > > > >> > > > > > > > > >
> >> > > > > > > > > > >> > > > > > > > >
> >> > > > > > > > > > >> > > > > > > > >
> >> > > > > > > > > > >> > > > > > > > >
> >> > > > > > > > > > >> > > > > > > > > --
> >> > > > > > > > > > >> > > > > > > > > Thanks,
> >> > > > > > > > > > >> > > > > > > > > Ewen
> >> > > > > > > > > > >> > > > > > > > >
> >> > > > > > > > > > >> > > > > > >
> >> > > > > > > > > > >> > > > >
> >> > > > > > > > > > >> > > >
> >> > > > > > > > > > >> > >
> >> > > > > > > > > > >> > >
> >> > > > > > > > > > >> > >
> >> > > > > > > > > > >> > > --
> >> > > > > > > > > > >> > > Grant Henke
> >> > > > > > > > > > >> > > Software Engineer | Cloudera
> >> > > > > > > > > > >> > > gr...@cloudera.com | twitter.com/gchenke |
> >> > > > > > > > > linkedin.com/in/granthenke
> >> > > > > > > > > > >> >
> >> > > > > > > > > > >>
> >> > > > > > > > > > >
> >> > > > > > > > > > >
> >> > > > > > > > > > >
> >> > > > > > > > > > > --
> >> > > > > > > > > > > Grant Henke
> >> > > > > > > > > > > Software Engineer | Cloudera
> >> > > > > > > > > > > gr...@cloudera.com | twitter.com/gchenke |
> >> > > > > > > > linkedin.com/in/granthenke
> >> > > > > > > > > > >
> >> > > > > > > > > >
> >> > > > > > > > > >
> >> > > > > > > > > >
> >> > > > > > > > > > --
> >> > > > > > > > > > Grant Henke
> >> > > > > > > > > > Software Engineer | Cloudera
> >> > > > > > > > > > gr...@cloudera.com | twitter.com/gchenke |
> >> > > > > > linkedin.com/in/granthenke
> >> > > > > > > > >
> >> > > > > > > >
> >> > > > > > >
> >> > > > > > >
> >> > > > > > >
> >> > > > > > > --
> >> > > > > > > Thanks,
> >> > > > > > > Ewen
> >> > > > > >
> >> > > > >
> >> > > > >
> >> > > > >
> >> > > > > --
> >> > > > > -- Guozhang
> >> > > > >
> >> > > >
> >> > >
> >>
>
>

Reply via email to