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/incubator-servicecomb-java-chassis.git
commit 2f1df0ce8769340bdfa38011deed8159a330e9ef Author: weixing <jeho0...@163.com> AuthorDate: Thu May 10 17:11:03 2018 +0800 [SCB-546] bug fix: in production enviroment, first time register microservice, schemas's summary is null, registerSchemas will throw exception. if the summary is null, will re-gister the schema. --- .../task/MicroserviceRegisterTask.java | 2 +- .../task/TestMicroserviceRegisterTask.java | 37 ++++++++++++++++++++++ 2 files changed, 38 insertions(+), 1 deletion(-) diff --git a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/task/MicroserviceRegisterTask.java b/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/task/MicroserviceRegisterTask.java index fe3f5c9..d8b186b 100644 --- a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/task/MicroserviceRegisterTask.java +++ b/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/task/MicroserviceRegisterTask.java @@ -164,7 +164,7 @@ public class MicroserviceRegisterTask extends AbstractRegisterTask { String curSchemaSumary = existSchema.getSummary(); String schemaSummary = Hashing.sha256().newHasher().putString(content, Charsets.UTF_8).hash().toString(); if (!schemaSummary.equals(curSchemaSumary)) { - if (microservice.getInstance().getEnvironment().equalsIgnoreCase("development")) { + if (curSchemaSumary == null || microservice.getInstance().getEnvironment().equalsIgnoreCase("development")) { LOGGER.info( "schemaId [{}]'s content changes and the current enviroment is development, so re-register it!", schemaId); diff --git a/service-registry/src/test/java/org/apache/servicecomb/serviceregistry/task/TestMicroserviceRegisterTask.java b/service-registry/src/test/java/org/apache/servicecomb/serviceregistry/task/TestMicroserviceRegisterTask.java index 2afbe48..7932d68 100644 --- a/service-registry/src/test/java/org/apache/servicecomb/serviceregistry/task/TestMicroserviceRegisterTask.java +++ b/service-registry/src/test/java/org/apache/servicecomb/serviceregistry/task/TestMicroserviceRegisterTask.java @@ -265,6 +265,43 @@ public class TestMicroserviceRegisterTask { Assert.assertEquals(1, taskList.size()); } + @Test + public void testFirstRegisterForProd(@Mocked ServiceRegistryClient srClient) { + Microservice otherMicroservice = new Microservice(); + otherMicroservice.setAppId(microservice.getAppId()); + otherMicroservice.setServiceName("ms1"); + otherMicroservice.addSchema("s1", ""); + + List<GetSchemaResponse> list = new ArrayList<>(); + GetSchemaResponse resp = new GetSchemaResponse(); + resp.setSchemaId("s1"); + resp.setSummary(null); + list.add(resp); + + new Expectations() { + { + srClient.getMicroserviceId(anyString, anyString, anyString, anyString); + result = "serviceId"; + srClient.getMicroservice(anyString); + result = otherMicroservice; + srClient.getSchemas(anyString); + result = list; + srClient.registerSchema(microservice.getServiceId(), anyString, anyString); + result = true; + } + }; + + microservice.addSchema("s1", ""); + microservice.getInstance().setEnvironment("production"); + MicroserviceRegisterTask registerTask = new MicroserviceRegisterTask(eventBus, srClient, microservice); + registerTask.run(); + + Assert.assertEquals(true, registerTask.isRegistered()); + Assert.assertEquals(true, registerTask.isSchemaIdSetMatch()); + Assert.assertEquals("serviceId", microservice.getServiceId()); + Assert.assertEquals(1, taskList.size()); + } + @Test(expected = IllegalStateException.class) public void testReRegisteredSetForProd(@Mocked ServiceRegistryClient srClient) { Microservice otherMicroservice = new Microservice(); -- To stop receiving notification emails like this one, please contact liu...@apache.org.