You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@rocketmq.apache.org by "vongosling (JIRA)" <ji...@apache.org> on 2017/12/13 12:35:00 UTC
[jira] [Closed] (ROCKETMQ-184) It takes too long(3-33 seconds) to
switch to read from slave when master crashes
[ https://issues.apache.org/jira/browse/ROCKETMQ-184?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
vongosling closed ROCKETMQ-184.
-------------------------------
Resolution: Later
> It takes too long(3-33 seconds) to switch to read from slave when master crashes
> --------------------------------------------------------------------------------
>
> Key: ROCKETMQ-184
> URL: https://issues.apache.org/jira/browse/ROCKETMQ-184
> Project: Apache RocketMQ
> Issue Type: Improvement
> Components: rocketmq-client, rocketmq-remoting
> Reporter: Jaskey Lam
> Assignee: Xiaorui Wang
> Fix For: 4.2.0
>
>
> When master crashes, no notifier callback is triggered to pull message again.
> Instead, it relies on the scan service to trigger timeout and then re pull.
> But the pulling command has 30 seconds timeout, and after timeout, pulling operation will be scheduled after 3 seconds.
> So it takes 3 to 33 seconds to switch to slave, which is too long and can be optimized.
> The root cause is the below repull cost too long to be triggered when master crashes
> {code}
> @Override
> public void onException(Throwable e) {
> if (!pullRequest.getMessageQueue().getTopic().startsWith(MixAll.RETRY_GROUP_TOPIC_PREFIX)) {
> log.warn("execute the pull request exception", e);
> }
> DefaultMQPushConsumerImpl.this.executePullRequestLater(pullRequest, PULL_TIME_DELAY_MILLS_WHEN_EXCEPTION);
> }
> {code}
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)