[jira] [Created] (ROCKETMQ-280) improve dependency management in parent pom
Eason Chen created ROCKETMQ-280: --- Summary: improve dependency management in parent pom Key: ROCKETMQ-280 URL: https://issues.apache.org/jira/browse/ROCKETMQ-280 Project: Apache RocketMQ Issue Type: Improvement Components: build Affects Versions: 4.1.0-incubating Environment: compile Reporter: Eason Chen Assignee: Stevens Chew Priority: Minor Fix For: 4.2.0-incubating {code:java} as is: org.apache.rocketmq rocketmq-filter ${project.version} to be: ${project.groupId} rocketmq-filter ${project.version} ${project.groupId} rocketmq-openmessaging ${project.version} {code} -- This message was sent by Atlassian JIRA (v6.4.14#64029)
[jira] [Updated] (ROCKETMQ-242) mqclient can not fetch nameSrvAddr periodly
[ 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)
[jira] [Updated] (ROCKETMQ-242) mqclient can not fetch nameSrvAddr periodly
[ 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= {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} 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= {panel:title=My title} Some text with a title {panel} > 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= > {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 >
[jira] [Updated] (ROCKETMQ-242) mqclient can not fetch nameSrvAddr periodly
[ 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= {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} 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() {
[jira] [Updated] (ROCKETMQ-242) mqclient can not fetch nameSrvAddr periodly
[ 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= {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} 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} 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() {
[jira] [Updated] (ROCKETMQ-242) mqclient can not fetch nameSrvAddr periodly
[ 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= {code} 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} 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= 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() {
[jira] [Created] (ROCKETMQ-250) fix fetchNSAddr error when it refer to jmenv.tbsite.net
Eason Chen created ROCKETMQ-250: --- Summary: fix fetchNSAddr error when it refer to jmenv.tbsite.net Key: ROCKETMQ-250 URL: https://issues.apache.org/jira/browse/ROCKETMQ-250 Project: Apache RocketMQ Issue Type: Improvement Components: rocketmq-commons Affects Versions: 4.1.0-incubating Environment: test and production Reporter: Eason Chen Assignee: Jixiang Jin Fix For: 4.2.0-incubating jmenv.tbsite.net may can not be reached in inner envirment when find it periodly we can return null when application does not set the new wsAddr. public final String fetchNSAddr(boolean verbose, long timeoutMills) { String url = this.wsAddr; try { if (this.wsAddr.equals(MixAll.WS_ADDR)) { return null; } if (!UtilAll.isBlank(this.unitName)) { url = url + "-" + this.unitName + "?nofix=1"; } HttpTinyClient.HttpResult result = HttpTinyClient.httpGet(url, null, null, "UTF-8", timeoutMills); if (200 == result.code) { String responseStr = result.content; if (responseStr != null) { return clearNewLine(responseStr); } else { log.error("fetch nameserver address is null"); } } else { log.error("fetch nameserver address failed. statusCode={}", result.code); } } catch (IOException e) { if (verbose) { log.error("fetch name server address exception", e); } } if (verbose) { String errorMsg = "connect to " + url + " failed, maybe the domain name " + MixAll.getWSAddr() + " not bind in /etc/hosts"; errorMsg += FAQUrl.suggestTodo(FAQUrl.NAME_SERVER_ADDR_NOT_EXIST_URL); log.warn(errorMsg); } return null; } -- This message was sent by Atlassian JIRA (v6.4.14#64029)
[jira] [Commented] (ROCKETMQ-242) mqclient can not fetch nameSrvAddr periodly
[ https://issues.apache.org/jira/browse/ROCKETMQ-242?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16101336#comment-16101336 ] Eason Chen commented on ROCKETMQ-242: - What if the specified namesrv is down and changed to another ip address? and the client can change namesrv dynamic and do not need to restart. > 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= > 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); > } -- This message was sent by Atlassian JIRA (v6.4.14#64029)
[jira] [Created] (ROCKETMQ-205) change the port of broker and restart it, but client still connect to previous port also
Eason Chen created ROCKETMQ-205: --- Summary: change the port of broker and restart it, but client still connect to previous port also Key: ROCKETMQ-205 URL: https://issues.apache.org/jira/browse/ROCKETMQ-205 Project: Apache RocketMQ Issue Type: Bug Reporter: Eason Chen Assignee: vongosling we start a broker and listen on 10911, client listen on it correctly then we change the port to 10915 and restart it client connect to 10915 correctly but still try to connect to 10911 and failed seems client did not update the broker address correctly -- This message was sent by Atlassian JIRA (v6.3.15#6346)
[jira] [Created] (ROCKETMQ-169) Support flow control when slave restarts and replicating from master
Eason Chen created ROCKETMQ-169: --- Summary: Support flow control when slave restarts and replicating from master Key: ROCKETMQ-169 URL: https://issues.apache.org/jira/browse/ROCKETMQ-169 Project: Apache RocketMQ Issue Type: Improvement Components: rocketmq-broker Affects Versions: 4.0.0-incubating Reporter: Eason Chen Assignee: yukon as we know slave replicates message from master, but when slave restarts the replicating will cause huge traffic which will impact sending messages, so we suggest supporting flow control for slave when restarts. -- This message was sent by Atlassian JIRA (v6.3.15#6346)
[jira] [Updated] (ROCKETMQ-164) findMappedFileByOffset failure, ArrayIndexOutOfBoundsException: -143
[ https://issues.apache.org/jira/browse/ROCKETMQ-164?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Eason Chen updated ROCKETMQ-164: Description: we use sync_master and slave, when slave left behind from master too long and then hit this exception when restart again maybe because comitlog has been deleted. wo suggest handle this exception. 2017-03-24 09:55:25 WARN PullMessageThread_4 - findMappedFileByOffset failure. java.lang.ArrayIndexOutOfBoundsException: -143 at java.util.concurrent.CopyOnWriteArrayList.get(CopyOnWriteArrayList.java:387) ~[na:1.8.0_121] at java.util.concurrent.CopyOnWriteArrayList.get(CopyOnWriteArrayList.java:396) ~[na:1.8.0_121] at org.apache.rocketmq.store.MappedFileQueue.findMappedFileByOffset(MappedFileQueue.java:476) ~[rocketmq-store-4.1.0-incubating-SNAPSHOT.jar:4.1.0-incubating-SNAPSHOT] at org.apache.rocketmq.store.CommitLog.getMessage(CommitLog.java:730) [rocketmq-store-4.1.0-incubating-SNAPSHOT.jar:4.1.0-incubating-SNAPSHOT] at org.apache.rocketmq.store.DefaultMessageStore.getMessage(DefaultMessageStore.java:430) [rocketmq-store-4.1.0-incubating-SNAPSHOT.jar:4.1.0-incubating-SNAPSHOT] at . at org.apache.rocketmq.broker.processor.PullMessageProcessor.processRequest(PullMessageProcessor.java:190) [rocketmq-broker-4.1.0-incubating-SNAPSHOT.jar:4.1.0-incubating-SNAPSHOT] at org.apache.rocketmq.broker.processor.PullMessageProcessor.processRequest(PullMessageProcessor.java:74) [rocketmq-broker-4.1.0-incubating-SNAPSHOT.jar:4.1.0-incubating-SNAPSHOT] at org.apache.rocketmq.remoting.netty.NettyRemotingAbstract$1.run(NettyRemotingAbstract.java:108) [rocketmq-remoting-4.1.0-incubating-SNAPSHOT.jar:4.1.0-incubating-SNAPSHOT] at org.apache.rocketmq.remoting.netty.RequestTask.run(RequestTask.java:80) [rocketmq-remoting-4.1.0-incubating-SNAPSHOT.jar:4.1.0-incubating-SNAPSHOT] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [na:1.8.0_121] at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_121] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_121] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_121] at java.lang.Thread.run(Thread.java:745) [na:1.8.0_121] 2017-03-24 09:55:25 WARN PullMessageThread_26 - findMappedFileByOffset failure. was: we use sync_master and slave, when slave left behind from master too long and then hit this exception when restart again maybe because comitlog has been deleted. wo suggest handle this exception. 2017-03-24 09:55:25 WARN PullMessageThread_4 - findMappedFileByOffset failure. java.lang.ArrayIndexOutOfBoundsException: -143 at java.util.concurrent.CopyOnWriteArrayList.get(CopyOnWriteArrayList.java:387) ~[na:1.8.0_121] at java.util.concurrent.CopyOnWriteArrayList.get(CopyOnWriteArrayList.java:396) ~[na:1.8.0_121] at org.apache.rocketmq.store.MappedFileQueue.findMappedFileByOffset(MappedFileQueue.java:476) ~[rocketmq-store-4.1.0-incubating-SNAPSHOT.jar:4.1.0-incubating-SNAPSHOT] at org.apache.rocketmq.store.CommitLog.getMessage(CommitLog.java:730) [rocketmq-store-4.1.0-incubating-SNAPSHOT.jar:4.1.0-incubating-SNAPSHOT] at org.apache.rocketmq.store.DefaultMessageStore.getMessage(DefaultMessageStore.java:430) [rocketmq-store-4.1.0-incubating-SNAPSHOT.jar:4.1.0-incubating-SNAPSHOT] at cn.webank.wemq.broker.plugin.WeMQPluginMessageStore.getMessage(WeMQPluginMessageStore.java:62) [wemq-broker-1.0.0-jdk8-SNAPSHOT.jar:1.0.0-jdk8-SNAPSHOT] at org.apache.rocketmq.broker.processor.PullMessageProcessor.processRequest(PullMessageProcessor.java:190) [rocketmq-broker-4.1.0-incubating-SNAPSHOT.jar:4.1.0-incubating-SNAPSHOT] at org.apache.rocketmq.broker.processor.PullMessageProcessor.processRequest(PullMessageProcessor.java:74) [rocketmq-broker-4.1.0-incubating-SNAPSHOT.jar:4.1.0-incubating-SNAPSHOT] at org.apache.rocketmq.remoting.netty.NettyRemotingAbstract$1.run(NettyRemotingAbstract.java:108) [rocketmq-remoting-4.1.0-incubating-SNAPSHOT.jar:4.1.0-incubating-SNAPSHOT] at org.apache.rocketmq.remoting.netty.RequestTask.run(RequestTask.java:80) [rocketmq-remoting-4.1.0-incubating-SNAPSHOT.jar:4.1.0-incubating-SNAPSHOT] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [na:1.8.0_121] at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_121] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_121] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_121] at java.lang.Thread.run(Thread.java:745) [na:1.8.0_121] 2017-03-24 09:55:25 WARN
[jira] [Created] (ROCKETMQ-164) findMappedFileByOffset failure, ArrayIndexOutOfBoundsException: -143
Eason Chen created ROCKETMQ-164: --- Summary: findMappedFileByOffset failure, ArrayIndexOutOfBoundsException: -143 Key: ROCKETMQ-164 URL: https://issues.apache.org/jira/browse/ROCKETMQ-164 Project: Apache RocketMQ Issue Type: Bug Components: rocketmq-store Affects Versions: 4.0.0-incubating Reporter: Eason Chen Assignee: yukon we use sync_master and slave, when slave left behind from master too long and then hit this exception when restart again maybe because comitlog has been deleted. wo suggest handle this exception. 2017-03-24 09:55:25 WARN PullMessageThread_4 - findMappedFileByOffset failure. java.lang.ArrayIndexOutOfBoundsException: -143 at java.util.concurrent.CopyOnWriteArrayList.get(CopyOnWriteArrayList.java:387) ~[na:1.8.0_121] at java.util.concurrent.CopyOnWriteArrayList.get(CopyOnWriteArrayList.java:396) ~[na:1.8.0_121] at org.apache.rocketmq.store.MappedFileQueue.findMappedFileByOffset(MappedFileQueue.java:476) ~[rocketmq-store-4.1.0-incubating-SNAPSHOT.jar:4.1.0-incubating-SNAPSHOT] at org.apache.rocketmq.store.CommitLog.getMessage(CommitLog.java:730) [rocketmq-store-4.1.0-incubating-SNAPSHOT.jar:4.1.0-incubating-SNAPSHOT] at org.apache.rocketmq.store.DefaultMessageStore.getMessage(DefaultMessageStore.java:430) [rocketmq-store-4.1.0-incubating-SNAPSHOT.jar:4.1.0-incubating-SNAPSHOT] at cn.webank.wemq.broker.plugin.WeMQPluginMessageStore.getMessage(WeMQPluginMessageStore.java:62) [wemq-broker-1.0.0-jdk8-SNAPSHOT.jar:1.0.0-jdk8-SNAPSHOT] at org.apache.rocketmq.broker.processor.PullMessageProcessor.processRequest(PullMessageProcessor.java:190) [rocketmq-broker-4.1.0-incubating-SNAPSHOT.jar:4.1.0-incubating-SNAPSHOT] at org.apache.rocketmq.broker.processor.PullMessageProcessor.processRequest(PullMessageProcessor.java:74) [rocketmq-broker-4.1.0-incubating-SNAPSHOT.jar:4.1.0-incubating-SNAPSHOT] at org.apache.rocketmq.remoting.netty.NettyRemotingAbstract$1.run(NettyRemotingAbstract.java:108) [rocketmq-remoting-4.1.0-incubating-SNAPSHOT.jar:4.1.0-incubating-SNAPSHOT] at org.apache.rocketmq.remoting.netty.RequestTask.run(RequestTask.java:80) [rocketmq-remoting-4.1.0-incubating-SNAPSHOT.jar:4.1.0-incubating-SNAPSHOT] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [na:1.8.0_121] at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_121] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_121] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_121] at java.lang.Thread.run(Thread.java:745) [na:1.8.0_121] 2017-03-24 09:55:25 WARN PullMessageThread_26 - findMappedFileByOffset failure. -- This message was sent by Atlassian JIRA (v6.3.15#6346)
[jira] [Closed] (ROCKETMQ-145) Hit ConcurrentModificationException in doWaitTransfer which happens very offen
[ https://issues.apache.org/jira/browse/ROCKETMQ-145?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Eason Chen closed ROCKETMQ-145. --- Resolution: Fixed > Hit ConcurrentModificationException in doWaitTransfer which happens very offen > -- > > Key: ROCKETMQ-145 > URL: https://issues.apache.org/jira/browse/ROCKETMQ-145 > Project: Apache RocketMQ > Issue Type: Bug > Components: rocketmq-store >Affects Versions: 4.0.0-incubating >Reporter: Eason Chen >Assignee: yukon > > we use master and slave , sync transfer and asyn flush, happens this very > offen: > 2017-03-17 20:12:38 WARN GroupTransferService - GroupTransferService service > has exception. > java.util.ConcurrentModificationException: null > at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:901) > ~[na:1.8.0_121] > at java.util.ArrayList$Itr.next(ArrayList.java:851) ~[na:1.8.0_121] > at > org.apache.rocketmq.store.ha.HAService$GroupTransferService.doWaitTransfer(HAService.java:277) > ~[rocketmq-store-4.0.0-incubating.jar:4.0.0-incubating] > at > org.apache.rocketmq.store.ha.HAService$GroupTransferService.run(HAService.java:301) > ~[rocketmq-store-4.0.0-incubating.jar:4.0.0-incubating] > at java.lang.Thread.run(Thread.java:745) [na:1.8.0_121] -- This message was sent by Atlassian JIRA (v6.3.15#6346)
[jira] [Commented] (ROCKETMQ-145) Hit ConcurrentModificationException in doWaitTransfer which happens very offen
[ https://issues.apache.org/jira/browse/ROCKETMQ-145?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15956189#comment-15956189 ] Eason Chen commented on ROCKETMQ-145: - seems fixed > Hit ConcurrentModificationException in doWaitTransfer which happens very offen > -- > > Key: ROCKETMQ-145 > URL: https://issues.apache.org/jira/browse/ROCKETMQ-145 > Project: Apache RocketMQ > Issue Type: Bug > Components: rocketmq-store >Affects Versions: 4.0.0-incubating >Reporter: Eason Chen >Assignee: yukon > > we use master and slave , sync transfer and asyn flush, happens this very > offen: > 2017-03-17 20:12:38 WARN GroupTransferService - GroupTransferService service > has exception. > java.util.ConcurrentModificationException: null > at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:901) > ~[na:1.8.0_121] > at java.util.ArrayList$Itr.next(ArrayList.java:851) ~[na:1.8.0_121] > at > org.apache.rocketmq.store.ha.HAService$GroupTransferService.doWaitTransfer(HAService.java:277) > ~[rocketmq-store-4.0.0-incubating.jar:4.0.0-incubating] > at > org.apache.rocketmq.store.ha.HAService$GroupTransferService.run(HAService.java:301) > ~[rocketmq-store-4.0.0-incubating.jar:4.0.0-incubating] > at java.lang.Thread.run(Thread.java:745) [na:1.8.0_121] -- This message was sent by Atlassian JIRA (v6.3.15#6346)
[jira] [Commented] (ROCKETMQ-146) Hit "port out of range:" in decodeMessageId happens sometimes
[ https://issues.apache.org/jira/browse/ROCKETMQ-146?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15956186#comment-15956186 ] Eason Chen commented on ROCKETMQ-146: - yeah, we can fix it > Hit "port out of range:" in decodeMessageId happens sometimes > - > > Key: ROCKETMQ-146 > URL: https://issues.apache.org/jira/browse/ROCKETMQ-146 > Project: Apache RocketMQ > Issue Type: Bug > Components: rocketmq-client, rocketmq-commons >Reporter: Eason Chen >Assignee: yukon > Attachments: {A99BE06A-745B-4FA8-859D-EFB6FB18E851}.png > > -- This message was sent by Atlassian JIRA (v6.3.15#6346)
[jira] [Commented] (ROCKETMQ-125) Support more intellective HA architecture
[ https://issues.apache.org/jira/browse/ROCKETMQ-125?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15956179#comment-15956179 ] Eason Chen commented on ROCKETMQ-125: - Have this feature get started? or some discussion on it? > Support more intellective HA architecture > - > > Key: ROCKETMQ-125 > URL: https://issues.apache.org/jira/browse/ROCKETMQ-125 > Project: Apache RocketMQ > Issue Type: Wish > Components: rocketmq-broker, rocketmq-store >Reporter: yukon >Priority: Minor > > RocketMQ uses master-slave as HA architecture, which has low latency and high > throughput features, but this program need human intervention to recover from > abnormal situations. > So, we want to support a multi-replication high availability/reliability > mechanism, without human intervention. -- This message was sent by Atlassian JIRA (v6.3.15#6346)
[jira] [Commented] (ROCKETMQ-151) Support one slave map to two master
[ https://issues.apache.org/jira/browse/ROCKETMQ-151?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15932514#comment-15932514 ] Eason Chen commented on ROCKETMQ-151: - of course i can but network is not enough > Support one slave map to two master > --- > > Key: ROCKETMQ-151 > URL: https://issues.apache.org/jira/browse/ROCKETMQ-151 > Project: Apache RocketMQ > Issue Type: Improvement >Reporter: Eason Chen >Assignee: vongosling > > since slave can not be used 100% ,but we do need it to backup message, it is > big waste to have so many slaves, so if it can let one slave map to two or > more master -- This message was sent by Atlassian JIRA (v6.3.15#6346)
[jira] [Created] (ROCKETMQ-151) Support one slave map to two master
Eason Chen created ROCKETMQ-151: --- Summary: Support one slave map to two master Key: ROCKETMQ-151 URL: https://issues.apache.org/jira/browse/ROCKETMQ-151 Project: Apache RocketMQ Issue Type: Improvement Reporter: Eason Chen Assignee: vongosling since slave can not be used 100% ,but we do need it to backup message, it is big waste to have so many slaves, so if it can let one slave map to two or more master -- This message was sent by Atlassian JIRA (v6.3.15#6346)
[jira] [Created] (ROCKETMQ-150) Support both OuterIP and InnerIP
Eason Chen created ROCKETMQ-150: --- Summary: Support both OuterIP and InnerIP Key: ROCKETMQ-150 URL: https://issues.apache.org/jira/browse/ROCKETMQ-150 Project: Apache RocketMQ Issue Type: Wish Components: rocketmq-broker Reporter: Eason Chen Assignee: yukon client connect to outer ip broker listen on innerip how to connect them is a problem -- This message was sent by Atlassian JIRA (v6.3.15#6346)
[jira] [Created] (ROCKETMQ-147) Support usrname+passwd authentication and ip+topic certification
Eason Chen created ROCKETMQ-147: --- Summary: Support usrname+passwd authentication and ip+topic certification Key: ROCKETMQ-147 URL: https://issues.apache.org/jira/browse/ROCKETMQ-147 Project: Apache RocketMQ Issue Type: Wish Components: rocketmq-broker Reporter: Eason Chen Assignee: yukon It will be very helpfull if support usrname+passwd authentication and ip+topic certification in production -- This message was sent by Atlassian JIRA (v6.3.15#6346)
[jira] [Created] (ROCKETMQ-146) Hit "port out of range:" in decodeMessageId happens sometimes
Eason Chen created ROCKETMQ-146: --- Summary: Hit "port out of range:" in decodeMessageId happens sometimes Key: ROCKETMQ-146 URL: https://issues.apache.org/jira/browse/ROCKETMQ-146 Project: Apache RocketMQ Issue Type: Bug Components: rocketmq-client, rocketmq-commons Reporter: Eason Chen Assignee: Xiaorui Wang Attachments: {A99BE06A-745B-4FA8-859D-EFB6FB18E851}.png -- This message was sent by Atlassian JIRA (v6.3.15#6346)
[jira] [Created] (ROCKETMQ-145) Hit ConcurrentModificationException in doWaitTransfer which happens very offen
Eason Chen created ROCKETMQ-145: --- Summary: Hit ConcurrentModificationException in doWaitTransfer which happens very offen Key: ROCKETMQ-145 URL: https://issues.apache.org/jira/browse/ROCKETMQ-145 Project: Apache RocketMQ Issue Type: Bug Components: rocketmq-store Affects Versions: 4.0.0-incubating Reporter: Eason Chen Assignee: yukon we use master and slave , sync transfer and asyn flush, happens this very offen: 2017-03-17 20:12:38 WARN GroupTransferService - GroupTransferService service has exception. java.util.ConcurrentModificationException: null at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:901) ~[na:1.8.0_121] at java.util.ArrayList$Itr.next(ArrayList.java:851) ~[na:1.8.0_121] at org.apache.rocketmq.store.ha.HAService$GroupTransferService.doWaitTransfer(HAService.java:277) ~[rocketmq-store-4.0.0-incubating.jar:4.0.0-incubating] at org.apache.rocketmq.store.ha.HAService$GroupTransferService.run(HAService.java:301) ~[rocketmq-store-4.0.0-incubating.jar:4.0.0-incubating] at java.lang.Thread.run(Thread.java:745) [na:1.8.0_121] -- This message was sent by Atlassian JIRA (v6.3.15#6346)
[jira] [Updated] (ROCKETMQ-130) Support depth control by topic level
[ https://issues.apache.org/jira/browse/ROCKETMQ-130?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Eason Chen updated ROCKETMQ-130: Component/s: rocketmq-broker > Support depth control by topic level > > > Key: ROCKETMQ-130 > URL: https://issues.apache.org/jira/browse/ROCKETMQ-130 > Project: Apache RocketMQ > Issue Type: Improvement > Components: rocketmq-broker >Reporter: Eason Chen >Assignee: vongosling > > Faster producer topic will impact slower producer topic when they are in the > same broker, so we need depth control to limit the faster guy. -- This message was sent by Atlassian JIRA (v6.3.15#6346)
[jira] [Updated] (ROCKETMQ-137) no longer pull message when clean expired message earlier than callback return CONSUME_SUCCESS because of flow control
[ https://issues.apache.org/jira/browse/ROCKETMQ-137?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Eason Chen updated ROCKETMQ-137: Attachment: QQ截图20170309181305.png QQ截图20170309181223.png > no longer pull message when clean expired message earlier than callback > return CONSUME_SUCCESS because of flow control > -- > > Key: ROCKETMQ-137 > URL: https://issues.apache.org/jira/browse/ROCKETMQ-137 > Project: Apache RocketMQ > Issue Type: Bug > Components: rocketmq-client >Affects Versions: 4.1.0-incubating >Reporter: Eason Chen >Assignee: Xiaorui Wang > Attachments: QQ截图20170309181223.png, QQ截图20170309181305.png > > > no longer pull message when clean expired message earlier than callback > return CONSUME_SUCCESS because of flow control -- This message was sent by Atlassian JIRA (v6.3.15#6346)
[jira] [Created] (ROCKETMQ-137) no longer pull message when clean expired message earlier than callback return CONSUME_SUCCESS because of flow control
Eason Chen created ROCKETMQ-137: --- Summary: no longer pull message when clean expired message earlier than callback return CONSUME_SUCCESS because of flow control Key: ROCKETMQ-137 URL: https://issues.apache.org/jira/browse/ROCKETMQ-137 Project: Apache RocketMQ Issue Type: Bug Components: rocketmq-client Affects Versions: 4.1.0-incubating Reporter: Eason Chen Assignee: Xiaorui Wang no longer pull message when clean expired message earlier than callback return CONSUME_SUCCESS because of flow control -- This message was sent by Atlassian JIRA (v6.3.15#6346)
[jira] [Created] (ROCKETMQ-133) Support message ttl
Eason Chen created ROCKETMQ-133: --- Summary: Support message ttl Key: ROCKETMQ-133 URL: https://issues.apache.org/jira/browse/ROCKETMQ-133 Project: Apache RocketMQ Issue Type: Improvement Components: rocketmq-broker, rocketmq-store Reporter: Eason Chen Assignee: yukon we do not need the message when it is time out,delete it automatically by broker -- This message was sent by Atlassian JIRA (v6.3.15#6346)
[jira] [Created] (ROCKETMQ-132) Support request/response invoke mode like sync RPC
Eason Chen created ROCKETMQ-132: --- Summary: Support request/response invoke mode like sync RPC Key: ROCKETMQ-132 URL: https://issues.apache.org/jira/browse/ROCKETMQ-132 Project: Apache RocketMQ Issue Type: Wish Reporter: Eason Chen Assignee: vongosling Mostly business need to wait a response after send a request,just like sync RPC -- This message was sent by Atlassian JIRA (v6.3.15#6346)
[jira] [Created] (ROCKETMQ-131) Hit brief pause when delete expire file periodicity
Eason Chen created ROCKETMQ-131: --- Summary: Hit brief pause when delete expire file periodicity Key: ROCKETMQ-131 URL: https://issues.apache.org/jira/browse/ROCKETMQ-131 Project: Apache RocketMQ Issue Type: Bug Components: rocketmq-store Reporter: Eason Chen Assignee: yukon Hit brief pause when delete expire file periodicity, meanwhile producer and consumer latency will become higher than normal -- This message was sent by Atlassian JIRA (v6.3.15#6346)
[jira] [Created] (ROCKETMQ-130) Support depth control by topic level
Eason Chen created ROCKETMQ-130: --- Summary: Support depth control by topic level Key: ROCKETMQ-130 URL: https://issues.apache.org/jira/browse/ROCKETMQ-130 Project: Apache RocketMQ Issue Type: Improvement Reporter: Eason Chen Assignee: vongosling Faster producer topic will impact slower producer topic when they are in the same broker, so we need depth control to limit the faster guy. -- This message was sent by Atlassian JIRA (v6.3.15#6346)
[jira] [Created] (ROCKETMQ-128) Support HA switch automatically
Eason Chen created ROCKETMQ-128: --- Summary: Support HA switch automatically Key: ROCKETMQ-128 URL: https://issues.apache.org/jira/browse/ROCKETMQ-128 Project: Apache RocketMQ Issue Type: Wish Components: rocketmq-broker Affects Versions: 4.0.0-incubating Reporter: Eason Chen Assignee: yukon Fix For: 4.1.0-incubating Ha is an very important feature in production , when server crash, how to keep continuity of business is the first job. -- This message was sent by Atlassian JIRA (v6.3.15#6346)