You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by li...@apache.org on 2018/12/05 07:59:53 UTC

[servicecomb-java-chassis] branch master updated: [SCB-1066] when start error, destroy method may throw an exception lead to origin exception losed

This is an automated email from the ASF dual-hosted git repository.

liubao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/servicecomb-java-chassis.git


The following commit(s) were added to refs/heads/master by this push:
     new dc0f8ae  [SCB-1066] when start error, destroy method may throw an exception lead to origin exception losed
dc0f8ae is described below

commit dc0f8ae81a912feea5758707a4065e32d592ad13
Author: weixing <je...@163.com>
AuthorDate: Wed Dec 5 11:06:01 2018 +0800

    [SCB-1066] when start error, destroy method may throw an exception lead to origin exception losed
---
 core/src/main/java/org/apache/servicecomb/core/SCBEngine.java       | 6 +++++-
 .../servicecomb/core/provider/producer/ProducerProviderManager.java | 4 +++-
 .../serviceregistry/client/LocalServiceRegistryClientImpl.java      | 3 +++
 3 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/core/src/main/java/org/apache/servicecomb/core/SCBEngine.java b/core/src/main/java/org/apache/servicecomb/core/SCBEngine.java
index f364d1c..7cdb51e 100644
--- a/core/src/main/java/org/apache/servicecomb/core/SCBEngine.java
+++ b/core/src/main/java/org/apache/servicecomb/core/SCBEngine.java
@@ -211,7 +211,11 @@ public class SCBEngine {
       } catch (TimeoutException e) {
         LOGGER.warn("{}", e.getMessage());
       } catch (Throwable e) {
-        destroy();
+        try {
+          destroy();
+        } catch (Exception exception) {
+          LOGGER.info("destroy has some error.", exception);
+        }
         status = SCBStatus.FAILED;
         throw new IllegalStateException("ServiceComb init failed.", e);
       }
diff --git a/core/src/main/java/org/apache/servicecomb/core/provider/producer/ProducerProviderManager.java b/core/src/main/java/org/apache/servicecomb/core/provider/producer/ProducerProviderManager.java
index 12a555b..737792a 100644
--- a/core/src/main/java/org/apache/servicecomb/core/provider/producer/ProducerProviderManager.java
+++ b/core/src/main/java/org/apache/servicecomb/core/provider/producer/ProducerProviderManager.java
@@ -63,7 +63,9 @@ public class ProducerProviderManager implements BootListener {
     if (!EventType.AFTER_CLOSE.equals(event.getEventType())) {
       return;
     }
-
+    if (microserviceMeta == null) {
+      return;
+    }
     for (OperationMeta operationMeta : microserviceMeta.getOperations()) {
       if (ExecutorService.class.isInstance(operationMeta.getExecutor())) {
         ((ExecutorService) operationMeta.getExecutor()).shutdown();
diff --git a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/client/LocalServiceRegistryClientImpl.java b/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/client/LocalServiceRegistryClientImpl.java
index b0d29ee..201ceb5 100644
--- a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/client/LocalServiceRegistryClientImpl.java
+++ b/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/client/LocalServiceRegistryClientImpl.java
@@ -219,6 +219,9 @@ public class LocalServiceRegistryClientImpl implements ServiceRegistryClient {
 
   @Override
   public boolean unregisterMicroserviceInstance(String microserviceId, String microserviceInstanceId) {
+    if (microserviceId == null) {
+      return true;
+    }
     Map<String, MicroserviceInstance> instanceMap = microserviceInstanceMap.get(microserviceId);
     if (instanceMap != null) {
       instanceMap.remove(microserviceInstanceId);