From e47c89b1a83351e9d89bf4a1a22f93b1d5b8f5cc Mon Sep 17 00:00:00 2001 From: Brandon Clayton <bclayton@usgs.gov> Date: Fri, 17 Jan 2025 09:22:25 -0700 Subject: [PATCH] test executor methods --- .../earthquake/nshmp/www/PrimingResource.java | 2 +- .../earthquake/nshmp/www/ServletUtil.java | 30 ++++++++++++------- .../nshmp/www/hazard/DisaggController.java | 5 +++- .../nshmp/www/hazard/HazardController.java | 5 +++- .../nshmp/www/source/RateController.java | 5 +++- 5 files changed, 33 insertions(+), 14 deletions(-) diff --git a/src/main/java/gov/usgs/earthquake/nshmp/www/PrimingResource.java b/src/main/java/gov/usgs/earthquake/nshmp/www/PrimingResource.java index 27e36f1f..66800031 100644 --- a/src/main/java/gov/usgs/earthquake/nshmp/www/PrimingResource.java +++ b/src/main/java/gov/usgs/earthquake/nshmp/www/PrimingResource.java @@ -54,7 +54,7 @@ public class PrimingResource implements OrderedResource { @Override public void afterRestore(Context<? extends Resource> context) throws Exception { // Reset executors on restore as Shutdown event does not fire on AWS lambda - ServletUtil.resetExecutors(); + // ServletUtil.resetExecutors(); } private static AwsProxyRequest getAwsProxyRequest(String path) { diff --git a/src/main/java/gov/usgs/earthquake/nshmp/www/ServletUtil.java b/src/main/java/gov/usgs/earthquake/nshmp/www/ServletUtil.java index 5f75c7c2..8676183b 100644 --- a/src/main/java/gov/usgs/earthquake/nshmp/www/ServletUtil.java +++ b/src/main/java/gov/usgs/earthquake/nshmp/www/ServletUtil.java @@ -67,8 +67,8 @@ public class ServletUtil { static { THREAD_COUNT = getRuntime().availableProcessors(); - CALC_EXECUTOR = MoreExecutors.listeningDecorator(Executors.newFixedThreadPool(THREAD_COUNT)); - TASK_EXECUTOR = Executors.newSingleThreadExecutor(); + // CALC_EXECUTOR = MoreExecutors.listeningDecorator(Executors.newFixedThreadPool(THREAD_COUNT)); + // TASK_EXECUTOR = Executors.newSingleThreadExecutor(); GSON = new GsonBuilder() .registerTypeAdapter(Imt.class, new WsUtils.EnumSerializer<Imt>()) .registerTypeAdapter(ValueFormat.class, new WsUtils.EnumSerializer<ValueFormat>()) @@ -94,14 +94,24 @@ public class ServletUtil { /** * Reset executors on AWS Lambda SnapStart restore */ - static void resetExecutors() { - CALC_EXECUTOR.shutdown(); - TASK_EXECUTOR.shutdown(); + // static void resetExecutors() { + // CALC_EXECUTOR.shutdown(); + // TASK_EXECUTOR.shutdown(); + // CALC_EXECUTOR = MoreExecutors.listeningDecorator(Executors.newFixedThreadPool(THREAD_COUNT)); + // TASK_EXECUTOR = Executors.newSingleThreadExecutor(); + // } + + public static void startExecutors() { CALC_EXECUTOR = MoreExecutors.listeningDecorator(Executors.newFixedThreadPool(THREAD_COUNT)); TASK_EXECUTOR = Executors.newSingleThreadExecutor(); } + public static void shutdownExecutors() { + CALC_EXECUTOR.shutdown(); + TASK_EXECUTOR.shutdown(); + } + static void model(HazardModel model) { HAZARD_MODEL = model; } @@ -110,11 +120,11 @@ public class ServletUtil { return HAZARD_MODEL; } - @EventListener - void shutdown(ShutdownEvent event) { - CALC_EXECUTOR.shutdown(); - TASK_EXECUTOR.shutdown(); - } + // @EventListener + // void shutdown(ShutdownEvent event) { + // CALC_EXECUTOR.shutdown(); + // TASK_EXECUTOR.shutdown(); + // } @EventListener void startup(StartupEvent event) { diff --git a/src/main/java/gov/usgs/earthquake/nshmp/www/hazard/DisaggController.java b/src/main/java/gov/usgs/earthquake/nshmp/www/hazard/DisaggController.java index 1d7c49c5..54234fa4 100644 --- a/src/main/java/gov/usgs/earthquake/nshmp/www/hazard/DisaggController.java +++ b/src/main/java/gov/usgs/earthquake/nshmp/www/hazard/DisaggController.java @@ -109,11 +109,14 @@ public class DisaggController { @QueryValue @Nullable Set<Imt> imt, @QueryValue @Nullable Set<DisaggDataType> out) { try { + ServletUtil.startExecutors(); Set<Imt> imts = HazardService.readImts(http); Set<DataType> dataTypes = HazardService.readDataTypes(http); DisaggService.RequestRp request = new DisaggService.RequestRp( http, longitude, latitude, vs30, imts, returnPeriod, dataTypes); - return DisaggService.getDisaggRp(request); + var response = DisaggService.getDisaggRp(request); + ServletUtil.shutdownExecutors(); + return response; } catch (Exception e) { return ServletUtil.error( DisaggService.LOG, e, diff --git a/src/main/java/gov/usgs/earthquake/nshmp/www/hazard/HazardController.java b/src/main/java/gov/usgs/earthquake/nshmp/www/hazard/HazardController.java index 15c4de0d..30fd865a 100644 --- a/src/main/java/gov/usgs/earthquake/nshmp/www/hazard/HazardController.java +++ b/src/main/java/gov/usgs/earthquake/nshmp/www/hazard/HazardController.java @@ -103,10 +103,13 @@ public class HazardController { defaultValue = "false") @Nullable Boolean maxdir, @QueryValue @Nullable Set<Imt> imt) { try { + ServletUtil.startExecutors(); Set<Imt> imts = HazardService.readImts(http); HazardService.Request request = new HazardService.Request( http, longitude, latitude, vs30, imts, truncate, maxdir); - return HazardService.getHazard(request); + var response = HazardService.getHazard(request); + ServletUtil.shutdownExecutors(); + return response; } catch (Exception e) { return ServletUtil.error( HazardService.LOG, e, diff --git a/src/main/java/gov/usgs/earthquake/nshmp/www/source/RateController.java b/src/main/java/gov/usgs/earthquake/nshmp/www/source/RateController.java index 1ad8fa73..489dbc51 100644 --- a/src/main/java/gov/usgs/earthquake/nshmp/www/source/RateController.java +++ b/src/main/java/gov/usgs/earthquake/nshmp/www/source/RateController.java @@ -86,9 +86,12 @@ public class RateController { minimum = "0.01", maximum = "1000") @PathVariable double distance) { try { + ServletUtil.startExecutors(); RateService.Request request = new RateService.Request( http, longitude, latitude, distance); - return RateService.getRate(request); + var response = RateService.getRate(request); + ServletUtil.shutdownExecutors(); + return response; } catch (Exception e) { return ServletUtil.error( RateService.LOG, e, -- GitLab