??????????????????????????????????????????????????????????????????????????????????????????


------------------
   
hooligan




 




------------------ ???????? ------------------
??????: "404828407"<404828...@qq.com>;
????????: 2018??4??2??(??????) ????12:06
??????: "users"<users@rocketmq.apache.org>;

????: ???? RocketMQ Master????????????????????????????







RocketMQ Master????????????????????????????


??????????




????????RocketMQ??master??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????




??????????????

1.RocketMQ????????????3.2.6????

2.????????2??broker??????broker????1master + 
1slave??????????SYNC_MASTER??ASYNC_FLUSH??????

3.????broker??????????????????commitlog????????????????commitlog??????????????????????????




??????????

1.????????????????????????????????10????????????????????topic????????????????????????

2.??????????????????????????????broker????????????BrokerA??????master??????????????????????????????????kill
 -9????

3.????????????????????????????????????????master??




????????????????????????????????

1.BrokerA??slave????????????????master????????????????????????????????slave??????

2.????????????BrokerA??master????????????????????????????

3.????master????????????????????????????queue 
offset????????????????????????????????????queueOffset??

4.????master????????master??????????????????????????????10??????G??????

{


    "timestamp": "2017-12-28T00:18:48.620+0800",

    "level": "WARN",

    "thread": "FlushConsumeQueueService",

    "logger": "RocketmqStoreError",

    "message": "findMapedFileByOffset offset not matched, request Offset: 0, 
index: -6, mapedFileSize: 6000000, mapedFiles count: 2, StackTrace: 
\n\tjava.lang.Thread.getStackTrace(Thread.java:1567)\n\tcom.alibaba.rocketmq.common.UtilAll.currentStackTrace(UtilAll.java:59)\n\tcom.alibaba.rocketmq.store.MapedFileQueue.findMapedFileByOffset(MapedFileQueue.java:467)\n\tcom.alibaba.rocketmq.store.MapedFileQueue.commit(MapedFileQueue.java:442)\n\tcom.alibaba.rocketmq.store.ConsumeQueue.commit(ConsumeQueue.java:345)\n\tcom.alibaba.rocketmq.store.DefaultMessageStore$FlushConsumeQueueService.doFlush(DefaultMessageStore.java:1459)\n\tcom.alibaba.rocketmq.store.DefaultMessageStore$FlushConsumeQueueService.run(DefaultMessageStore.java:1479)\n\tjava.lang.Thread.run(Thread.java:722)"

}




5.????????????????????????????????????????????????????????????????????????

{

    "timestamp": "2017-12-28T00:39:01.748+0800",

    "level": "WARN",

    "thread": "PullMessageThread_15",

    "logger": "RocketmqStoreError",

    "message": "findMapedFileByOffset offset not matched, request Offset: 
19382879484, index: -7, mapedFileSize: 1073741824, mapedFiles count: 2, 
StackTrace: 
\n\tjava.lang.Thread.getStackTrace(Thread.java:1567)\n\tcom.alibaba.rocketmq.common.UtilAll.currentStackTrace(UtilAll.java:59)\n\tcom.alibaba.rocketmq.store.MapedFileQueue.findMapedFileByOffset(MapedFileQueue.java:467)\n\tcom.alibaba.rocketmq.store.CommitLog.getMessage(CommitLog.java:664)\n\tcom.alibaba.rocketmq.store.DefaultMessageStore.getMessage(DefaultMessageStore.java:546)\n\tcom.alibaba.rocketmq.broker.processor.PullMessageProcessor.processRequest(PullMessageProcessor.java:283)\n\tcom.alibaba.rocketmq.broker.processor.PullMessageProcessor.processRequest(PullMessageProcessor.java:84)\n\tcom.alibaba.rocketmq.remoting.netty.NettyRemotingAbstract$1.run(NettyRemotingAbstract.java:172)\n\tjava.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)\n\tjava.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)\n\tjava.util.concurrent.FutureTask.run(FutureTask.java:166)\n\tjava.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)\n\tjava.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)\n\tjava.lang.Thread.run(Thread.java:722)"

}







????????????????????????

??????????????????PullMessageProcessor????????????????????????????????????????????PullMessageProcessor??????DefaultMessageStore.getMessage()??????getMessage()????????????????CommitLog??public
 SelectMapedBufferResult getMessage(final long offset, final int size) 
