From 06e787dfec5046ff538fd9fb58c9e153513c382f Mon Sep 17 00:00:00 2001 From: labkey-susanh Date: Tue, 29 Sep 2026 15:57:34 -0700 Subject: [PATCH 1/3] Add optional includeEntities property to jobCreationForm so we can avoid serializing if not needed --- api/src/org/labkey/api/workflow/Job.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/api/src/org/labkey/api/workflow/Job.java b/api/src/org/labkey/api/workflow/Job.java index b12b6e8d8b9..87499580b44 100644 --- a/api/src/org/labkey/api/workflow/Job.java +++ b/api/src/org/labkey/api/workflow/Job.java @@ -16,6 +16,7 @@ package org.labkey.api.workflow; import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import org.jetbrains.annotations.NotNull; import org.json.JSONObject; @@ -319,8 +320,16 @@ public void setAttachments(List attachments) _attachments = attachments; } + @JsonIgnore public abstract List getEntities(); + // Serialize only preloaded entities; getEntities() lazily queries them + @JsonProperty("entities") @JsonInclude(JsonInclude.Include.NON_NULL) + public List getLoadedEntities() + { + return _entities; + } + @JsonIgnore public abstract @NotNull List getSamples(); From e7c5c11604a8a3ad2172495e7f8b72e2c5083aa0 Mon Sep 17 00:00:00 2001 From: labkey-susanh Date: Tue, 29 Sep 2026 16:46:05 -0700 Subject: [PATCH 2/3] Add some streams for better memory usage --- api/src/org/labkey/api/workflow/Job.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/api/src/org/labkey/api/workflow/Job.java b/api/src/org/labkey/api/workflow/Job.java index 87499580b44..4605c8d2b00 100644 --- a/api/src/org/labkey/api/workflow/Job.java +++ b/api/src/org/labkey/api/workflow/Job.java @@ -46,6 +46,7 @@ import java.util.Map; import java.util.Objects; import java.util.stream.Collectors; +import java.util.stream.Stream; public abstract class Job extends CreatedModified implements Identifiable { @@ -334,13 +335,13 @@ public List getLoadedEntities() public abstract @NotNull List getSamples(); @JsonIgnore - public abstract @NotNull List getSampleNames(); + public abstract @NotNull Stream getSampleNames(); @JsonIgnore public abstract @NotNull List getSources(); @JsonIgnore - public abstract @NotNull List getSourceNames(); + public abstract @NotNull Stream getSourceNames(); public void setEntities(List entities) { From 84c5edcbbf5eb96efa7610e1ab0f8bedf98fe32b Mon Sep 17 00:00:00 2001 From: labkey-susanh Date: Wed, 30 Sep 2026 15:19:26 -0700 Subject: [PATCH 3/3] Use an uncached stream to avoid creating the collection --- api/src/org/labkey/api/workflow/Job.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/api/src/org/labkey/api/workflow/Job.java b/api/src/org/labkey/api/workflow/Job.java index 4605c8d2b00..ba6936f4451 100644 --- a/api/src/org/labkey/api/workflow/Job.java +++ b/api/src/org/labkey/api/workflow/Job.java @@ -334,12 +334,14 @@ public List getLoadedEntities() @JsonIgnore public abstract @NotNull List getSamples(); + // Backed by an open ResultSet; callers must close it @JsonIgnore public abstract @NotNull Stream getSampleNames(); @JsonIgnore public abstract @NotNull List getSources(); + // Backed by an open ResultSet; callers must close it @JsonIgnore public abstract @NotNull Stream getSourceNames();