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 > > > > > >