diff --git a/sentinel-transport/sentinel-transport-simple-http/src/main/java/com/alibaba/csp/sentinel/transport/command/SimpleHttpCommandCenter.java b/sentinel-transport/sentinel-transport-simple-http/src/main/java/com/alibaba/csp/sentinel/transport/command/SimpleHttpCommandCenter.java index 5aeb649c..0f256542 100755 --- a/sentinel-transport/sentinel-transport-simple-http/src/main/java/com/alibaba/csp/sentinel/transport/command/SimpleHttpCommandCenter.java +++ b/sentinel-transport/sentinel-transport-simple-http/src/main/java/com/alibaba/csp/sentinel/transport/command/SimpleHttpCommandCenter.java @@ -158,7 +158,10 @@ public class SimpleHttpCommandCenter implements CommandCenter { CommandCenterLog.warn("Error when releasing the server socket", e); } } - bizExecutor.shutdownNow(); + + if (bizExecutor != null) { + bizExecutor.shutdownNow(); + } executor.shutdownNow(); TransportConfig.setRuntimePort(PORT_UNINITIALIZED); handlerMap.clear(); diff --git a/sentinel-transport/sentinel-transport-simple-http/src/test/java/com/alibaba/csp/sentinel/transport/command/http/CommandCenterTest.java b/sentinel-transport/sentinel-transport-simple-http/src/test/java/com/alibaba/csp/sentinel/transport/command/http/CommandCenterTest.java new file mode 100644 index 00000000..a77982e2 --- /dev/null +++ b/sentinel-transport/sentinel-transport-simple-http/src/test/java/com/alibaba/csp/sentinel/transport/command/http/CommandCenterTest.java @@ -0,0 +1,51 @@ +/* + * Copyright 1999-2018 Alibaba Group Holding Ltd. + * + * Licensed 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 com.alibaba.csp.sentinel.transport.command.http; + +import com.alibaba.csp.sentinel.command.CommandCenterProvider; +import com.alibaba.csp.sentinel.transport.CommandCenter; +import org.junit.Assert; +import org.junit.Test; + +public class CommandCenterTest { + @Test + public void stopCommandCenter(){ + CommandCenter commandCenter = CommandCenterProvider.getCommandCenter(); + try { + commandCenter.stop(); + } catch (Exception e) { + Assert.fail(); + } + } + @Test + public void startCommandCenter(){ + CommandCenter commandCenter = CommandCenterProvider.getCommandCenter(); + try { + commandCenter.start(); + } catch (Exception e) { + Assert.fail(); + } + } + @Test + public void beforeStartCommandCenter(){ + CommandCenter commandCenter = CommandCenterProvider.getCommandCenter(); + try { + commandCenter.beforeStart(); + } catch (Exception e) { + Assert.fail(); + } + } +}