From 03ea05effbedc30a3e09c16546545af51ed39475 Mon Sep 17 00:00:00 2001 From: emeroad Date: Thu, 7 Jul 2022 14:02:31 +0900 Subject: [PATCH] [#9017] Add max limit to getApplicationHostInfo for OOM prevent --- .../web/controller/ApplicationController.java | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/web/src/main/java/com/navercorp/pinpoint/web/controller/ApplicationController.java b/web/src/main/java/com/navercorp/pinpoint/web/controller/ApplicationController.java index c98ba32bb3da..3d4053bc4da6 100644 --- a/web/src/main/java/com/navercorp/pinpoint/web/controller/ApplicationController.java +++ b/web/src/main/java/com/navercorp/pinpoint/web/controller/ApplicationController.java @@ -21,6 +21,7 @@ import com.navercorp.pinpoint.web.service.ApplicationService; import com.navercorp.pinpoint.web.vo.ApplicationAgentHostList; import com.navercorp.pinpoint.web.response.CodeResult; +import org.apache.commons.lang3.ObjectUtils; import org.springframework.http.HttpStatus; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -36,6 +37,8 @@ @RestController public class ApplicationController { + public static final int MAX_PAGING_LIMIT = 100; + private static final int NO_DURATION = -1; private final AgentInfoService agentInfoService; @@ -46,19 +49,15 @@ public ApplicationController(AgentInfoService agentInfoService, ApplicationServi this.applicationService = Objects.requireNonNull(applicationService, "applicationService"); } - @GetMapping(value = "/getApplicationHostInfo", params = {"!durationDays"}) - public ApplicationAgentHostList getApplicationHostInfo ( - @RequestParam(value = "offset", required = false, defaultValue = "1") int offset, - @RequestParam(value = "limit", required = false, defaultValue = "100") int limit) { - return agentInfoService.getApplicationAgentHostList(offset, limit); - } - - @GetMapping(value = "/getApplicationHostInfo", params = {"durationDays"}) + @GetMapping(value = "/getApplicationHostInfo") public ApplicationAgentHostList getApplicationHostInfo ( @RequestParam(value = "offset", required = false, defaultValue = "1") int offset, @RequestParam(value = "limit", required = false, defaultValue = "100") int limit, - @RequestParam(value = "durationDays") int durationDays) { - return agentInfoService.getApplicationAgentHostList(offset, limit, durationDays); + @RequestParam(value = "durationDays", required = false) Integer durationDays) { + int maxLimit = Math.min(MAX_PAGING_LIMIT, limit); + durationDays = ObjectUtils.defaultIfNull(durationDays, NO_DURATION); + + return agentInfoService.getApplicationAgentHostList(offset, maxLimit, durationDays); } @RequestMapping(value = "/isAvailableApplicationName")