Skip to content

Commit 33e080e

Browse files
authored
fix: memory cost too many when using wildcard feign calls (#1356)
1 parent f3e10f7 commit 33e080e

File tree

7 files changed

+77
-1
lines changed

7 files changed

+77
-1
lines changed

CHANGELOG.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,4 +23,5 @@
2323
- [fix: fix lossless test case unstable issues.](https://github.com/Tencent/spring-cloud-tencent/pull/1324)
2424
- [feat:support consul service update task.](https://github.com/Tencent/spring-cloud-tencent/pull/1329)
2525
- [fix:fix app starting failed when user using custom OpenAPI bean.](https://github.com/Tencent/spring-cloud-tencent/pull/1330)
26-
- [fix: move ConditionalOnTsfEnabled to spring-cloud-tencent-commons and fix PolarisInetUtilsAutoConfiguration.](https://github.com/Tencent/spring-cloud-tencent/pull/1330)
26+
- [fix: move ConditionalOnTsfEnabled to spring-cloud-tencent-commons and fix PolarisInetUtilsAutoConfiguration.](https://github.com/Tencent/spring-cloud-tencent/pull/1354)
27+
- [fix: memory cost too many when using wildcard feign calls](https://github.com/Tencent/spring-cloud-tencent/pull/1356)

spring-cloud-tencent-examples/quickstart-example/quickstart-callee-service-a/src/main/java/com/tencent/cloud/quickstart/callee/QuickstartCalleeController.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import org.springframework.beans.factory.annotation.Autowired;
2929
import org.springframework.beans.factory.annotation.Value;
3030
import org.springframework.web.bind.annotation.GetMapping;
31+
import org.springframework.web.bind.annotation.PathVariable;
3132
import org.springframework.web.bind.annotation.RequestHeader;
3233
import org.springframework.web.bind.annotation.RequestMapping;
3334
import org.springframework.web.bind.annotation.RequestParam;
@@ -106,6 +107,17 @@ public String circuitBreak() {
106107
return String.format("Quickstart Callee Service [%s:%s] is called right.", ip, port);
107108
}
108109

110+
/**
111+
* Check circuit break.
112+
*
113+
* @return circuit break info
114+
*/
115+
@GetMapping("/circuitBreak/wildcard/{uid}")
116+
public String circuitBreakWildcard(@PathVariable String uid) throws InterruptedException {
117+
LOG.info("Quickstart Callee Service uid {} [{}:{}] is called right.", uid, ip, port);
118+
return String.format("Quickstart Callee Service %s [%s:%s] is called right.", uid, ip, port);
119+
}
120+
109121
@GetMapping("/faultDetect")
110122
public String health() {
111123
LOG.info("Quickstart Callee Service [{}:{}] is detected right.", ip, port);

spring-cloud-tencent-examples/quickstart-example/quickstart-callee-service-b/src/main/java/com/tencent/cloud/quickstart/callee/QuickstartCalleeController.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import org.springframework.http.HttpStatus;
3131
import org.springframework.http.ResponseEntity;
3232
import org.springframework.web.bind.annotation.GetMapping;
33+
import org.springframework.web.bind.annotation.PathVariable;
3334
import org.springframework.web.bind.annotation.RequestHeader;
3435
import org.springframework.web.bind.annotation.RequestMapping;
3536
import org.springframework.web.bind.annotation.RequestParam;
@@ -119,6 +120,26 @@ public ResponseEntity<String> circuitBreak() throws InterruptedException {
119120
return new ResponseEntity<>(String.format("Quickstart Callee Service [%s:%s] is called right.", ip, port), HttpStatus.OK);
120121
}
121122

123+
/**
124+
* Check circuit break.
125+
*
126+
* @return circuit break info
127+
*/
128+
@GetMapping("/circuitBreak/wildcard/{uid}")
129+
public ResponseEntity<String> circuitBreakWildcard(@PathVariable String uid) throws InterruptedException {
130+
if (ifBadGateway) {
131+
LOG.info("Quickstart Callee Service with uid {} [{}:{}] is called wrong.", uid, ip, port);
132+
return new ResponseEntity<>("failed for call quickstart callee service wildcard.", HttpStatus.BAD_GATEWAY);
133+
}
134+
if (ifDelay) {
135+
Thread.sleep(200);
136+
LOG.info("Quickstart Callee Service uid {} [{}:{}] is called slow.", uid, ip, port);
137+
return new ResponseEntity<>(String.format("Quickstart Callee Service [%s:%s] is called slow.", ip, port), HttpStatus.OK);
138+
}
139+
LOG.info("Quickstart Callee Service uid {} [{}:{}] is called right.", uid, ip, port);
140+
return new ResponseEntity<>(String.format("Quickstart Callee Service %s [%s:%s] is called right.", uid, ip, port), HttpStatus.OK);
141+
}
142+
122143
@GetMapping("/setBadGateway")
123144
public String setBadGateway(@RequestParam boolean param) {
124145
this.ifBadGateway = param;

spring-cloud-tencent-examples/quickstart-example/quickstart-caller-service/src/main/java/com/tencent/cloud/quickstart/caller/circuitbreaker/CircuitBreakerController.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import org.springframework.cloud.client.circuitbreaker.ReactiveCircuitBreakerFactory;
2626
import org.springframework.http.ResponseEntity;
2727
import org.springframework.web.bind.annotation.GetMapping;
28+
import org.springframework.web.bind.annotation.PathVariable;
2829
import org.springframework.web.bind.annotation.RequestMapping;
2930
import org.springframework.web.bind.annotation.RestController;
3031
import org.springframework.web.client.RestTemplate;
@@ -84,6 +85,24 @@ public String circuitBreakFeignFallbackFromCode() {
8485
return circuitBreakerQuickstartCalleeServiceWithFallback.circuitBreak();
8586
}
8687

88+
/**
89+
* Feign circuit breaker with fallback from Polaris.
90+
* @return circuit breaker information of callee
91+
*/
92+
@GetMapping("/feign/fallbackFromPolaris/wildcard/{uid}")
93+
public String circuitBreakFeignFallbackFromPolarisWildcard(@PathVariable String uid) {
94+
return circuitBreakerQuickstartCalleeService.circuitBreakWildcard(uid);
95+
}
96+
97+
/**
98+
* Feign circuit breaker with fallback from Polaris.
99+
* @return circuit breaker information of callee
100+
*/
101+
@GetMapping("/feign/fallbackFromCode/wildcard/{uid}")
102+
public String circuitBreakFeignFallbackFromCodeWildcard(@PathVariable String uid) {
103+
return circuitBreakerQuickstartCalleeServiceWithFallback.circuitBreakWildcard(uid);
104+
}
105+
87106
/**
88107
* RestTemplate circuit breaker.
89108
* @return circuit breaker information of callee

spring-cloud-tencent-examples/quickstart-example/quickstart-caller-service/src/main/java/com/tencent/cloud/quickstart/caller/circuitbreaker/CircuitBreakerQuickstartCalleeService.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919

2020
import org.springframework.cloud.openfeign.FeignClient;
2121
import org.springframework.web.bind.annotation.GetMapping;
22+
import org.springframework.web.bind.annotation.PathVariable;
2223

2324
/**
2425
* Circuit breaker example callee provider.
@@ -35,4 +36,12 @@ public interface CircuitBreakerQuickstartCalleeService {
3536
*/
3637
@GetMapping("/quickstart/callee/circuitBreak")
3738
String circuitBreak();
39+
40+
/**
41+
* Check circuit break with uid.
42+
* @param uid uid variable
43+
* @return circuit break info
44+
*/
45+
@GetMapping("/quickstart/callee/circuitBreak/wildcard/{uid}")
46+
String circuitBreakWildcard(@PathVariable String uid);
3847
}

spring-cloud-tencent-examples/quickstart-example/quickstart-caller-service/src/main/java/com/tencent/cloud/quickstart/caller/circuitbreaker/CircuitBreakerQuickstartCalleeServiceFallback.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,4 +31,9 @@ public class CircuitBreakerQuickstartCalleeServiceFallback implements CircuitBre
3131
public String circuitBreak() {
3232
return "fallback: trigger the refuse for service callee.";
3333
}
34+
35+
@Override
36+
public String circuitBreakWildcard(String uid) {
37+
return String.format("fallback: trigger the refuse for service callee %s.", uid);
38+
}
3439
}

spring-cloud-tencent-examples/quickstart-example/quickstart-caller-service/src/main/java/com/tencent/cloud/quickstart/caller/circuitbreaker/CircuitBreakerQuickstartCalleeServiceWithFallback.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919

2020
import org.springframework.cloud.openfeign.FeignClient;
2121
import org.springframework.web.bind.annotation.GetMapping;
22+
import org.springframework.web.bind.annotation.PathVariable;
2223

2324
/**
2425
* CircuitBreakerQuickstartCalleeServiceWithFallback.
@@ -35,4 +36,12 @@ public interface CircuitBreakerQuickstartCalleeServiceWithFallback {
3536
*/
3637
@GetMapping("/quickstart/callee/circuitBreak")
3738
String circuitBreak();
39+
40+
/**
41+
* Check circuit break with uid.
42+
* @param uid uid variable
43+
* @return circuit break info
44+
*/
45+
@GetMapping("/circuitBreak/wildcard/{uid}")
46+
String circuitBreakWildcard(@PathVariable String uid);
3847
}

0 commit comments

Comments
 (0)