Thanks for the feedback, Konstantine. I do agree it's probably better to keep the KIP focused and avoid this kind of baggage, since connectors that *can* optionally use a reader if available can pretty easily deal with the checks.
That's 3 binding +1 votes (Gwen, me, and Konstantine), and the time period definitely has been long enough. Thanks, everyone! On Mon, May 4, 2020 at 10:07 AM Konstantine Karantasis < konstant...@confluent.io> wrote: > I agree with the motivation of this KIP. I think it will enrich the > capabilities of source connectors in a quite meaningful way. > > I'm +1 as well (binding). > > P.S. Randall I like your idea of enabling connectors to run in old as well > as new workers after this KIP. However I think that such connectors will > have to deal with the absence of the Connector#context() method anyways > (e.g. by handling NoSuchMethodException around this call), given that this > class is a system class as far as Connect is concerned and therefore it's > not loaded by the connector's dependencies. So maybe we could keep KIP-131 > simple, and plan to add documentation that would highlight what's the best > practice for connectors that can afford to run in old and new workers (some > might not be able to work meaningfully without this KIP of course). > > Konstantine > > On Thu, Mar 5, 2020 at 11:08 AM Randall Hauch <rha...@gmail.com> wrote: > > > Status: this KIP has 2 binding +1 votes, but has not yet passed. :-( > > > > I'm very interested in getting this into AK 2.6, but have another > > suggestion to make on the KIP. The current KIP is great and allows > > connectors using the latest Connect API to get access to the offset > reader. > > Unfortunately, this will make it difficult for connectors that want to > > maintain compatibility with older versions of the Connect API without > > jumping through a lot of hoops to avoid method not found exceptions or > > class not found exceptions. > > > > Here's my idea: in addition to the changes proposed on the KIP, we also > > make the following changes to make it easier for connectors to use the > > OffsetStorageReader only when the Connect version supports it: > > > > 1. Define a protected > > `SourceConnector.withOffsetStorageReader(OffsetStorageReader reader)` > > method that by default does nothing. > > 2. Override the two `Connector.initialize(...)` methods in > > `SourceConnector` to call super and to call the > > `withOffsetStorageReader(...)` method using the context's offset > storage > > reader. > > > > Any connector that wants to depend on the Connect API when this KIP is > > introduced (e.g., maybe AK 2.6) can do that and can get the > > OffsetStorageReader from the context. However, any connector that wants > to > > be able to be deployed on earlier versions of Connect can override the > > `withOffsetStorageReader(...)` method; if the connector is deployed to > > pre-KIP Connect versions the method will not be called, but if the > > connector is deployed to post-KIP Connect versions the connector will > have > > an OffsetStorageReader it can use. No complications from having to use > > reflection (or other tricks) to cast the connector context to a > > `SourceConnectorContext` (which may not exist) and then call the > > `OffsetStorageReader`. > > > > Thoughts? > > > > Randall > > > > On Mon, Feb 25, 2019 at 9:36 AM Randall Hauch <rha...@gmail.com> wrote: > > > > > +1 (binding) > > > > > > On Mon, Feb 25, 2019 at 4:32 AM Florian Hussonnois < > > fhussonn...@gmail.com> > > > wrote: > > > > > >> Hi Kafka Team, > > >> > > >> I'd like to bring this thread back at the top of the email stack to > get > > a > > >> chance to see this KIP merge in the next minor/major release. > > >> > > >> Thanks. > > >> > > >> Le ven. 18 janv. 2019 à 01:20, Florian Hussonnois < > > fhussonn...@gmail.com> > > >> a > > >> écrit : > > >> > > >> > Hey folks, > > >> > > > >> > This KIP has start since a while but has never been merged. > > >> > > > >> > > > https://cwiki.apache.org/confluence/display/KAFKA/KIP-131+-+Add+access+to+OffsetStorageReader+from+SourceConnector > > >> > Would it be possible to restart the vote ? I still think this KIP > > could > > >> be > > >> > useful to implement connectors (the PR has been rebased) > > >> > > > >> > Thanks, > > >> > > > >> > Le ven. 22 sept. 2017 à 09:36, Florian Hussonnois < > > >> fhussonn...@gmail.com> > > >> > a écrit : > > >> > > > >> >> Hi team, > > >> >> > > >> >> Are there any more votes ? Thanks > > >> >> > > >> >> Le 12 sept. 2017 20:18, "Gwen Shapira" <g...@confluent.io> a > écrit : > > >> >> > > >> >>> Thanks for clarifying. > > >> >>> > > >> >>> +1 again :) > > >> >>> > > >> >>> > > >> >>> > > >> >>> On Sat, Sep 9, 2017 at 6:57 AM Randall Hauch <rha...@gmail.com> > > >> wrote: > > >> >>> > > >> >>> > Gwen, > > >> >>> > > > >> >>> > I've had more time to look into the code. First, the > > >> >>> OffsetStorageReader > > >> >>> > JavaDoc says: "OffsetStorageReader provides access to the offset > > >> >>> storage > > >> >>> > used by sources. This can be used by connectors to determine > > >> offsets to > > >> >>> > start consuming data from. This is most commonly used during > > >> >>> initialization > > >> >>> > of a task, but can also be used during runtime, e.g. when > > >> >>> reconfiguring a > > >> >>> > task." > > >> >>> > > > >> >>> > Second, this KIP allows the SourceConnector implementations to > > >> access > > >> >>> the > > >> >>> > OffsetStorageReader, but really the SourceConnector methods are > > >> *only* > > >> >>> > related to lifecycle changes when using the OffsetStorageReader > > >> would > > >> >>> be > > >> >>> > appropriate per the comment above. > > >> >>> > > > >> >>> > In summary, I don't think there is any concern about the > > >> >>> > OffsetStorageReader being used inappropriate by the > > SourceConnector > > >> >>> > implementations. > > >> >>> > > > >> >>> > Randall > > >> >>> > > > >> >>> > On Fri, Sep 8, 2017 at 9:46 AM, Gwen Shapira <g...@confluent.io > > > > >> >>> wrote: > > >> >>> > > > >> >>> > > Basically, you are saying that the part where the comment > says: > > >> >>> "Offset > > >> >>> > > data should only be read during startup or reconfiguration of > a > > >> >>> task." > > >> >>> > > is incorrect? because the API extension allows reading offset > > data > > >> >>> at any > > >> >>> > > point in the lifecycle, right? > > >> >>> > > > > >> >>> > > On Fri, Sep 8, 2017 at 5:18 AM Florian Hussonnois < > > >> >>> fhussonn...@gmail.com > > >> >>> > > > > >> >>> > > wrote: > > >> >>> > > > > >> >>> > > > Hi Shapira, > > >> >>> > > > > > >> >>> > > > We only expose the OffsetStorageReader to connector which > > >> relies on > > >> >>> > > > KafkaOffsetBackingStore. The store continuesly consumes > > offsets > > >> >>> from > > >> >>> > > kafka > > >> >>> > > > so I think we can't have stale data. > > >> >>> > > > > > >> >>> > > > > > >> >>> > > > Le 8 sept. 2017 06:13, "Randall Hauch" <rha...@gmail.com> a > > >> écrit > > >> >>> : > > >> >>> > > > > > >> >>> > > > > The KIP and PR expose the OffsetStorageReader, which is > > >> already > > >> >>> > exposed > > >> >>> > > > to > > >> >>> > > > > the tasks. The OffsetStorageWriter is part of the > > >> >>> implementation, but > > >> >>> > > was > > >> >>> > > > > not and is not exposed thru the API. > > >> >>> > > > > > > >> >>> > > > > > On Sep 7, 2017, at 9:04 PM, Gwen Shapira < > > g...@confluent.io > > >> > > > >> >>> > wrote: > > >> >>> > > > > > > > >> >>> > > > > > I just re-read the code for the OffsetStorageWriter, and > > ran > > >> >>> into > > >> >>> > > this > > >> >>> > > > > > comment: > > >> >>> > > > > > > > >> >>> > > > > > * Note that this only provides write functionality. This > > is > > >> >>> > > > > > intentional to ensure stale data is > > >> >>> > > > > > * never read. Offset data should only be read during > > >> startup or > > >> >>> > > > > > reconfiguration of a task. By > > >> >>> > > > > > * always serving those requests by reading the values > from > > >> the > > >> >>> > > backing > > >> >>> > > > > > store, we ensure we never > > >> >>> > > > > > * accidentally use stale data. (One example of how this > > can > > >> >>> occur: > > >> >>> > a > > >> >>> > > > > > task is processing input > > >> >>> > > > > > * partition A, writing offsets; reconfiguration causes > > >> >>> partition A > > >> >>> > to > > >> >>> > > > > > be reassigned elsewhere; > > >> >>> > > > > > * reconfiguration causes partition A to be reassigned to > > >> this > > >> >>> node, > > >> >>> > > > > > but now the offset data is out > > >> >>> > > > > > * of date). Since these offsets are created and managed > by > > >> the > > >> >>> > > > > > connector itself, there's no way > > >> >>> > > > > > * for the offset management layer to know which keys are > > >> >>> "owned" by > > >> >>> > > > > > which tasks at any given > > >> >>> > > > > > * time. > > >> >>> > > > > > > > >> >>> > > > > > > > >> >>> > > > > > I can't figure out how the KIP avoids the stale-reads > > >> problem > > >> >>> > > explained > > >> >>> > > > > here. > > >> >>> > > > > > > > >> >>> > > > > > Can you talk me through it? I'm cancelling my vote since > > >> right > > >> >>> now > > >> >>> > > > > > exposing this interface sounds risky and misleading. > > >> >>> > > > > > > > >> >>> > > > > > > > >> >>> > > > > > Gwen > > >> >>> > > > > > > > >> >>> > > > > > > > >> >>> > > > > >> On Thu, Sep 7, 2017 at 5:04 PM Gwen Shapira < > > >> >>> g...@confluent.io> > > >> >>> > > > wrote: > > >> >>> > > > > >> > > >> >>> > > > > >> +1 (binding) > > >> >>> > > > > >> > > >> >>> > > > > >> Looking forward to see how connector implementations > use > > >> this > > >> >>> in > > >> >>> > > > > practice > > >> >>> > > > > >> :) > > >> >>> > > > > >> > > >> >>> > > > > >>> On Thu, Sep 7, 2017 at 3:49 PM Randall Hauch < > > >> >>> rha...@gmail.com> > > >> >>> > > > wrote: > > >> >>> > > > > >>> > > >> >>> > > > > >>> I'd like to open the vote for KIP-131: > > >> >>> > > > > >>> > > >> >>> > > > > >>> > > >> https://cwiki.apache.org/confluence/display/KAFKA/KIP-131+-+ > > >> >>> > > > > Add+access+to+OffsetStorageReader+from+SourceConnector > > >> >>> > > > > >>> > > >> >>> > > > > >>> Thanks to Florian for submitting the KIP and the > > >> >>> implementation, > > >> >>> > > and > > >> >>> > > > to > > >> >>> > > > > >>> everyone else that helped review. > > >> >>> > > > > >>> > > >> >>> > > > > >>> Best regards, > > >> >>> > > > > >>> > > >> >>> > > > > >>> Randall > > >> >>> > > > > >>> > > >> >>> > > > > >> > > >> >>> > > > > > > >> >>> > > > > > >> >>> > > > > >> >>> > > > >> >>> > > >> >> > > >> > > > >> > -- > > >> > Florian HUSSONNOIS > > >> > > > >> > > >> > > >> -- > > >> Florian HUSSONNOIS > > >> > > > > > >