[ 
https://issues.apache.org/jira/browse/ROCKETMQ-242?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Eason Chen updated ROCKETMQ-242:
--------------------------------
    Description: 
when mqclientinstance start, it getNameSrvAddr once by bellow code:
 if (null == this.clientConfig.getNamesrvAddr()) {
                        
this.clientConfig.setNamesrvAddr(this.mQClientAPIImpl.fetchNameServerAddr());
                    }

but in startScheduledTask(),it will not start the schedule task if namesrvAddr 
is not null

================code=====================

{panel:title=My title}
Some text with a title
{panel}


  was:
when mqclientinstance start, it getNameSrvAddr once by bellow code:
 if (null == this.clientConfig.getNamesrvAddr()) {
                        
this.clientConfig.setNamesrvAddr(this.mQClientAPIImpl.fetchNameServerAddr());
                    }

but in startScheduledTask(),it will not start the schedule task if namesrvAddr 
is not null

================code=====================


{code:java}
public void start() throws MQClientException {

        synchronized (this) {
            switch (this.serviceState) {
                case CREATE_JUST:
                    this.serviceState = ServiceState.START_FAILED;
                    // If not specified,looking address from name server
                   *{color:red} if (null == this.clientConfig.getNamesrvAddr()) 
{
                        
this.clientConfig.setNamesrvAddr(this.mQClientAPIImpl.fetchNameServerAddr());
                    }{color}*
                    // Start request-response channel
                    this.mQClientAPIImpl.start();
                    // Start various schedule tasks
                    this.startScheduledTask();
                    // Start pull service
                    this.pullMessageService.start();
                    // Start rebalance service
                    this.rebalanceService.start();
                    // Start push service
                    
this.defaultMQProducer.getDefaultMQProducerImpl().start(false);
                    log.info("the client factory [{}] start OK", this.clientId);
                    this.serviceState = ServiceState.RUNNING;
                    break;
                case RUNNING:
                    break;
                case SHUTDOWN_ALREADY:
                    break;
                case START_FAILED:
                    throw new MQClientException("The Factory object[" + 
this.getClientId() + "] has been created before, and failed.", null);
                default:
                    break;
            }
        }
    }

private void startScheduledTask() {
      *{color:red} if (null == this.clientConfig.getNamesrvAddr()) {{color}*
            this.scheduledExecutorService.scheduleAtFixedRate(new Runnable() {

                @Override
                public void run() {
                    try {
                        
MQClientInstance.this.mQClientAPIImpl.fetchNameServerAddr();
                    } catch (Exception e) {
                        log.error("ScheduledTask fetchNameServerAddr 
exception", e);
                    }
                }
            }, 1000 * 10, 1000 * 60 * 2, TimeUnit.MILLISECONDS);
        }
{code}




> mqclient can not fetch nameSrvAddr periodly
> -------------------------------------------
>
>                 Key: ROCKETMQ-242
>                 URL: https://issues.apache.org/jira/browse/ROCKETMQ-242
>             Project: Apache RocketMQ
>          Issue Type: Bug
>          Components: rocketmq-client
>    Affects Versions: 4.0.0-incubating, 4.1.0-incubating
>         Environment: test and production
>            Reporter: Eason Chen
>            Assignee: Xiaorui Wang
>             Fix For: 4.2.0-incubating
>
>
> when mqclientinstance start, it getNameSrvAddr once by bellow code:
>  if (null == this.clientConfig.getNamesrvAddr()) {
>                         
> this.clientConfig.setNamesrvAddr(this.mQClientAPIImpl.fetchNameServerAddr());
>                     }
> but in startScheduledTask(),it will not start the schedule task if 
> namesrvAddr is not null
> ================code=====================
> {panel:title=My title}
> Some text with a title
> {panel}



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

Reply via email to