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 7abdd2b  [SCB-1638]servicecenter do not handle websocket PING/PONG 
message and test error fixes (#1434)
7abdd2b is described below

commit 7abdd2bf197f113e5e550552cf555e3dd629b3a2
Author: bao liu <[email protected]>
AuthorDate: Fri Dec 6 10:27:01 2019 +0800

    [SCB-1638]servicecenter do not handle websocket PING/PONG message and test 
error fixes (#1434)
---
 .../org/apache/servicecomb/core/SCBEngine.java     |  2 +
 .../src/main/resources/microservice.yaml           |  2 +-
 .../springmvc/server/ProducerTestsAfterBootup.java | 43 ++++++++++++++++++++--
 .../src/main/resources/microservice.yaml           |  2 +-
 .../metrics/core/TestMetricsBootListener.java      |  8 ++++
 .../client/http/WebsocketUtils.java                |  5 ++-
 6 files changed, 56 insertions(+), 6 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 5f7013a..69b5fc6 100644
--- a/core/src/main/java/org/apache/servicecomb/core/SCBEngine.java
+++ b/core/src/main/java/org/apache/servicecomb/core/SCBEngine.java
@@ -48,6 +48,7 @@ import 
org.apache.servicecomb.core.provider.consumer.MicroserviceReferenceConfig
 import org.apache.servicecomb.core.provider.producer.ProducerProviderManager;
 import org.apache.servicecomb.core.transport.TransportManager;
 import org.apache.servicecomb.foundation.common.VendorExtensions;
+import 
org.apache.servicecomb.foundation.common.event.EnableExceptionPropagation;
 import org.apache.servicecomb.foundation.common.event.EventManager;
 import org.apache.servicecomb.foundation.common.log.LogMarkerLeakFixUtils;
 import org.apache.servicecomb.foundation.common.utils.SPIServiceUtils;
@@ -277,6 +278,7 @@ public class SCBEngine {
   private void triggerAfterRegistryEvent() {
     eventBus.register(new Object() {
       @Subscribe
+      @EnableExceptionPropagation
       public void afterRegistryInstance(MicroserviceInstanceRegisterTask 
microserviceInstanceRegisterTask) {
         LOGGER.info("receive MicroserviceInstanceRegisterTask event, check 
instance Id...");
 
diff --git 
a/demo/demo-springmvc/springmvc-client/src/main/resources/microservice.yaml 
b/demo/demo-springmvc/springmvc-client/src/main/resources/microservice.yaml
index cf392a8..c8c33bc 100644
--- a/demo/demo-springmvc/springmvc-client/src/main/resources/microservice.yaml
+++ b/demo/demo-springmvc/springmvc-client/src/main/resources/microservice.yaml
@@ -33,7 +33,7 @@ servicecomb:
           interval: 3
         pull:
           interval: 90
-        watch: false
+        watch: true
       autodiscovery: true
 # can download config center from 
https://cse-bucket.obs.myhwclouds.com/LocalCSE/Local-CSE-1.0.0.zip to test 
dynamic config
   config:
diff --git 
a/demo/demo-springmvc/springmvc-server/src/main/java/org/apache/servicecomb/demo/springmvc/server/ProducerTestsAfterBootup.java
 
b/demo/demo-springmvc/springmvc-server/src/main/java/org/apache/servicecomb/demo/springmvc/server/ProducerTestsAfterBootup.java
index ec9a68b..5112980 100644
--- 
a/demo/demo-springmvc/springmvc-server/src/main/java/org/apache/servicecomb/demo/springmvc/server/ProducerTestsAfterBootup.java
+++ 
b/demo/demo-springmvc/springmvc-server/src/main/java/org/apache/servicecomb/demo/springmvc/server/ProducerTestsAfterBootup.java
@@ -41,14 +41,51 @@ public class ProducerTestsAfterBootup implements 
BootListener {
 
   private ObjectWriter writer = Yaml.pretty();
 
+  private static final String EXPECTED_DATA = "---\n"
+      + "swagger: \"2.0\"\n"
+      + "info:\n"
+      + "  version: \"1.0.0\"\n"
+      + "  title: \"swagger definition for 
org.apache.servicecomb.demo.springmvc.server.CodeFirstSpringmvcForSchema\"\n"
+      + "  x-java-interface: \"gen.swagger.CodeFirstSpringmvcForSchemaIntf\"\n"
+      + "basePath: \"/forScheam\"\n"
+      + "consumes:\n"
+      + "- \"application/json\"\n"
+      + "produces:\n"
+      + "- \"application/json\"\n"
+      + "paths:\n"
+      + "  /uploadFile:\n"
+      + "    post:\n"
+      + "      operationId: \"uploadAwardFile\"\n"
+      + "      consumes:\n"
+      + "      - \"multipart/form-data\"\n"
+      + "      produces:\n"
+      + "      - \"application/json\"\n"
+      + "      parameters:\n"
+      + "      - name: \"fileType\"\n"
+      + "        in: \"query\"\n"
+      + "        required: true\n"
+      + "        type: \"string\"\n"
+      + "      - name: \"zoneId\"\n"
+      + "        in: \"query\"\n"
+      + "        required: true\n"
+      + "        type: \"string\"\n"
+      + "      - name: \"file\"\n"
+      + "        in: \"formData\"\n"
+      + "        required: true\n"
+      + "        type: \"file\"\n"
+      + "      responses:\n"
+      + "        \"200\":\n"
+      + "          description: \"response of 200\"\n"
+      + "          schema:\n"
+      + "            type: \"boolean\"\n";
+
   public void testSchemaNotChange(SCBEngine scbEngine) {
     LOGGER.info("ProducerTestsAfterBootup testing start");
     //we can not set microserviceName any more
     SchemaMeta meta = 
scbEngine.getProducerProviderManager().registerSchema("test1", new 
CodeFirstSpringmvcForSchema());
     String codeFirst = getSwaggerContent(meta.getSwagger());
-    
TestMgr.check("608f6cbb3554839de311d90d16a44ffc41ef66575101e172eb54ccc255e8675d",
-        RegistryUtils.calcSchemaSummary(codeFirst));
-    TestMgr.check(codeFirst.length(), 891);
+    TestMgr.check(EXPECTED_DATA,
+        codeFirst);
   }
 
   public void testRegisteredBasePath() {
diff --git 
a/demo/demo-springmvc/springmvc-server/src/main/resources/microservice.yaml 
b/demo/demo-springmvc/springmvc-server/src/main/resources/microservice.yaml
index 715394c..8be0880 100644
--- a/demo/demo-springmvc/springmvc-server/src/main/resources/microservice.yaml
+++ b/demo/demo-springmvc/springmvc-server/src/main/resources/microservice.yaml
@@ -42,7 +42,7 @@ servicecomb:
           interval: 3
         pull:
           interval: 10
-        watch: false
+        watch: true
       autodiscovery: true
   # can download config center from 
https://cse-bucket.obs.myhwclouds.com/LocalCSE/Local-CSE-1.0.0.zip to test 
dynamic config
   config:
diff --git 
a/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/TestMetricsBootListener.java
 
b/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/TestMetricsBootListener.java
index 30e5311..cad992f 100644
--- 
a/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/TestMetricsBootListener.java
+++ 
b/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/TestMetricsBootListener.java
@@ -18,11 +18,19 @@ package org.apache.servicecomb.metrics.core;
 
 import org.apache.servicecomb.core.SCBEngine;
 import org.apache.servicecomb.core.bootstrap.SCBBootstrap;
+import org.apache.servicecomb.foundation.common.utils.BeanUtils;
 import org.apache.servicecomb.serviceregistry.RegistryUtils;
 import org.apache.servicecomb.serviceregistry.api.registry.Microservice;
+import org.junit.Before;
 import org.junit.Test;
 
 public class TestMetricsBootListener {
+  @Before
+  public void setUp() {
+    // Metrics boot depends on executor bean. Old test will fail but event 
handling not throw the error.
+    BeanUtils.init();
+  }
+
   @Test
   public void registerSchemas() {
     new SCBBootstrap().useLocalRegistry().createSCBEngineForTest().run();
diff --git 
a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/client/http/WebsocketUtils.java
 
b/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/client/http/WebsocketUtils.java
index 1536058..1426de9 100644
--- 
a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/client/http/WebsocketUtils.java
+++ 
b/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/client/http/WebsocketUtils.java
@@ -63,7 +63,10 @@ public final class WebsocketUtils {
           asyncResult.result().closeHandler(v -> {
             onClose.handle(v);
           });
-          asyncResult.result().handler(onMessage);
+          asyncResult.result().pongHandler(pong -> {
+            // ignore, just prevent NPE.
+          });
+          asyncResult.result().frameHandler((frame) -> 
onMessage.handle(frame.binaryData()));
         }
       });
     });

Reply via email to