Skip to content

Commit fe6d2a8

Browse files
committed
remove remoteSwagger
1 parent 716cbcf commit fe6d2a8

File tree

2 files changed

+22
-2
lines changed

2 files changed

+22
-2
lines changed

core/src/main/java/org/apache/servicecomb/core/definition/ServiceRegistryListener.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,13 @@ public void onCreateMicroserviceVersion(CreateMicroserviceVersionEvent event) {
130130
microserviceVersion.getVendorExtensions().put(CORE_MICROSERVICE_META, microserviceMeta);
131131
}
132132

133+
@EnableExceptionPropagation
134+
@SubscriberOrder(-800)
135+
@Subscribe
136+
public void onDestroyMicroserviceEvent(DestroyMicroserviceEvent event) {
137+
scbEngine.getSwaggerLoader().removeRemoteSwagger(event.getMicroserviceVersions().getInstances());
138+
}
139+
133140
public void destroy() {
134141
scbEngine.getEventBus().unregister(this);
135142
}

foundations/foundation-registry/src/main/java/org/apache/servicecomb/registry/swagger/SwaggerLoader.java

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
import org.apache.servicecomb.swagger.generator.SwaggerGenerator;
3838
import org.slf4j.Logger;
3939
import org.slf4j.LoggerFactory;
40+
import org.springframework.util.CollectionUtils;
4041

4142
import com.google.common.annotations.VisibleForTesting;
4243
import com.google.common.base.Charsets;
@@ -181,7 +182,7 @@ private Swagger loadFromResource(String path) {
181182

182183
private Swagger loadFromRemote(Microservice microservice, Collection<MicroserviceInstance> instances,
183184
String schemaId) {
184-
String key = microservice.getServiceName() + "." + schemaId;
185+
String key = microservice.getServiceId() + "." + schemaId;
185186
Swagger result = remoteSwagger.computeIfAbsent(key, k -> {
186187
String schemaContent = DiscoveryManager.INSTANCE.getSchema(microservice.getServiceId(), instances, schemaId);
187188
if (schemaContent != null) {
@@ -197,7 +198,8 @@ private Swagger loadFromRemote(Microservice microservice, Collection<Microservic
197198
}
198199
return null;
199200
});
200-
201+
LOGGER.info(
202+
"load [{}] schema from service center, map size [{}]", microservice.getServiceId(), remoteSwagger.size());
201203
if (result != null) {
202204
return result;
203205
}
@@ -212,4 +214,15 @@ private Swagger loadFromRemote(Microservice microservice, Collection<Microservic
212214

213215
return null;
214216
}
217+
218+
public void removeRemoteSwagger(List<MicroserviceInstance> instances) {
219+
if (CollectionUtils.isEmpty(instances)) {
220+
return;
221+
}
222+
String serviceId = instances.get(0).getServiceId();
223+
int originSize = remoteSwagger.size();
224+
remoteSwagger.remove(serviceId);
225+
LOGGER.info(
226+
"remove [{}] swagger, origin size [{}], current size [{}]", serviceId, originSize, remoteSwagger.size());
227+
}
215228
}

0 commit comments

Comments
 (0)