Skip to content

Commit 35c9cea

Browse files
committed
[fit] 修改nacos notify函数死循环bug
1 parent 3cb45e8 commit 35c9cea

1 file changed

Lines changed: 20 additions & 15 deletions

File tree

  • framework/fit/java/fit-builtin/plugins/fit-service-coordination-nacos/src/main/java/modelengine/fit/service/server

framework/fit/java/fit-builtin/plugins/fit-service-coordination-nacos/src/main/java/modelengine/fit/service/server/RegistryServer.java

Lines changed: 20 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ public RegistryServer(
7878
this.worker = worker;
7979
}
8080

81-
private Properties getNacosProperties(NacosConfig nacosConfig) {
81+
private Properties getNacosProperties(NacosConfig nacosConfig) {
8282
Properties properties = new Properties();
8383
properties.put("serverAddr", nacosConfig.getServerAddr());
8484
properties.put("username", Objects.toString(nacosConfig.getUsername(), ""));
@@ -127,13 +127,13 @@ private List<Instance> createInstance(Worker worker, Application application, Fi
127127
// 设置为非临时实例,默认ehphemeral为true
128128
instance.setEphemeral(false);
129129
}
130-
if(heartbeatConfig.getWeight() != null) {
130+
if (heartbeatConfig.getWeight() != null) {
131131
instance.setWeight(heartbeatConfig.getWeight());
132132
}
133-
if(heartbeatConfig.getHeartBeatInterval() != null) {
133+
if (heartbeatConfig.getHeartBeatInterval() != null) {
134134
instance.setMetadata(Collections.singletonMap("preserved.heart.beat.interval", String.valueOf(heartbeatConfig.getHeartBeatInterval())));
135135
}
136-
if(heartbeatConfig.getHeartBeatTimeout() != null) {
136+
if (heartbeatConfig.getHeartBeatTimeout() != null) {
137137
instance.setMetadata(Collections.singletonMap("preserved.heart.beat.timeout", String.valueOf(heartbeatConfig.getHeartBeatTimeout())));
138138
}
139139
try {
@@ -142,7 +142,7 @@ private List<Instance> createInstance(Worker worker, Application application, Fi
142142
metadata.put(FITABLE_META_KEY, objectMapper.writeValueAsString(meta));
143143
} catch (JsonProcessingException e) {
144144
log.error("Failed to serialize metadata for worker: {}, application: {}, fitableMeta: {}, error: {}",
145-
worker, application, meta, e);
145+
worker, application, meta, e);
146146
}
147147
instance.setMetadata(metadata);
148148
instances.add(instance);
@@ -241,7 +241,7 @@ public List<FitableAddressInstance> queryFitables(List<FitableInfo> fitables, St
241241

242242
} catch (Exception e) {
243243
log.error("Failed to query fitables for genericableId: {}, fitableId: {}, error: {}",
244-
fitable.getGenericableId(), fitable.getFitableId(), e);
244+
fitable.getGenericableId(), fitable.getFitableId(), e);
245245
}
246246
}
247247

@@ -322,13 +322,18 @@ public List<FitableAddressInstance> subscribeFitables(List<FitableInfo> fitables
322322
try {
323323
String groupName = fitable.getGenericableId() + fitable.getGenericableVersion();
324324
String serviceName = fitable.getFitableId() + fitable.getFitableVersion();
325-
EventListener listener = event ->{
326-
if (event instanceof NamingEvent || event instanceof NamingChangeEvent) {
327-
onServiceChanged(fitable);
328-
}
329-
};
330-
namingService.subscribe(serviceName, groupName,listener);
331-
serviceSubscriptions.put(buildServiceKey(groupName, serviceName), listener);
325+
326+
327+
EventListener eventListener = serviceSubscriptions.computeIfAbsent(buildServiceKey(groupName, serviceName), k -> {
328+
EventListener listener = event -> {
329+
if (event instanceof NamingEvent || event instanceof NamingChangeEvent) {
330+
onServiceChanged(fitable);
331+
}
332+
};
333+
return listener;
334+
});
335+
namingService.subscribe(serviceName, groupName, eventListener);
336+
332337
} catch (Exception e) {
333338
log.error("Failed to subscribe to Nacos service, fitableId:{},error:{}", fitable.getFitableId(), e);
334339
}
@@ -392,13 +397,13 @@ public List<FitableMetaInstance> queryFitableMetas(List<GenericableInfo> generic
392397
.add(worker.getEnvironment());
393398
} catch (JsonProcessingException e) {
394399
log.error("Failed to parse worker metadata for genericableId: {}, fitableId: {}, error: {}",
395-
genericable.getGenericableId(), meta.getFitable().getFitableId(), e);
400+
genericable.getGenericableId(), meta.getFitable().getFitableId(), e);
396401
}
397402
}
398403
}
399404
} catch (Exception e) {
400405
log.error("Failed to query fitable metas for genericableId: {}, error: {}",
401-
genericable.getGenericableId(), e);
406+
genericable.getGenericableId(), e);
402407
}
403408
}
404409

0 commit comments

Comments
 (0)