diff --git a/spring-cloud-netflix-eureka-server/src/main/java/org/springframework/cloud/netflix/eureka/server/CloudJacksonJson.java b/spring-cloud-netflix-eureka-server/src/main/java/org/springframework/cloud/netflix/eureka/server/CloudJacksonJson.java index d5a26ace..d0eb04c1 100644 --- a/spring-cloud-netflix-eureka-server/src/main/java/org/springframework/cloud/netflix/eureka/server/CloudJacksonJson.java +++ b/spring-cloud-netflix-eureka-server/src/main/java/org/springframework/cloud/netflix/eureka/server/CloudJacksonJson.java @@ -123,12 +123,21 @@ public class CloudJacksonJson extends LegacyJacksonJson { SerializerProvider provider) throws IOException { if (info.getInstanceId() == null && info.getMetadata() != null) { - String instanceId = info.getMetadata().get("instanceId"); + String instanceId = calculateInstanceId(info); info = new InstanceInfo.Builder(info).setInstanceId(instanceId).build(); } super.serialize(info, jgen, provider); } + + private String calculateInstanceId(InstanceInfo info) { + String instanceId = info.getMetadata().get("instanceId"); + String hostName = info.getHostName(); + if (instanceId != null && !instanceId.startsWith(hostName)) { + instanceId = hostName + ":" + instanceId; + } + return instanceId == null ? hostName : instanceId; + } } static class CloudInstanceInfoDeserializer extends InstanceInfoDeserializer {