Skip to content
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

fix: memory cost too many when using wildcard feign calls #1349

Closed
wants to merge 2 commits into from
Closed
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 @@ -22,4 +22,5 @@
- [feat:add trace report support.](https://github.com/Tencent/spring-cloud-tencent/pull/1322)
- [fix: fix lossless test case unstable issues.](https://github.com/Tencent/spring-cloud-tencent/pull/1324)
- [feat:support consul service update task.](https://github.com/Tencent/spring-cloud-tencent/pull/1329)
- [fix:fix app starting failed when user using custom OpenAPI bean.](https://github.com/Tencent/spring-cloud-tencent/pull/1330)
- [fix:fix app starting failed when user using custom OpenAPI bean.](https://github.com/Tencent/spring-cloud-tencent/pull/1330)
- [fix:memory cost too many when using wildcard feign calls](https://github.com/Tencent/spring-cloud-tencent/pull/1349)
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
Expand Down Expand Up @@ -106,6 +107,17 @@ public String circuitBreak() {
return String.format("Quickstart Callee Service [%s:%s] is called right.", ip, port);
}

/**
* Check circuit break.
*
* @return circuit break info
*/
@GetMapping("/circuitBreak/wildcard/{uid}")
public String circuitBreakWildcard(@PathVariable String uid) throws InterruptedException {
LOG.info("Quickstart Callee Service uid {} [{}:{}] is called right.", uid, ip, port);
return String.format("Quickstart Callee Service %s [%s:%s] is called right.", uid, ip, port);
}

@GetMapping("/faultDetect")
public String health() {
LOG.info("Quickstart Callee Service [{}:{}] is detected right.", ip, port);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
Expand Down Expand Up @@ -119,6 +120,26 @@ public ResponseEntity<String> circuitBreak() throws InterruptedException {
return new ResponseEntity<>(String.format("Quickstart Callee Service [%s:%s] is called right.", ip, port), HttpStatus.OK);
}

/**
* Check circuit break.
*
* @return circuit break info
*/
@GetMapping("/circuitBreak/wildcard/{uid}")
public ResponseEntity<String> circuitBreakWildcard(@PathVariable String uid) throws InterruptedException {
if (ifBadGateway) {
LOG.info("Quickstart Callee Service with uid {} [{}:{}] is called wrong.", uid, ip, port);
return new ResponseEntity<>("failed for call quickstart callee service wildcard.", HttpStatus.BAD_GATEWAY);
}
if (ifDelay) {
Thread.sleep(200);
LOG.info("Quickstart Callee Service uid {} [{}:{}] is called slow.", uid, ip, port);
return new ResponseEntity<>(String.format("Quickstart Callee Service [%s:%s] is called slow.", ip, port), HttpStatus.OK);
}
LOG.info("Quickstart Callee Service uid {} [{}:{}] is called right.", uid, ip, port);
return new ResponseEntity<>(String.format("Quickstart Callee Service %s [%s:%s] is called right.", uid, ip, port), HttpStatus.OK);
}

@GetMapping("/setBadGateway")
public String setBadGateway(@RequestParam boolean param) {
this.ifBadGateway = param;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
import org.springframework.cloud.client.circuitbreaker.ReactiveCircuitBreakerFactory;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
Expand Down Expand Up @@ -84,6 +85,24 @@ public String circuitBreakFeignFallbackFromCode() {
return circuitBreakerQuickstartCalleeServiceWithFallback.circuitBreak();
}

/**
* Feign circuit breaker with fallback from Polaris.
* @return circuit breaker information of callee
*/
@GetMapping("/feign/fallbackFromPolaris/wildcard/{uid}")
public String circuitBreakFeignFallbackFromPolarisWildcard(@PathVariable String uid) {
return circuitBreakerQuickstartCalleeService.circuitBreakWildcard(uid);
}

/**
* Feign circuit breaker with fallback from Polaris.
* @return circuit breaker information of callee
*/
@GetMapping("/feign/fallbackFromCode/wildcard/{uid}")
public String circuitBreakFeignFallbackFromCodeWildcard(@PathVariable String uid) {
return circuitBreakerQuickstartCalleeServiceWithFallback.circuitBreakWildcard(uid);
}

/**
* RestTemplate circuit breaker.
* @return circuit breaker information of callee
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@

import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;

/**
* Circuit breaker example callee provider.
Expand All @@ -35,4 +36,12 @@ public interface CircuitBreakerQuickstartCalleeService {
*/
@GetMapping("/quickstart/callee/circuitBreak")
String circuitBreak();

/**
* Check circuit break with uid.
* @param uid uid variable
* @return circuit break info
*/
@GetMapping("/quickstart/callee/circuitBreak/wildcard/{uid}")
String circuitBreakWildcard(@PathVariable String uid);
}
Original file line number Diff line number Diff line change
Expand Up @@ -31,4 +31,9 @@ public class CircuitBreakerQuickstartCalleeServiceFallback implements CircuitBre
public String circuitBreak() {
return "fallback: trigger the refuse for service callee.";
}

@Override
public String circuitBreakWildcard(String uid) {
return String.format("fallback: trigger the refuse for service callee %s.", uid);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@

import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;

/**
* CircuitBreakerQuickstartCalleeServiceWithFallback.
Expand All @@ -35,4 +36,12 @@ public interface CircuitBreakerQuickstartCalleeServiceWithFallback {
*/
@GetMapping("/quickstart/callee/circuitBreak")
String circuitBreak();

/**
* Check circuit break with uid.
* @param uid uid variable
* @return circuit break info
*/
@GetMapping("/circuitBreak/wildcard/{uid}")
String circuitBreakWildcard(@PathVariable String uid);
}
Loading