??????????????????????MapedFileQueue??????findMapedFileByOffset(final long 
offset, final boolean returnFirstOnNotFound)??????????????



















????????????????????????????????DefaultMessageStore.getMessage()??offsetPy??????????????????????????????ConsumeQueue????????????????????????CommitlogOffset??????bufferConsumeQueue??????????????????????????????????









bufferConsumeQueue????????????offset????????offset????????queue??queueOffset??????offset??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????nextBeginOffset??????????????









??????????????????nextBeginOffset????????????????????nextBeginOffset????????????????????????????????????????????queueOffset????????????




??????????????????????????????????????????????????????????????????????????????DefaultMessageStore.getMessage()??????SelectMapedBufferResult
 selectResult = this.commitLog.getMessage(offsetPy, 
sizePy);??????????????selectResult????????null??????????????????????????GetMessageStatus.MESSAGE_WAS_REMOVING????????????????????????????????









????????????????PullMessageProcessor????????????????????????????????????????????????????????????









??????????MQClientAPIImpl??????PullResult processPullResponse(final 
RemotingCommand response) ????????????????????????NO_MATCHED_MSG????????










????????????????????DefaultMQPushConsumerImpl??pullMessage(final PullRequest 
pullRequest)????????PullCallback??????????????NO_MATCHED_MSG????????

????????nextBeginOffset????????????????????????????????











??????????????????????????????????????????????????????????????????????broker??????????????????????????????broker??????????????????????DefaultMessageStore.getMessage()??????????????offsetPy????????????commitlog
 
offset????????/home/logs/rocketmq/store/consumequeue????????????????????????????????????????????????????????????????????




??????????????????


master??????????master??????????????????????????????????????consumequeue??????master??slave????????????????????master????????????slave??????????????????????????slave????????????????queue
 
offset??master??slave??????????????master??????????????????????master??????????master????????????????master????????????????????queue
 offset??




????????slave????????/home/logs/rocketmq/store/consumequeue??master????????slave????????????offset??1000??15000??????????master??consumequeue????????????????1000??10000????master????????????????????slave????????????15000????master??????15000??????master??????????????????????DefaultMessageStore.getMessage()??????????offset
 
overflow??????????????maxOffset????????????????nextBeginOffset??????0????????consumequeue??minoffset??0????????????offset=0??????????????




??????0????????????????????????????????











????????????rocketmq??bug????????RocketMQ??????????????????????????????????????????????????????????




??????????????????????????????????????

??consumeQueue??minOffset=0????????????consumeQueue??????????queue??????????????????queue??????????????????????????????????maxOffset????????????????????????????????????0??????????????????????????????????????




??minOffset????0????????????queue????????????????????????????queue??????????????????????????maxOffset????????????????




??????????????????????????????????????topic??????????queue??????????????????????minOffset=0??(??????????????)????????master????????????slave??????????master????????????????????slave????????????queue??????????master????????????????????????master??????????????????????????????master??????????????????????????????????0????????????????????????????????????????????commitlog????????????????????????????????




??????????????????Apache RocketMQ 
4.2.0??????DefaultMessageStore.getMessage()????????????














????this.getMessageStoreConfig().isOffsetCheckInSlave()??????false??????????????slave??offset????????Apache??????????????????????????????????????????????????




Apache????????????????master????????slave??????master??????????????slave??????master??????????????????master????????minoffset??0????????0??????????????

??slave????????master??????slave??????????????master??????????master????????slave????????????????slave????????????????master??????????????????????????????slave??????????????????master??????slave??????????master??????????




??????????????????????????????????????????????????????????????????????????????????????????




??????????????????????????????????????????????????????????????????????????broker????????????????????master??slave??????????????????????????????????????????????????????master??????????????slave??????????????master????????????????????????commitlog??consumequeue????config??????????????????????????????????????????????????????????master????????????????????????????????




????????????????????????????




??????????????????????????RocketMQ??????????????????Apache??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????




????????Apache 
RocketMQ????????????4.3.0??????????????????????????????????????????????????????issue??https://issues.apache.org/jira/browse/ROCKETMQ-348




????????????????????????????????????????????????????????????????????????????????????????????????

Reply via email to