THIS IS A TEST INSTANCE. ALL YOUR CHANGES WILL BE LOST!!!!
...
Code Block |
---|
XXXX XXXX = 8 bits 1. XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX - baseOffset XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX 2. XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX - batchLength 3. XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX - partitionLeaderEpoch 4. XXXX XXXX - magic (current magic value is 2) 5. XXXX XXXX XXXX XXXX - attributes Compression 000 - no comporession 001 - gzip 010 - snappy 011 - lz4 Timestamp 0 - create time 1 - log append time X - isTransactional X - isControlBatch XX XXXX XXXX - unused 6. XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX - lastOffsetDelta 7. XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX - firstTimestamp XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX 8. XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX - maxTimestamp XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX 9. XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX - producerId XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX 10. XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX - producerEpoch 11. ... - baseSequence 12. ... - records |
Proposed change: let's use one of the reserved bits to indicate that timestamp can be negative.
Code Block |
---|
5. XXXX XXXX XXXX XXXX - attributes Compression 000 - no comporession 001 - gzip 010 - snappy 011 - lz4 Timestamp 0 - create time 1 - log append time X - isTransactional X - isControlBatch X - isTimestampExtended ← X XXXX XXXX - unused |
That isTimestampExtended
bit should be 1
for all new records.
Broker should convert old NO_TIMESTAMP=−1L
to new NO_TIMESTAMP_EXTENDED=Long.MIN_VALUE
.
...