[ 
https://issues.apache.org/jira/browse/ROCKETMQ-313?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16243973#comment-16243973
 ] 

Yu Kaiyuan commented on ROCKETMQ-313:
-------------------------------------

[~Jaskey] 
I reported the same one several months ago. 
https://issues.apache.org/jira/browse/ROCKETMQ-248
And I believe I had already given a solution about this. Would you help to 
review the pull request?

> CONSUME_FROM_LAST_OFFSET doesn't work when queue is new
> -------------------------------------------------------
>
>                 Key: ROCKETMQ-313
>                 URL: https://issues.apache.org/jira/browse/ROCKETMQ-313
>             Project: Apache RocketMQ
>          Issue Type: Bug
>          Components: rocketmq-broker, rocketmq-client
>    Affects Versions: 4.0.0-incubating, 4.1.0-incubating
>            Reporter: Jaskey Lam
>            Assignee: yukon
>
> It has been reported that for a new consumer group, when user uses 
> CONSUME_FROM_LAST_OFFSET , the consumer still consumes the old messages.
> If a new consumer group starts, most of the case CONSUME_FROM_LAST_OFFSET 
> will work as expected, the code base is in queryConsumerOffset in 
> ConsumerManageProcessor.java.
> But sometimes It will return the min offset, which will be confusing. This 
> happens only when the topic is still quite new(minOffset==0) and no large 
> accumulation (checkInDiskByConsumeOffset=false). 
> {code}
>         if (offset >= 0) {
>             responseHeader.setOffset(offset);
>             response.setCode(ResponseCode.SUCCESS);
>             response.setRemark(null);
>         } else {
>             long minOffset =
>                 
> this.brokerController.getMessageStore().getMinOffsetInQuque(requestHeader.getTopic(),
>                     requestHeader.getQueueId());
>             if (minOffset <= 0
>                 && 
> !this.brokerController.getMessageStore().checkInDiskByConsumeOffset(
>                 requestHeader.getTopic(), requestHeader.getQueueId(), 0)) { 
> //here is why sometims consume_from_last does not work as expected
>                 responseHeader.setOffset(0L);
>                 response.setCode(ResponseCode.SUCCESS);
>                 response.setRemark(null);
>             } else {
>                 response.setCode(ResponseCode.QUERY_NOT_FOUND);
>                 response.setRemark("Not found, V3_0_6_SNAPSHOT maybe this 
> group consumer boot first");
>             }
>         }
> {code}
> Apparently this is to ensure that if a new queue is scalely created, messages 
> should still be consumed in the newly created queue.
> But this makes CONSUME_FROM_LAST_OFFSET  not work as expected.
> Similar bug is reported in https://issues.apache.org/jira/browse/ROCKETMQ-112 
> but it is closed as WON'T FIX.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to