Details
-
Bug
-
Status: In Progress
-
Critical
-
Resolution: Unresolved
-
0.10.2.0, 0.10.2.1, 0.10.2.2
-
None
Description
For some input for the timestamps (different from -1 or -2) the GetOffset is not able to retrieve the offset.
For example, if x is the timestamp in that "not working range", and you execute:
bin/kafka-run-class.sh kafka.tools.GetOffsetShell --broker-list $KAFKA_ADDRESS --topic $MY_TOPIC --time x
The output is:
MY_TOPIC:8: MY_TOPIC:2: MY_TOPIC:5: MY_TOPIC:4: MY_TOPIC:7: MY_TOPIC:1: MY_TOPIC:9:
while after the last ":" an integer representing the offset is expected.
Steps to reproduce it:
- Consume all the messages from the beginning and print the timestamp:
bin/kafka-simple-consumer-shell.sh --no-wait-at-logend --broker-list $KAFKA_ADDRESS --topic $MY_TOPIC --property print.timestamp=true > messages
- Sort the messages by timestamp and get some of the oldest messages:
awk -F "CreateTime:" '{ print $2}' messages | sort -n > msg_sorted
- Take (for example) the timestamp of the 10th oldest message, and see if GetOffsetShell is not able to print the offset:
timestamp="$(sed '10q;d' msg_sorted | cut -f1)" bin/kafka-run-class.sh kafka.tools.GetOffsetShell --broker-list $KAFKA_ADDRESS --topic $MY_TOPIC --time $timestamp # The output should be something like: # MY_TOPIC:1: # MY_TOPIC:2: (repeated for every partition)
- Verify that the message with that timestamp is still in Kafka:
bin/kafka-simple-consumer-shell.sh --no-wait-at-logend --broker-list $KAFKA_ADDRESS --topic $MY_TOPIC --property print.timestamp=true | grep "CreateTime:$timestamp"