Skip to content

fix: fix lossless deregister failed when no health-check configured #1345

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,5 @@
- [fix: fix the lossless provider override in multiple registries scenario](https://github.com/Tencent/spring-cloud-tencent/pull/1341)
- [fix:fix nearby router properties loading bug.](https://github.com/Tencent/spring-cloud-tencent/pull/1342)
- [fix: fix grammar issues for lane router example & optimize the gateway dependency](https://github.com/Tencent/spring-cloud-tencent/pull/1343)
- [refactor:let the configuration SDK context stand alone.](https://github.com/Tencent/spring-cloud-tencent/pull/1344)
- [refactor:let the configuration SDK context stand alone.](https://github.com/Tencent/spring-cloud-tencent/pull/1344)
- [fix: fix lossless deregister failed when no healthcheck configured](https://github.com/Tencent/spring-cloud-tencent/pull/1345)
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,9 @@ spring:
port: 28084
lossless:
enabled: true
healthCheckPath: /lossless/callee/health
healthCheckInterval: 5000
port: 28084
#healthCheckPath: /actuator/health
#healthCheckInterval: 5000
lossless:
healthy:
delay:
Expand All @@ -32,5 +33,4 @@ management:
exposure:
include:
- polaris-discovery
- polaris-ratelimit
- polaris-config
- health
Original file line number Diff line number Diff line change
Expand Up @@ -6,23 +6,15 @@ spring:
cloud:
nacos:
discovery:
server-addr: 9.134.5.52:8848
server-addr: 127.0.0.1:8848
enabled: true
namespace: "test1"
polaris:
lossless:
enabled: true
healthCheckPath: /lossless/nacos/callee/health
port: 28085
healthCheckPath: /actuator/health
healthCheckInterval: 5000
lossless:
healthy:
delay:
second: 20
management:
endpoints:
web:
exposure:
include:
- polaris-discovery
- polaris-ratelimit
- polaris-config
Original file line number Diff line number Diff line change
Expand Up @@ -158,57 +158,7 @@ public static void innerConfigDestroy() {
}

public void init() {
if (null == serviceSdkContext) {
try {
// init SDKContext
serviceSdkContext = SDKContext.initContextByConfig(properties.configuration(modifierList,
() -> environment.getProperty("spring.cloud.client.ip-address"),
() -> environment.getProperty("spring.cloud.polaris.local-port", Integer.class, 0)));
serviceSdkContext.init();

// init ProviderAPI
providerAPI = DiscoveryAPIFactory.createProviderAPIByContext(serviceSdkContext);

// init losslessAPI
losslessAPI = DiscoveryAPIFactory.createLosslessAPIByContext(serviceSdkContext);

// init ConsumerAPI
consumerAPI = DiscoveryAPIFactory.createConsumerAPIByContext(serviceSdkContext);

// init RouterAPI
routerAPI = RouterAPIFactory.createRouterAPIByContext(serviceSdkContext);

// init CircuitBreakAPI
circuitBreakAPI = CircuitBreakAPIFactory.createCircuitBreakAPIByContext(serviceSdkContext);

// init LimitAPI
limitAPI = LimitAPIFactory.createLimitAPIByContext(serviceSdkContext);

// init AssemblyAPI
assemblyAPI = AssemblyAPIFactory.createAssemblyAPIByContext(serviceSdkContext);

// add shutdown hook
Runtime.getRuntime().addShutdownHook(new Thread(() -> {
long startTimestamp = System.currentTimeMillis();
long delay = 0;
while (true) {
if (!isRegistered || delay >= 60000) {
innerDestroy();
break;
}
else {
delay = System.currentTimeMillis() - startTimestamp;
}
}
}));
LOG.info("create Polaris SDK context successfully. properties: {}", properties);
}
catch (Throwable throwable) {
LOG.error("create Polaris SDK context failed. properties: {}", properties, throwable);
throw throwable;
}
}

initService();
initConfig();
}

Expand All @@ -225,37 +175,37 @@ public static void setConfigSDKContext(SDKContext context) {
}

public SDKContext getSDKContext() {
init();
initService();
return serviceSdkContext;
}

public ProviderAPI getProviderAPI() {
init();
initService();
return providerAPI;
}

public LosslessAPI getLosslessAPI() {
init();
initService();
return losslessAPI;
}

public ConsumerAPI getConsumerAPI() {
init();
initService();
return consumerAPI;
}

public RouterAPI getRouterAPI() {
init();
initService();
return routerAPI;
}

public CircuitBreakAPI getCircuitBreakAPI() {
init();
initService();
return circuitBreakAPI;
}

public LimitAPI getLimitAPI() {
init();
initService();
return limitAPI;
}

Expand All @@ -268,6 +218,59 @@ public SDKContext getConfigSDKContext() {
return configSDKContext;
}

public void initService() {
if (null == serviceSdkContext) {
try {
// init SDKContext
serviceSdkContext = SDKContext.initContextByConfig(properties.configuration(modifierList,
() -> environment.getProperty("spring.cloud.client.ip-address"),
() -> environment.getProperty("spring.cloud.polaris.local-port", Integer.class, 0)));
serviceSdkContext.init();

// init ProviderAPI
providerAPI = DiscoveryAPIFactory.createProviderAPIByContext(serviceSdkContext);

// init losslessAPI
losslessAPI = DiscoveryAPIFactory.createLosslessAPIByContext(serviceSdkContext);

// init ConsumerAPI
consumerAPI = DiscoveryAPIFactory.createConsumerAPIByContext(serviceSdkContext);

// init RouterAPI
routerAPI = RouterAPIFactory.createRouterAPIByContext(serviceSdkContext);

// init CircuitBreakAPI
circuitBreakAPI = CircuitBreakAPIFactory.createCircuitBreakAPIByContext(serviceSdkContext);

// init LimitAPI
limitAPI = LimitAPIFactory.createLimitAPIByContext(serviceSdkContext);

// init AssemblyAPI
assemblyAPI = AssemblyAPIFactory.createAssemblyAPIByContext(serviceSdkContext);

// add shutdown hook
Runtime.getRuntime().addShutdownHook(new Thread(() -> {
long startTimestamp = System.currentTimeMillis();
long delay = 0;
while (true) {
if (!isRegistered || delay >= 60000) {
innerDestroy();
break;
}
else {
delay = System.currentTimeMillis() - startTimestamp;
}
}
}));
LOG.info("create Polaris SDK context successfully. properties: {}", properties);
}
catch (Throwable throwable) {
LOG.error("create Polaris SDK context failed. properties: {}", properties, throwable);
throw throwable;
}
}
}

public void initConfig() {
// get modifiers for configuration.
List<PolarisConfigModifier> configModifierList = new ArrayList<>();
Expand Down
Loading