From e8f6816249e1346a9c657fb5ccb25594cf82ebb6 Mon Sep 17 00:00:00 2001 From: Patrick Dowler Date: Wed, 4 Oct 2023 13:22:59 -0700 Subject: [PATCH] prototype: add setAppName and pass value through to JobRunner impl --- cadc-uws-server/build.gradle | 2 +- .../ca/nrc/cadc/uws/server/AbstractExecutor.java | 9 +++++++++ .../java/ca/nrc/cadc/uws/server/JobExecutor.java | 4 ++++ .../main/java/ca/nrc/cadc/uws/server/JobManager.java | 4 ++++ .../main/java/ca/nrc/cadc/uws/server/JobRunner.java | 4 ++++ .../main/java/ca/nrc/cadc/uws/server/JobServlet.java | 1 + .../ca/nrc/cadc/uws/server/SimpleJobManager.java | 12 ++++++++++++ 7 files changed, 35 insertions(+), 1 deletion(-) diff --git a/cadc-uws-server/build.gradle b/cadc-uws-server/build.gradle index 6573a55..fa2b58a 100644 --- a/cadc-uws-server/build.gradle +++ b/cadc-uws-server/build.gradle @@ -15,7 +15,7 @@ sourceCompatibility = 1.8 group = 'org.opencadc' -version = '1.2.18' +version = '1.2.19' description = 'OpenCADC UWS server library' def git_url = 'https://github.com/opencadc/uws' diff --git a/cadc-uws-server/src/main/java/ca/nrc/cadc/uws/server/AbstractExecutor.java b/cadc-uws-server/src/main/java/ca/nrc/cadc/uws/server/AbstractExecutor.java index b20af40..c0ecf3d 100644 --- a/cadc-uws-server/src/main/java/ca/nrc/cadc/uws/server/AbstractExecutor.java +++ b/cadc-uws-server/src/main/java/ca/nrc/cadc/uws/server/AbstractExecutor.java @@ -86,6 +86,7 @@ public abstract class AbstractExecutor implements JobExecutor protected JobUpdater jobUpdater; protected Class jobRunnerClass; + protected String appName; private AbstractExecutor() { } @@ -106,6 +107,13 @@ public void terminate() // no-op } + @Override + public void setAppName(String appName) { + JobExecutor.super.setAppName(appName); + this.appName = appName; + } + + public void setJobUpdater(JobUpdater jobUpdater) { this.jobUpdater = jobUpdater; @@ -163,6 +171,7 @@ public final void execute(Job job, SyncOutput sync) JobRunner jobRunner = getJobRunner(); jobRunner.setJobUpdater(jobUpdater); jobRunner.setJob(job); + jobRunner.setAppName(appName); jobRunner.setSyncOutput(sync); if (sync != null) diff --git a/cadc-uws-server/src/main/java/ca/nrc/cadc/uws/server/JobExecutor.java b/cadc-uws-server/src/main/java/ca/nrc/cadc/uws/server/JobExecutor.java index ec92590..8dc854d 100644 --- a/cadc-uws-server/src/main/java/ca/nrc/cadc/uws/server/JobExecutor.java +++ b/cadc-uws-server/src/main/java/ca/nrc/cadc/uws/server/JobExecutor.java @@ -81,6 +81,10 @@ */ public interface JobExecutor { + default void setAppName(String appName) { + // no-op + } + /** * Shutdown and release any resources. This includes ThreadPools, connections, open files, etc. */ diff --git a/cadc-uws-server/src/main/java/ca/nrc/cadc/uws/server/JobManager.java b/cadc-uws-server/src/main/java/ca/nrc/cadc/uws/server/JobManager.java index bcab10c..f996755 100644 --- a/cadc-uws-server/src/main/java/ca/nrc/cadc/uws/server/JobManager.java +++ b/cadc-uws-server/src/main/java/ca/nrc/cadc/uws/server/JobManager.java @@ -84,6 +84,10 @@ */ public interface JobManager { + default void setAppName(String appName) { + // no-op + } + void terminate() throws InterruptedException; Job create(String requestPath, Job job) diff --git a/cadc-uws-server/src/main/java/ca/nrc/cadc/uws/server/JobRunner.java b/cadc-uws-server/src/main/java/ca/nrc/cadc/uws/server/JobRunner.java index a39e5aa..91e0dfc 100644 --- a/cadc-uws-server/src/main/java/ca/nrc/cadc/uws/server/JobRunner.java +++ b/cadc-uws-server/src/main/java/ca/nrc/cadc/uws/server/JobRunner.java @@ -79,6 +79,10 @@ */ public interface JobRunner extends Runnable { + default void setAppName(String appName) { + // no-op + } + public void setJobUpdater(JobUpdater jobUpdater); public void setJob(Job job); diff --git a/cadc-uws-server/src/main/java/ca/nrc/cadc/uws/server/JobServlet.java b/cadc-uws-server/src/main/java/ca/nrc/cadc/uws/server/JobServlet.java index e848ef2..68f3e4d 100644 --- a/cadc-uws-server/src/main/java/ca/nrc/cadc/uws/server/JobServlet.java +++ b/cadc-uws-server/src/main/java/ca/nrc/cadc/uws/server/JobServlet.java @@ -104,6 +104,7 @@ protected void initJobManager(String cname) { { Class clazz = (Class) Class.forName(cname); this.jobManager = clazz.newInstance(); + jobManager.setAppName(appName); Context ctx = new InitialContext(); try { diff --git a/cadc-uws-server/src/main/java/ca/nrc/cadc/uws/server/SimpleJobManager.java b/cadc-uws-server/src/main/java/ca/nrc/cadc/uws/server/SimpleJobManager.java index a11dd0f..150883a 100644 --- a/cadc-uws-server/src/main/java/ca/nrc/cadc/uws/server/SimpleJobManager.java +++ b/cadc-uws-server/src/main/java/ca/nrc/cadc/uws/server/SimpleJobManager.java @@ -95,6 +95,7 @@ public class SimpleJobManager implements JobManager { protected JobPersistence jobPersistenceImpl; protected JobExecutor jobExecutorImpl; + protected String appName; protected Long maxExecDuration = 3600L; protected Long maxQuote = 3600L; protected Long maxDestruction = 7 * 24 * 3600L; @@ -112,6 +113,14 @@ public void terminate() throws InterruptedException { } } + @Override + public void setAppName(String appName) { + this.appName = appName; + if (jobExecutorImpl != null) { + jobExecutorImpl.setAppName(appName); + } + } + /** * Set a single (global) JobPersistence instance to be used for all requests. * @@ -128,6 +137,9 @@ public void setJobPersistence(JobPersistence jobPersistence) { */ public void setJobExecutor(JobExecutor jobExecutor) { this.jobExecutorImpl = jobExecutor; + if (appName != null) { + jobExecutorImpl.setAppName(appName); + } } protected JobPersistence getJobPersistence(String requestPath) {