Skip to content

Commit f3616b7

Browse files
elegant up or dwon for etcd/consul (#4679)
1 parent 5ee33ed commit f3616b7

File tree

6 files changed

+36
-16
lines changed

6 files changed

+36
-16
lines changed

service-registry/registry-consul/src/main/java/org/apache/servicecomb/registry/consul/ConsulDiscoveryInstance.java

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,19 +18,13 @@
1818
package org.apache.servicecomb.registry.consul;
1919

2020
import org.apache.servicecomb.registry.api.DiscoveryInstance;
21-
import org.apache.servicecomb.registry.api.MicroserviceInstanceStatus;
2221

2322
public class ConsulDiscoveryInstance extends ConsulInstance implements DiscoveryInstance {
2423

2524
public ConsulDiscoveryInstance(ConsulInstance consulInstance) {
2625
super(consulInstance);
2726
}
2827

29-
@Override
30-
public MicroserviceInstanceStatus getStatus() {
31-
return MicroserviceInstanceStatus.UP;
32-
}
33-
3428
@Override
3529
public String getRegistryName() {
3630
return ConsulConst.CONSUL_REGISTRY_NAME;

service-registry/registry-consul/src/main/java/org/apache/servicecomb/registry/consul/ConsulInstance.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,8 @@ public class ConsulInstance implements MicroserviceInstance {
5151

5252
private Map<String, String> properties = new HashMap<>();
5353

54+
private MicroserviceInstanceStatus status;
55+
5456
public ConsulInstance() {
5557

5658
}
@@ -68,6 +70,7 @@ public ConsulInstance(ConsulInstance other) {
6870
this.endpoints = other.endpoints;
6971
this.schemas = other.schemas;
7072
this.properties = other.properties;
73+
this.status = other.status;
7174
}
7275

7376
public void setServiceId(String serviceId) {
@@ -118,6 +121,10 @@ public void setProperties(Map<String, String> properties) {
118121
this.properties = properties;
119122
}
120123

124+
public void setStatus(MicroserviceInstanceStatus status) {
125+
this.status = status;
126+
}
127+
121128
@Override
122129
public String getEnvironment() {
123130
return this.environment;
@@ -192,6 +199,6 @@ public String getServiceId() {
192199

193200
@Override
194201
public MicroserviceInstanceStatus getStatus() {
195-
return MicroserviceInstanceStatus.UP;
202+
return this.status;
196203
}
197204
}

service-registry/registry-consul/src/main/java/org/apache/servicecomb/registry/consul/ConsulRegistration.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,8 @@ public class ConsulRegistration implements Registration<ConsulRegistrationInstan
7171
@Value("${servicecomb.rest.address:127.0.0.1:8080}")
7272
private String restAddress;
7373

74+
private ImmutableRegistration.Builder registrationBuilder;
75+
7476
@Override
7577
public String name() {
7678
return ConsulConst.CONSUL_REGISTRY_NAME;
@@ -83,6 +85,14 @@ public ConsulRegistrationInstance getMicroserviceInstance() {
8385

8486
@Override
8587
public boolean updateMicroserviceInstanceStatus(MicroserviceInstanceStatus status) {
88+
consulInstance.setStatus(status);
89+
Gson gson = new GsonBuilder().disableHtmlEscaping().create();
90+
Map<String, String> meta = new HashMap<>();
91+
meta.put("meta", gson.toJson(consulInstance));
92+
registrationBuilder.meta(meta);
93+
ImmutableRegistration newService = registrationBuilder.build();
94+
AgentClient agentClient = consulClient.agentClient();
95+
agentClient.register(newService);
8696
return true;
8797
}
8898

@@ -132,12 +142,14 @@ public void init() {
132142
}
133143
consulInstance.setProperties(BootStrapProperties.readServiceProperties(environment));
134144
consulInstance.setVersion(BootStrapProperties.readServiceVersion(environment));
145+
consulInstance.setStatus(
146+
MicroserviceInstanceStatus.valueOf(BootStrapProperties.readServiceInstanceInitialStatus(environment)));
135147
}
136148

137149
@Override
138150
public void run() {
139151
LOGGER.info("ConsulRegistration run");
140-
ImmutableRegistration.Builder registrationBuilder = ImmutableRegistration.builder()
152+
registrationBuilder = ImmutableRegistration.builder()
141153
.name(consulInstance.getServiceName());
142154
List<String> endpoints = consulInstance.getEndpoints();
143155
for (String endpoint : endpoints) {

service-registry/registry-etcd/src/main/java/org/apache/servicecomb/registry/etcd/EtcdDiscoveryInstance.java

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,19 +17,12 @@
1717
package org.apache.servicecomb.registry.etcd;
1818

1919
import org.apache.servicecomb.registry.api.DiscoveryInstance;
20-
import org.apache.servicecomb.registry.api.MicroserviceInstanceStatus;
21-
2220
public class EtcdDiscoveryInstance extends EtcdInstance implements DiscoveryInstance {
2321

2422
public EtcdDiscoveryInstance(EtcdInstance other) {
2523
super(other);
2624
}
2725

28-
@Override
29-
public MicroserviceInstanceStatus getStatus() {
30-
return MicroserviceInstanceStatus.UP;
31-
}
32-
3326
@Override
3427
public String getRegistryName() {
3528
return EtcdConst.ETCD_REGISTRY_NAME;

service-registry/registry-etcd/src/main/java/org/apache/servicecomb/registry/etcd/EtcdInstance.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,8 @@ public class EtcdInstance implements MicroserviceInstance {
5050

5151
private Map<String, String> properties = new HashMap<>();
5252

53+
private MicroserviceInstanceStatus status;
54+
5355
public EtcdInstance() {
5456

5557
}
@@ -67,6 +69,7 @@ public EtcdInstance(EtcdInstance other) {
6769
this.endpoints = other.endpoints;
6870
this.schemas = other.schemas;
6971
this.properties = other.properties;
72+
this.status = other.status;
7073
}
7174

7275
public void setServiceId(String serviceId) {
@@ -117,6 +120,10 @@ public void setProperties(Map<String, String> properties) {
117120
this.properties = properties;
118121
}
119122

123+
public void setStatus(MicroserviceInstanceStatus status) {
124+
this.status = status;
125+
}
126+
120127
@Override
121128
public String getEnvironment() {
122129
return this.environment;
@@ -191,7 +198,7 @@ public String getServiceId() {
191198

192199
@Override
193200
public MicroserviceInstanceStatus getStatus() {
194-
return MicroserviceInstanceStatus.UP;
201+
return this.status;
195202
}
196203

197204
@Override

service-registry/registry-etcd/src/main/java/org/apache/servicecomb/registry/etcd/EtcdRegistration.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,11 @@ public EtcdRegistrationInstance getMicroserviceInstance() {
9898

9999
@Override
100100
public boolean updateMicroserviceInstanceStatus(MicroserviceInstanceStatus status) {
101+
this.etcdInstance.setStatus(status);
102+
String valueJson = MuteExceptionUtil.builder().withLog("to json, key:{}, value:{}", keyPath, etcdInstance)
103+
.executeFunction(JsonUtils::writeValueAsString, etcdInstance);
104+
register(ByteSequence.from(keyPath, Charset.defaultCharset()),
105+
ByteSequence.from(valueJson, Charset.defaultCharset()));
101106
return true;
102107
}
103108

@@ -146,6 +151,8 @@ public void init() {
146151
}
147152
etcdInstance.setProperties(BootStrapProperties.readServiceProperties(environment));
148153
etcdInstance.setVersion(BootStrapProperties.readServiceVersion(environment));
154+
etcdInstance.setStatus(
155+
MicroserviceInstanceStatus.valueOf(BootStrapProperties.readServiceInstanceInitialStatus(environment)));
149156
}
150157

151158
@Override

0 commit comments

Comments
 (0)