I think it is true: currently timestamp field can only be non-negative or -1, and any other values will be rejected; this proposal allows negative values but did not change the semantics of current values (non-negative and -1).
So for current users, if they still only use non-negative or -1 values, they should not notice this change at all; and they should not be using other negative values anyways since their app would fail due to rejected records. Guozhang On Mon, Dec 17, 2018 at 6:41 PM Gwen Shapira <g...@confluent.io> wrote: > Guozhang, > > Can you speak to the following note under "impact on existing users": > "No impact on current users, they should update their infrastructure > in that order: Broker, Consumers, Producers." > > I think this isn't true, but if it is - we need to fix the proposal > and make sure we allow upgrade at any order (as is usual for Kafka > since version 0.10.0.0) > > On Sun, Dec 9, 2018 at 9:21 PM Guozhang Wang <wangg...@gmail.com> wrote: > > > > Hi folks, > > > > Thanks for your replies! Just to clarify, the proposal itself does not > introduce any additional fields in the message format (some new attributes > are mentioned in the Rejected Alternatives though), so my understand is > that we do not need to increment the magic byte version of the message > itself. > > > > Also, ConsumerRecord.NO_TIMESTAMP (-1) is still used as "no timestamp", > and as we've discussed before it is a good trade-off to say "we do not have > way express Wednesday, December 31, 1969 11:59:59.999". I.e. we are > extending the timestamp to have other negative values than -1, but we did > not change the semantics if value -1 itself. So I think although we do bump > up the request protocol version for semantics changes, it is not necessary > for this case (please correct me if there are cases that would not work for > it). > > > > I do agree with Magnus's point that for ListOffsetsRequest, we should > consider using different values than -1 / -2 to indicate `EARLEST / LATEST > TIMESTAMP` now since for example timestamp -2 does have a meaningful > semantics now, and hence its protocol version would need bump as we change > its field. And I think a single byte indicating the type as (EARLEST, > LATEST, ACTUAL_TIMESTAMP_VALUE) should be sufficient, but I'll leave it to > Konstandin to decide if he wants to do this KIP or do it in another > follow-up KIP. > > > > > > Guozhang > > > > > > On Fri, Dec 7, 2018 at 5:06 PM Jun Rao <j...@confluent.io> wrote: > >> > >> Hi, Konstandin, > >> > >> Thanks for the KIP. I agree with Magnus on the protocol version > changes. As > >> for the sentinel value, currently ConsumerRecord.NO_TIMESTAMP (-1) is > used > >> for V0 message format. For compatibility, it seems that we still need to > >> preserve that. > >> > >> Jun > >> > >> On Thu, Dec 6, 2018 at 2:32 AM Magnus Edenhill <mag...@edenhill.se> > wrote: > >> > >> > Sorry for getting in the game this late, and on the wrong thread! > >> > > >> > I think negative timestamps makes sense and is a good addition, > >> > but I have a couple of concerns with the proposal: > >> > > >> > 1. I believe any change to the protocol format or semantics require a > >> > protocol bump, in this case for ProduceRequest, FetchRequest, > >> > ListOffsetsRequest. > >> > 2. ListOffsetsRequest should be changed to allow logical (END, > BEGINNING) > >> > and absolute lookups without special treatment of two absolute values > as > >> > logical (-1, -2), this seems like a hack and will require application > logic > >> > to avoid these timestamps, that's leaky abstraction. > >> > Perhaps add a new field `int8 LookupType = { BEGINNING=-2, > END=-1, > >> > TIMESTAMP=0 }`: the broker will either look up using the absolute > >> > Timestamp, or logical offset value, depending on the value of > LookupType. > >> > 3. With the added Attribute for extended timestamp, do we really > need to > >> > have a sentinel value for an unset timestamp (-1 or Long.MIN_VALUE)? > >> > To make the logic simpler I suggest the attribute is renamed to > just > >> > Timestamp, and if the Timestamp attribute is set, the Timestamp field > is > >> > always a proper timestamp. If the bit is not set, no timestamp was > >> > provided. > >> > > >> > /Magnus > >> > > >> > > >> > > >> > Den tors 6 dec. 2018 kl 08:06 skrev Gwen Shapira <g...@confluent.io>: > >> > > >> > > I may be missing something, but why are we using an attribute for > >> > > this? IIRC, we normally bump protocol version to indicate semantic > >> > > changes. If I understand correctly, not using an attribute will > allow > >> > > us to not change the message format (just the protocol), which makes > >> > > the upgrade significantly easier (since we don't up/down convert). > >> > > > >> > > Another thing I don't understand: The compatibility map indicates > that > >> > > NO_TIMESTAMP is now Long.MIN_VALUE, but a bit above that you say > that > >> > > -1 semantics does not change. > >> > > > >> > > Last: At around version 1.0 we decide to completely avoid changes > that > >> > > require a particular order of upgrades (this is why we added the > >> > > versions API, up/down conversion, etc). So I'd like to see if we can > >> > > avoid this here (should be relatively easy?). I'm CCing Magnus, > >> > > because I think he remembers *why* we made this decision in first > >> > > place. > >> > > > >> > > Gwen > >> > > On Thu, Dec 6, 2018 at 4:44 PM Guozhang Wang <wangg...@gmail.com> > wrote: > >> > > > > >> > > > Bump up on this thread again: we have two binding votes already > and > >> > need > >> > > > another committer to take a look at it and vote. > >> > > > > >> > > > > >> > > > Guozhang > >> > > > > >> > > > On Fri, Oct 19, 2018 at 11:34 AM Konstantin Chukhlomin < > >> > > chuhlo...@gmail.com> > >> > > > wrote: > >> > > > > >> > > > > bump > >> > > > > > >> > > > > On Tue, Jun 12, 2018 at 1:48 PM Bill Bejeck <bbej...@gmail.com> > >> > wrote: > >> > > > > > >> > > > > > +1 > >> > > > > > > >> > > > > > Thanks, > >> > > > > > Bill > >> > > > > > > >> > > > > > On Sun, Jun 10, 2018 at 5:32 PM Ted Yu <yuzhih...@gmail.com> > >> > wrote: > >> > > > > > > >> > > > > > > +1 > >> > > > > > > > >> > > > > > > On Sun, Jun 10, 2018 at 2:17 PM, Matthias J. Sax < > >> > > > > matth...@confluent.io> > >> > > > > > > wrote: > >> > > > > > > > >> > > > > > > > +1 (binding) > >> > > > > > > > > >> > > > > > > > Thanks for the KIP. > >> > > > > > > > > >> > > > > > > > > >> > > > > > > > -Matthias > >> > > > > > > > > >> > > > > > > > On 5/29/18 9:14 AM, Konstantin Chukhlomin wrote: > >> > > > > > > > > Thanks, updated the KIP. > >> > > > > > > > > https://cwiki.apache.org/confluence/display/KAFKA/KIP- > >> > > > > > > > 228+Negative+record+timestamp+support < > >> > https://cwiki.apache.org/ > >> > > > > > > > > >> > > confluence/display/KAFKA/KIP-228+Negative+record+timestamp+support> > >> > > > > > > > > > >> > > > > > > > >> On May 24, 2018, at 1:39 PM, Guozhang Wang < > >> > > wangg...@gmail.com> > >> > > > > > > wrote: > >> > > > > > > > >> > >> > > > > > > > >> Thanks Konstantin, I have a minor comment on the wiki > page's > >> > > > > > "Proposed > >> > > > > > > > >> Solution" section: > >> > > > > > > > >> > >> > > > > > > > >> "The solution is to ignore that problem and it is a > choice > >> > of > >> > > the > >> > > > > > user > >> > > > > > > > >> to..": > >> > > > > > > > >> > >> > > > > > > > >> ---------- > >> > > > > > > > >> > >> > > > > > > > >> I'd suggest we rephrase it and admit "-1 is a special > value > >> > in > >> > > > > > Kafka, > >> > > > > > > > which > >> > > > > > > > >> means we do not have a valid way to express Wednesday, > >> > > December > >> > > > > 31, > >> > > > > > > 1969 > >> > > > > > > > >> 11:59:59 PM UTC." rather than letting users to choose > how to > >> > > > > > interpret > >> > > > > > > > it, > >> > > > > > > > >> since as mentioned, both at Kafka broker side, as well > as at > >> > > Kafka > >> > > > > > > > client > >> > > > > > > > >> side (Streams, Producer) we have already using this > protocol > >> > > to > >> > > > > set > >> > > > > > -1 > >> > > > > > > > as a > >> > > > > > > > >> special value of `unknown`, so users choosing how to > >> > > interpret it > >> > > > > > > freely > >> > > > > > > > >> would lead to confusing behaviors. Instead, we should > well > >> > > > > document > >> > > > > > > this > >> > > > > > > > >> caveat, and educate users in the document that, given > this > >> > > > > > situation, > >> > > > > > > if > >> > > > > > > > >> you do need to express Wednesday, December 31, 1969 > 11:59:59 > >> > > PM > >> > > > > UTC, > >> > > > > > > > >> consider shifting it by one millisecond. > >> > > > > > > > >> > >> > > > > > > > >> > >> > > > > > > > >> Otherwise, I'm +1 on this KIP. > >> > > > > > > > >> > >> > > > > > > > >> > >> > > > > > > > >> Guozhang > >> > > > > > > > >> > >> > > > > > > > >> > >> > > > > > > > >> > >> > > > > > > > >> On Wed, May 23, 2018 at 2:40 PM, Konstantin Chukhlomin > < > >> > > > > > > > chuhlo...@gmail.com> > >> > > > > > > > >> wrote: > >> > > > > > > > >> > >> > > > > > > > >>> All, > >> > > > > > > > >>> > >> > > > > > > > >>> Thanks for the feedback on KIP-228. I've updated the > KIP, > >> > and > >> > > > > would > >> > > > > > > > like > >> > > > > > > > >>> to start to start a vote. > >> > > > > > > > >>> > >> > > > > > > > >>> KIP: > >> > https://cwiki.apache.org/confluence/display/KAFKA/KIP- > >> > > > > > > > >>> 228+Negative+record+timestamp+support < > >> > > https://cwiki.apache.org/ > >> > > > > > > > >>> > >> > > > > > confluence/display/KAFKA/KIP-228+Negative+record+timestamp+support> > >> > > > > > > > >>> > >> > > > > > > > >>> Pull Request: > >> > > https://github.com/apache/kafka/pull/5072/files < > >> > > > > > > > >>> https://github.com/apache/kafka/pull/5072/files> > >> > > > > > > > >>> > >> > > > > > > > >>> Discussion Thread: http://mail-archives.apache. > >> > > > > > > > >>> > org/mod_mbox/kafka-dev/201712.mbox/%3c178138FA-CA30-44A8- > >> > > > > > > > >>> b92a-b966b8ca1...@gmail.com%3e < > >> > http://mail-archives.apache. > >> > > > > > > > >>> > org/mod_mbox/kafka-dev/201712.mbox/%3C178138FA-CA30-44A8- > >> > > > > > > > >>> b92a-b966b8ca1...@gmail.com%3E> > >> > > > > > > > >>> > >> > > > > > > > >>> Thanks! > >> > > > > > > > >> > >> > > > > > > > >> > >> > > > > > > > >> > >> > > > > > > > >> > >> > > > > > > > >> -- > >> > > > > > > > >> -- Guozhang > >> > > > > > > > > > >> > > > > > > > > > >> > > > > > > > > >> > > > > > > > > >> > > > > > > > >> > > > > > > >> > > > > > >> > > > > > >> > > > > -- > >> > > > > Konstantin Chukhlomin > >> > > > > > >> > > > > >> > > > > >> > > > -- > >> > > > -- Guozhang > >> > > > >> > > > >> > > > >> > > -- > >> > > Gwen Shapira > >> > > Product Manager | Confluent > >> > > 650.450.2760 | @gwenshap > >> > > Follow us: Twitter | blog > >> > > > >> > > > > > > > > > -- > > -- Guozhang > > > > -- > Gwen Shapira > Product Manager | Confluent > 650.450.2760 | @gwenshap > Follow us: Twitter | blog > -- -- Guozhang