Skip to content

Commit 611dbe0

Browse files
committed
Replace hashing id with named instance id
1 parent 8b5769a commit 611dbe0

File tree

2 files changed

+46
-10
lines changed

2 files changed

+46
-10
lines changed

moss-core/src/main/java/de/codecentric/boot/admin/server/config/AdminServerAutoConfiguration.java

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,7 @@
2121
import de.codecentric.boot.admin.server.domain.events.InstanceEvent;
2222
import de.codecentric.boot.admin.server.eventstore.InMemoryEventStore;
2323
import de.codecentric.boot.admin.server.eventstore.InstanceEventStore;
24-
import de.codecentric.boot.admin.server.services.EndpointDetectionTrigger;
25-
import de.codecentric.boot.admin.server.services.EndpointDetector;
26-
import de.codecentric.boot.admin.server.services.HashingInstanceUrlIdGenerator;
27-
import de.codecentric.boot.admin.server.services.InfoUpdateTrigger;
28-
import de.codecentric.boot.admin.server.services.InfoUpdater;
29-
import de.codecentric.boot.admin.server.services.InstanceIdGenerator;
30-
import de.codecentric.boot.admin.server.services.InstanceRegistry;
31-
import de.codecentric.boot.admin.server.services.StatusUpdateTrigger;
32-
import de.codecentric.boot.admin.server.services.StatusUpdater;
24+
import de.codecentric.boot.admin.server.services.*;
3325
import de.codecentric.boot.admin.server.services.endpoints.ChainingStrategy;
3426
import de.codecentric.boot.admin.server.services.endpoints.ProbeEndpointsStrategy;
3527
import de.codecentric.boot.admin.server.services.endpoints.QueryIndexEndpointStrategy;
@@ -74,7 +66,7 @@ public InstanceRegistry instanceRegistry(InstanceRepository instanceRepository,
7466
@Bean
7567
@ConditionalOnMissingBean
7668
public InstanceIdGenerator instanceIdGenerator() {
77-
return new HashingInstanceUrlIdGenerator();
69+
return new HostPortPidInstanceIdGenerator();
7870
}
7971

8072
@Bean
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package de.codecentric.boot.admin.server.services;
2+
3+
import de.codecentric.boot.admin.server.domain.values.InstanceId;
4+
import de.codecentric.boot.admin.server.domain.values.Registration;
5+
import lombok.extern.slf4j.Slf4j;
6+
7+
import java.io.UnsupportedEncodingException;
8+
import java.net.MalformedURLException;
9+
import java.net.URL;
10+
import java.net.URLEncoder;
11+
@Slf4j
12+
public class HostPortPidInstanceIdGenerator implements InstanceIdGenerator {
13+
private static final char _ = '_';
14+
private static final char point = '.';
15+
private HashingInstanceUrlIdGenerator hashingInstanceUrlIdGenerator
16+
= new HashingInstanceUrlIdGenerator();
17+
@Override
18+
public InstanceId generateId(Registration registration) {
19+
URL serviceUrl;
20+
try {
21+
serviceUrl = new URL(registration.getServiceUrl());
22+
} catch (MalformedURLException e) {
23+
log.error("Malformed service url {}, fallback to hashing", registration.getServiceUrl());
24+
return hashingInstanceUrlIdGenerator.generateId(registration);
25+
}
26+
StringBuilder stringBuilder =
27+
new StringBuilder(registration.getName())
28+
.append(_).append(serviceUrl.getProtocol())
29+
.append(_).append(serviceUrl.getHost().replace(point, _))
30+
.append(_).append(serviceUrl.getPort())
31+
32+
;
33+
String encode;
34+
String id = stringBuilder.toString();
35+
try {
36+
encode = URLEncoder.encode(id, "utf-8");
37+
return InstanceId.of(encode);
38+
} catch (UnsupportedEncodingException e) {
39+
log.error("Failed to encode id of {}, fallback to hashing", id);
40+
return hashingInstanceUrlIdGenerator.generateId(registration);
41+
}
42+
43+
}
44+
}

0 commit comments

Comments
 (0)