From 02a2d0eab3c5ffccd74a2226ed0d5b59509c3d21 Mon Sep 17 00:00:00 2001 From: wusheng Date: Wed, 11 Jan 2017 10:34:18 +0800 Subject: [PATCH 1/8] fix/ROCKETMQ-39: avoid duplicated codes. --- .../rocketmq/filtersrv/FiltersrvStartup.java | 23 +++----- .../rocketmq/namesrv/NamesrvStartup.java | 34 ++++-------- .../rocketmq/srvutil/ShutdownHookThread.java | 55 +++++++++++++++++++ 3 files changed, 74 insertions(+), 38 deletions(-) create mode 100644 srvutil/src/main/java/org/apache/rocketmq/srvutil/ShutdownHookThread.java diff --git a/filtersrv/src/main/java/org/apache/rocketmq/filtersrv/FiltersrvStartup.java b/filtersrv/src/main/java/org/apache/rocketmq/filtersrv/FiltersrvStartup.java index 5dd15dd5320..2cd76f0b174 100644 --- a/filtersrv/src/main/java/org/apache/rocketmq/filtersrv/FiltersrvStartup.java +++ b/filtersrv/src/main/java/org/apache/rocketmq/filtersrv/FiltersrvStartup.java @@ -22,6 +22,7 @@ import java.io.FileInputStream; import java.io.InputStream; import java.util.Properties; +import java.util.concurrent.Callable; import java.util.concurrent.atomic.AtomicInteger; import org.apache.commons.cli.CommandLine; import org.apache.commons.cli.Option; @@ -34,6 +35,7 @@ import org.apache.rocketmq.remoting.netty.NettySystemConfig; import org.apache.rocketmq.remoting.protocol.RemotingCommand; import org.apache.rocketmq.srvutil.ServerUtil; +import org.apache.rocketmq.srvutil.ShutdownHookThread; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -135,24 +137,13 @@ public static FiltersrvController createController(String[] args) { System.exit(-3); } - Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() { - private volatile boolean hasShutdown = false; - private AtomicInteger shutdownTimes = new AtomicInteger(0); - + Runtime.getRuntime().addShutdownHook(new ShutdownHookThread(log, new Callable() { @Override - public void run() { - synchronized (this) { - log.info("shutdown hook was invoked, " + this.shutdownTimes.incrementAndGet()); - if (!this.hasShutdown) { - this.hasShutdown = true; - long begineTime = System.currentTimeMillis(); - controller.shutdown(); - long consumingTimeTotal = System.currentTimeMillis() - begineTime; - log.info("shutdown hook over, consuming time total(ms): " + consumingTimeTotal); - } - } + public Object call() throws Exception { + controller.shutdown(); + return null; } - }, "ShutdownHook")); + })); return controller; } catch (Throwable e) { diff --git a/namesrv/src/main/java/org/apache/rocketmq/namesrv/NamesrvStartup.java b/namesrv/src/main/java/org/apache/rocketmq/namesrv/NamesrvStartup.java index 4fa97ad0a45..fca23c5506a 100644 --- a/namesrv/src/main/java/org/apache/rocketmq/namesrv/NamesrvStartup.java +++ b/namesrv/src/main/java/org/apache/rocketmq/namesrv/NamesrvStartup.java @@ -18,11 +18,14 @@ import ch.qos.logback.classic.LoggerContext; import ch.qos.logback.classic.joran.JoranConfigurator; + import java.io.BufferedInputStream; import java.io.FileInputStream; import java.io.InputStream; import java.util.Properties; +import java.util.concurrent.Callable; import java.util.concurrent.atomic.AtomicInteger; + import org.apache.commons.cli.CommandLine; import org.apache.commons.cli.Option; import org.apache.commons.cli.Options; @@ -35,11 +38,12 @@ import org.apache.rocketmq.remoting.netty.NettySystemConfig; import org.apache.rocketmq.remoting.protocol.RemotingCommand; import org.apache.rocketmq.srvutil.ServerUtil; +import org.apache.rocketmq.srvutil.ShutdownHookThread; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class NamesrvStartup { - public static Properties properties = null; + public static Properties properties = null; public static CommandLine commandLine = null; public static void main(String[] args) { @@ -61,9 +65,7 @@ public static NamesrvController main0(String[] args) { //PackageConflictDetect.detectFastjson(); Options options = ServerUtil.buildCommandlineOptions(new Options()); - commandLine = - ServerUtil.parseCmdLine("mqnamesrv", args, buildCommandlineOptions(options), - new PosixParser()); + commandLine = ServerUtil.parseCmdLine("mqnamesrv", args, buildCommandlineOptions(options), new PosixParser()); if (null == commandLine) { System.exit(-1); return null; @@ -97,8 +99,7 @@ public static NamesrvController main0(String[] args) { MixAll.properties2Object(ServerUtil.commandLine2Properties(commandLine), namesrvConfig); if (null == namesrvConfig.getRocketmqHome()) { - System.out.printf("Please set the " + MixAll.ROCKETMQ_HOME_ENV - + " variable in your environment to match the location of the RocketMQ installation%n"); + System.out.printf("Please set the " + MixAll.ROCKETMQ_HOME_ENV + " variable in your environment to match the location of the RocketMQ installation%n"); System.exit(-2); } @@ -123,24 +124,13 @@ public static NamesrvController main0(String[] args) { System.exit(-3); } - Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() { - private volatile boolean hasShutdown = false; - private AtomicInteger shutdownTimes = new AtomicInteger(0); - + Runtime.getRuntime().addShutdownHook(new ShutdownHookThread(log, new Callable() { @Override - public void run() { - synchronized (this) { - log.info("shutdown hook was invoked, " + this.shutdownTimes.incrementAndGet()); - if (!this.hasShutdown) { - this.hasShutdown = true; - long begineTime = System.currentTimeMillis(); - controller.shutdown(); - long consumingTimeTotal = System.currentTimeMillis() - begineTime; - log.info("shutdown hook over, consuming time total(ms): " + consumingTimeTotal); - } - } + public Object call() throws Exception { + controller.shutdown(); + return null; } - }, "ShutdownHook")); + })); controller.start(); diff --git a/srvutil/src/main/java/org/apache/rocketmq/srvutil/ShutdownHookThread.java b/srvutil/src/main/java/org/apache/rocketmq/srvutil/ShutdownHookThread.java new file mode 100644 index 00000000000..1e9a518fca5 --- /dev/null +++ b/srvutil/src/main/java/org/apache/rocketmq/srvutil/ShutdownHookThread.java @@ -0,0 +1,55 @@ +package org.apache.rocketmq.srvutil; + +import org.slf4j.Logger; + +import java.util.concurrent.Callable; +import java.util.concurrent.atomic.AtomicInteger; + +/** + * {@link ShutdownHookThread} is the standard hook for filtersrv and namesrv modules. + * Through {@link Callable} interface, this hook can customization operations in anywhere. + *

+ * Created by wusheng on 2017/1/11. + */ +public class ShutdownHookThread extends Thread { + private volatile boolean hasShutdown = false; + private AtomicInteger shutdownTimes = new AtomicInteger(0); + private final Logger log; + private final Callable callback; + + /** + * Create the standard hook thread, with a call back, by using {@link Callable} interface. + * + * @param log The log instance is used in hook thread. + * @param callback The call back function. + */ + public ShutdownHookThread(Logger log, Callable callback) { + super("ShutdownHook"); + this.log = log; + this.callback = callback; + } + + /** + * Thread run method. + * Invoke when the jvm shutdown. + * 1. count the invocation times. + * 2. execute the {@link ShutdownHookThread#callback}, and time it. + */ + @Override + public void run() { + synchronized (this) { + log.info("shutdown hook was invoked, " + this.shutdownTimes.incrementAndGet() + " times."); + if (!this.hasShutdown) { + this.hasShutdown = true; + long beginTime = System.currentTimeMillis(); + try { + this.callback.call(); + } catch (Exception e) { + log.error("shutdown hook callback invoked failure.", e); + } + long consumingTimeTotal = System.currentTimeMillis() - beginTime; + log.info("shutdown hook done, consuming time total(ms): " + consumingTimeTotal); + } + } + } +} From cf1e51f3cb858d38f60b0df16fdfa78eb2ddde6c Mon Sep 17 00:00:00 2001 From: wusheng Date: Wed, 11 Jan 2017 11:04:45 +0800 Subject: [PATCH 2/8] fix/ROCKETMQ-39: additional Apache 2.0 license. --- .../rocketmq/filtersrv/FiltersrvStartup.java | 8 ++++-- .../rocketmq/srvutil/ShutdownHookThread.java | 28 +++++++++++++++---- 2 files changed, 28 insertions(+), 8 deletions(-) diff --git a/filtersrv/src/main/java/org/apache/rocketmq/filtersrv/FiltersrvStartup.java b/filtersrv/src/main/java/org/apache/rocketmq/filtersrv/FiltersrvStartup.java index 2cd76f0b174..44f77546c7f 100644 --- a/filtersrv/src/main/java/org/apache/rocketmq/filtersrv/FiltersrvStartup.java +++ b/filtersrv/src/main/java/org/apache/rocketmq/filtersrv/FiltersrvStartup.java @@ -50,7 +50,8 @@ public static FiltersrvController start(FiltersrvController controller) { try { controller.start(); - } catch (Exception e) { + } + catch (Exception e) { e.printStackTrace(); System.exit(-1); } @@ -122,7 +123,7 @@ public static FiltersrvController createController(String[] args) { System.exit(-2); } - LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory(); + LoggerContext lc = (LoggerContext)LoggerFactory.getILoggerFactory(); JoranConfigurator configurator = new JoranConfigurator(); configurator.setContext(lc); lc.reset(); @@ -146,7 +147,8 @@ public Object call() throws Exception { })); return controller; - } catch (Throwable e) { + } + catch (Throwable e) { e.printStackTrace(); System.exit(-1); } diff --git a/srvutil/src/main/java/org/apache/rocketmq/srvutil/ShutdownHookThread.java b/srvutil/src/main/java/org/apache/rocketmq/srvutil/ShutdownHookThread.java index 1e9a518fca5..0787d6d2002 100644 --- a/srvutil/src/main/java/org/apache/rocketmq/srvutil/ShutdownHookThread.java +++ b/srvutil/src/main/java/org/apache/rocketmq/srvutil/ShutdownHookThread.java @@ -1,3 +1,20 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package org.apache.rocketmq.srvutil; import org.slf4j.Logger; @@ -12,15 +29,15 @@ * Created by wusheng on 2017/1/11. */ public class ShutdownHookThread extends Thread { - private volatile boolean hasShutdown = false; - private AtomicInteger shutdownTimes = new AtomicInteger(0); - private final Logger log; + private volatile boolean hasShutdown = false; + private AtomicInteger shutdownTimes = new AtomicInteger(0); + private final Logger log; private final Callable callback; /** * Create the standard hook thread, with a call back, by using {@link Callable} interface. * - * @param log The log instance is used in hook thread. + * @param log The log instance is used in hook thread. * @param callback The call back function. */ public ShutdownHookThread(Logger log, Callable callback) { @@ -44,7 +61,8 @@ public void run() { long beginTime = System.currentTimeMillis(); try { this.callback.call(); - } catch (Exception e) { + } + catch (Exception e) { log.error("shutdown hook callback invoked failure.", e); } long consumingTimeTotal = System.currentTimeMillis() - beginTime; From 528641f3726958e51a0f0ca05f916af9a5dd8fc3 Mon Sep 17 00:00:00 2001 From: wusheng Date: Wed, 11 Jan 2017 11:30:08 +0800 Subject: [PATCH 3/8] fix/ROCKETMQ-39: remove unused import. --- .../java/org/apache/rocketmq/filtersrv/FiltersrvStartup.java | 1 - .../main/java/org/apache/rocketmq/namesrv/NamesrvStartup.java | 3 --- .../java/org/apache/rocketmq/srvutil/ShutdownHookThread.java | 3 +-- 3 files changed, 1 insertion(+), 6 deletions(-) diff --git a/filtersrv/src/main/java/org/apache/rocketmq/filtersrv/FiltersrvStartup.java b/filtersrv/src/main/java/org/apache/rocketmq/filtersrv/FiltersrvStartup.java index 44f77546c7f..2ddd438d139 100644 --- a/filtersrv/src/main/java/org/apache/rocketmq/filtersrv/FiltersrvStartup.java +++ b/filtersrv/src/main/java/org/apache/rocketmq/filtersrv/FiltersrvStartup.java @@ -23,7 +23,6 @@ import java.io.InputStream; import java.util.Properties; import java.util.concurrent.Callable; -import java.util.concurrent.atomic.AtomicInteger; import org.apache.commons.cli.CommandLine; import org.apache.commons.cli.Option; import org.apache.commons.cli.Options; diff --git a/namesrv/src/main/java/org/apache/rocketmq/namesrv/NamesrvStartup.java b/namesrv/src/main/java/org/apache/rocketmq/namesrv/NamesrvStartup.java index fca23c5506a..8ea183e3dcb 100644 --- a/namesrv/src/main/java/org/apache/rocketmq/namesrv/NamesrvStartup.java +++ b/namesrv/src/main/java/org/apache/rocketmq/namesrv/NamesrvStartup.java @@ -18,14 +18,11 @@ import ch.qos.logback.classic.LoggerContext; import ch.qos.logback.classic.joran.JoranConfigurator; - import java.io.BufferedInputStream; import java.io.FileInputStream; import java.io.InputStream; import java.util.Properties; import java.util.concurrent.Callable; -import java.util.concurrent.atomic.AtomicInteger; - import org.apache.commons.cli.CommandLine; import org.apache.commons.cli.Option; import org.apache.commons.cli.Options; diff --git a/srvutil/src/main/java/org/apache/rocketmq/srvutil/ShutdownHookThread.java b/srvutil/src/main/java/org/apache/rocketmq/srvutil/ShutdownHookThread.java index 0787d6d2002..8ead4add77f 100644 --- a/srvutil/src/main/java/org/apache/rocketmq/srvutil/ShutdownHookThread.java +++ b/srvutil/src/main/java/org/apache/rocketmq/srvutil/ShutdownHookThread.java @@ -17,10 +17,9 @@ package org.apache.rocketmq.srvutil; -import org.slf4j.Logger; - import java.util.concurrent.Callable; import java.util.concurrent.atomic.AtomicInteger; +import org.slf4j.Logger; /** * {@link ShutdownHookThread} is the standard hook for filtersrv and namesrv modules. From f506c84324c00f10015d3e72c0360a0fafc75a04 Mon Sep 17 00:00:00 2001 From: wusheng Date: Wed, 11 Jan 2017 11:38:00 +0800 Subject: [PATCH 4/8] =?UTF-8?q?fix/ROCKETMQ-39:=20fix=20style-check=20fail?= =?UTF-8?q?ure=20about=20whitespace.=20Code=20style=20didn=E2=80=99t=20wor?= =?UTF-8?q?k.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/apache/rocketmq/filtersrv/FiltersrvStartup.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/filtersrv/src/main/java/org/apache/rocketmq/filtersrv/FiltersrvStartup.java b/filtersrv/src/main/java/org/apache/rocketmq/filtersrv/FiltersrvStartup.java index 2ddd438d139..c95ad1b7e83 100644 --- a/filtersrv/src/main/java/org/apache/rocketmq/filtersrv/FiltersrvStartup.java +++ b/filtersrv/src/main/java/org/apache/rocketmq/filtersrv/FiltersrvStartup.java @@ -122,7 +122,7 @@ public static FiltersrvController createController(String[] args) { System.exit(-2); } - LoggerContext lc = (LoggerContext)LoggerFactory.getILoggerFactory(); + LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory(); JoranConfigurator configurator = new JoranConfigurator(); configurator.setContext(lc); lc.reset(); From eb4ccc3aacd9528a2b23de3518180ce91859baee Mon Sep 17 00:00:00 2001 From: wusheng Date: Wed, 11 Jan 2017 18:03:24 +0800 Subject: [PATCH 5/8] =?UTF-8?q?fix/ROCKETMQ-39:=20change=20the=20Callable?= =?UTF-8?q?=E2=80=99s=20return=20type.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/apache/rocketmq/filtersrv/FiltersrvStartup.java | 2 +- .../main/java/org/apache/rocketmq/namesrv/NamesrvStartup.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/filtersrv/src/main/java/org/apache/rocketmq/filtersrv/FiltersrvStartup.java b/filtersrv/src/main/java/org/apache/rocketmq/filtersrv/FiltersrvStartup.java index c95ad1b7e83..95d4fe5289d 100644 --- a/filtersrv/src/main/java/org/apache/rocketmq/filtersrv/FiltersrvStartup.java +++ b/filtersrv/src/main/java/org/apache/rocketmq/filtersrv/FiltersrvStartup.java @@ -139,7 +139,7 @@ public static FiltersrvController createController(String[] args) { Runtime.getRuntime().addShutdownHook(new ShutdownHookThread(log, new Callable() { @Override - public Object call() throws Exception { + public Void call() throws Exception { controller.shutdown(); return null; } diff --git a/namesrv/src/main/java/org/apache/rocketmq/namesrv/NamesrvStartup.java b/namesrv/src/main/java/org/apache/rocketmq/namesrv/NamesrvStartup.java index 8ea183e3dcb..3715a2845be 100644 --- a/namesrv/src/main/java/org/apache/rocketmq/namesrv/NamesrvStartup.java +++ b/namesrv/src/main/java/org/apache/rocketmq/namesrv/NamesrvStartup.java @@ -123,7 +123,7 @@ public static NamesrvController main0(String[] args) { Runtime.getRuntime().addShutdownHook(new ShutdownHookThread(log, new Callable() { @Override - public Object call() throws Exception { + public Void call() throws Exception { controller.shutdown(); return null; } From a8855f6173df2e351b5849cf66f969d49234d1ac Mon Sep 17 00:00:00 2001 From: wusheng Date: Fri, 13 Jan 2017 17:57:46 +0800 Subject: [PATCH 6/8] Auto-format is stil failure. Done with manual-format. --- .../org/apache/rocketmq/filtersrv/FiltersrvStartup.java | 6 ++---- .../java/org/apache/rocketmq/namesrv/NamesrvStartup.java | 2 +- .../org/apache/rocketmq/srvutil/ShutdownHookThread.java | 3 +-- 3 files changed, 4 insertions(+), 7 deletions(-) diff --git a/filtersrv/src/main/java/org/apache/rocketmq/filtersrv/FiltersrvStartup.java b/filtersrv/src/main/java/org/apache/rocketmq/filtersrv/FiltersrvStartup.java index 95d4fe5289d..ed10e60dc9c 100644 --- a/filtersrv/src/main/java/org/apache/rocketmq/filtersrv/FiltersrvStartup.java +++ b/filtersrv/src/main/java/org/apache/rocketmq/filtersrv/FiltersrvStartup.java @@ -49,8 +49,7 @@ public static FiltersrvController start(FiltersrvController controller) { try { controller.start(); - } - catch (Exception e) { + } catch (Exception e) { e.printStackTrace(); System.exit(-1); } @@ -146,8 +145,7 @@ public Void call() throws Exception { })); return controller; - } - catch (Throwable e) { + } catch (Throwable e) { e.printStackTrace(); System.exit(-1); } diff --git a/namesrv/src/main/java/org/apache/rocketmq/namesrv/NamesrvStartup.java b/namesrv/src/main/java/org/apache/rocketmq/namesrv/NamesrvStartup.java index 3715a2845be..2c89e94d58f 100644 --- a/namesrv/src/main/java/org/apache/rocketmq/namesrv/NamesrvStartup.java +++ b/namesrv/src/main/java/org/apache/rocketmq/namesrv/NamesrvStartup.java @@ -40,7 +40,7 @@ import org.slf4j.LoggerFactory; public class NamesrvStartup { - public static Properties properties = null; + public static Properties properties = null; public static CommandLine commandLine = null; public static void main(String[] args) { diff --git a/srvutil/src/main/java/org/apache/rocketmq/srvutil/ShutdownHookThread.java b/srvutil/src/main/java/org/apache/rocketmq/srvutil/ShutdownHookThread.java index 8ead4add77f..f99e0879b37 100644 --- a/srvutil/src/main/java/org/apache/rocketmq/srvutil/ShutdownHookThread.java +++ b/srvutil/src/main/java/org/apache/rocketmq/srvutil/ShutdownHookThread.java @@ -60,8 +60,7 @@ public void run() { long beginTime = System.currentTimeMillis(); try { this.callback.call(); - } - catch (Exception e) { + } catch (Exception e) { log.error("shutdown hook callback invoked failure.", e); } long consumingTimeTotal = System.currentTimeMillis() - beginTime; From 68f64b643f795b34e8a2300475ca4f5fca52f53e Mon Sep 17 00:00:00 2001 From: wusheng Date: Fri, 20 Jan 2017 14:02:07 +0800 Subject: [PATCH 7/8] remove author name from ShutdownHookThread.class comments. --- .../java/org/apache/rocketmq/srvutil/ShutdownHookThread.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/srvutil/src/main/java/org/apache/rocketmq/srvutil/ShutdownHookThread.java b/srvutil/src/main/java/org/apache/rocketmq/srvutil/ShutdownHookThread.java index f99e0879b37..11f9b2c3365 100644 --- a/srvutil/src/main/java/org/apache/rocketmq/srvutil/ShutdownHookThread.java +++ b/srvutil/src/main/java/org/apache/rocketmq/srvutil/ShutdownHookThread.java @@ -24,8 +24,6 @@ /** * {@link ShutdownHookThread} is the standard hook for filtersrv and namesrv modules. * Through {@link Callable} interface, this hook can customization operations in anywhere. - *

- * Created by wusheng on 2017/1/11. */ public class ShutdownHookThread extends Thread { private volatile boolean hasShutdown = false; From c81c912526c4daf7ca01a187e8a181e605bc1824 Mon Sep 17 00:00:00 2001 From: wusheng Date: Sat, 21 Jan 2017 19:59:33 +0800 Subject: [PATCH 8/8] Add Callable Generic statement --- .../java/org/apache/rocketmq/filtersrv/FiltersrvStartup.java | 2 +- .../main/java/org/apache/rocketmq/namesrv/NamesrvStartup.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/filtersrv/src/main/java/org/apache/rocketmq/filtersrv/FiltersrvStartup.java b/filtersrv/src/main/java/org/apache/rocketmq/filtersrv/FiltersrvStartup.java index ed10e60dc9c..41169c9a50a 100644 --- a/filtersrv/src/main/java/org/apache/rocketmq/filtersrv/FiltersrvStartup.java +++ b/filtersrv/src/main/java/org/apache/rocketmq/filtersrv/FiltersrvStartup.java @@ -136,7 +136,7 @@ public static FiltersrvController createController(String[] args) { System.exit(-3); } - Runtime.getRuntime().addShutdownHook(new ShutdownHookThread(log, new Callable() { + Runtime.getRuntime().addShutdownHook(new ShutdownHookThread(log, new Callable() { @Override public Void call() throws Exception { controller.shutdown(); diff --git a/namesrv/src/main/java/org/apache/rocketmq/namesrv/NamesrvStartup.java b/namesrv/src/main/java/org/apache/rocketmq/namesrv/NamesrvStartup.java index 2c89e94d58f..f49d2b31ffe 100644 --- a/namesrv/src/main/java/org/apache/rocketmq/namesrv/NamesrvStartup.java +++ b/namesrv/src/main/java/org/apache/rocketmq/namesrv/NamesrvStartup.java @@ -121,7 +121,7 @@ public static NamesrvController main0(String[] args) { System.exit(-3); } - Runtime.getRuntime().addShutdownHook(new ShutdownHookThread(log, new Callable() { + Runtime.getRuntime().addShutdownHook(new ShutdownHookThread(log, new Callable() { @Override public Void call() throws Exception { controller.shutdown();