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

ASF GitHub Bot commented on ROCKETMQ-265:
-----------------------------------------

Github user zhouxinyu commented on a diff in the pull request:

    https://github.com/apache/incubator-rocketmq/pull/146#discussion_r134938289
  
    --- Diff: 
store/src/test/java/org/apache/rocketmq/store/ConsumeQueueTest.java ---
    @@ -148,6 +148,52 @@ protected void deleteFile(File file) {
         }
     
         @Test
    +    public void 
test_putMessagePositionInfo_build_consume_queue_idempotent() {
    +        DefaultMessageStore messageStore = null;
    +        try {
    +
    +            messageStore = gen();
    +
    +            int totalMessages = 10;
    +
    +            for (int i = 0; i < totalMessages; i++) {
    +                putMsg(messageStore);
    +            }
    +            Thread.sleep(5);
    +
    +            ConsumeQueue cq = 
messageStore.getConsumeQueueTable().get(topic).get(queueId);
    +            Method method = 
cq.getClass().getDeclaredMethod("putMessagePositionInfo", long.class, 
int.class, long.class, long.class);
    +
    +            assertThat(method).isNotNull();
    +
    +            method.setAccessible(true);
    +
    +            SelectMappedBufferResult result = 
messageStore.getCommitLog().getData(0);
    +            assertThat(result != null).isTrue();
    +
    +            DispatchRequest dispatchRequest = 
messageStore.getCommitLog().checkMessageAndReturnSize(result.getByteBuffer(), 
false, false);
    +
    +            assertThat(cq).isNotNull();
    +
    +            Object dispatchResult = method.invoke(cq, 
dispatchRequest.getCommitLogOffset(),
    +                dispatchRequest.getMsgSize(), 
dispatchRequest.getTagsCode(), dispatchRequest.getConsumeQueueOffset());
    +
    +            
assertThat(Boolean.parseBoolean(dispatchResult.toString())).isTrue();
    +
    +        } catch (Exception e) {
    +            e.printStackTrace();
    +            assertThat(Boolean.FALSE).isTrue();
    --- End diff --
    
    `assertThat(Boolean.FALSE).isTrue()`, it's really a trick, there is no need 
to catch exception, we can just add exception to method signature.


> when os crash for some reasons, the broker consume queue’s data maybe repeat, 
> consumer can’t pull the latest message, cause message lag
> ---------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: ROCKETMQ-265
>                 URL: https://issues.apache.org/jira/browse/ROCKETMQ-265
>             Project: Apache RocketMQ
>          Issue Type: Bug
>          Components: rocketmq-store
>    Affects Versions: 4.0.0-incubating, 4.1.0-incubating
>            Reporter: yubaofu
>            Assignee: yukon
>            Priority: Critical
>              Labels: bug
>             Fix For: 4.2.0-incubating
>
>   Original Estimate: 24h
>  Remaining Estimate: 24h
>
> when os crash for some reasons, the broker consume queue’s data maybe repeat, 
> consumer can’t pull the latest message, cause message lag



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

Reply via email to