Skip to content

Commit f2d37fc

Browse files
committed
Merge discvr-26.7 to develop
2 parents 783f3f0 + 00505ae commit f2d37fc

52 files changed

Lines changed: 5749 additions & 10467 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.gitignore

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,4 +22,7 @@ SequenceAnalysis/resources/credits/jars.txt
2222
SequenceAnalysis/resources/credits/dependencies.txt
2323

2424
OpenLdapSync/resources/credits/dependencies.txt
25-
OpenLdapSync/resources/credits/jars.txt
25+
OpenLdapSync/resources/credits/jars.txt
26+
27+
cluster/resources/credits/jars.txt
28+
cluster/resources/credits/dependencies.txt

OpenLdapSync/src/org/labkey/openldapsync/ldap/LdapSyncRunner.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -269,16 +269,16 @@ private void setUserActive(User u, boolean active, String reason)
269269
try
270270
{
271271
log("Changing active state of user: " + u.getEmail() + " to " + active + (reason == null ? "" : ", reason: " + reason));
272-
_usersInactivated++;
273272

274273
if (!_previewOnly)
275274
{
276275
UserManager.setUserActive(_settings.getLabKeyAdminUser(), u, active);
277276
}
277+
_usersInactivated++;
278278
}
279279
catch (SecurityManager.UserManagementException e)
280280
{
281-
_log.error("Unable to deactive user: " + u.getEmail());
281+
_log.error("Unable to deactivate user: " + u.getEmail(), e);
282282
}
283283
}
284284

SequenceAnalysis/api-src/org/labkey/api/sequenceanalysis/SequenceOutputFile.java

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
package org.labkey.api.sequenceanalysis;
1717

1818
import com.fasterxml.jackson.annotation.JsonIgnore;
19+
import org.apache.logging.log4j.Logger;
1920
import org.json.JSONObject;
2021
import org.labkey.api.data.Container;
2122
import org.labkey.api.data.ContainerManager;
@@ -24,6 +25,11 @@
2425
import org.labkey.api.exp.api.ExpData;
2526
import org.labkey.api.exp.api.ExperimentService;
2627
import org.labkey.api.pipeline.PipelineJobService;
28+
import org.labkey.api.security.User;
29+
import org.labkey.api.security.permissions.Permission;
30+
import org.labkey.api.security.permissions.ReadPermission;
31+
import org.labkey.api.util.logging.LogHelper;
32+
import org.labkey.api.view.UnauthorizedException;
2733

2834
import java.io.File;
2935
import java.io.Serializable;
@@ -34,6 +40,8 @@
3440
*/
3541
public class SequenceOutputFile implements Serializable
3642
{
43+
private static final Logger _log = LogHelper.getLogger(SequenceOutputFile.class, "Messages related to SequenceOutputFile");
44+
3745
private Integer _rowid;
3846
private String _name;
3947
private String _description;
@@ -211,6 +219,28 @@ public void setModified(Date modified)
211219
_modified = modified;
212220
}
213221

222+
public static SequenceOutputFile getForId(Integer rowId, User u)
223+
{
224+
return getForId(rowId, u, ReadPermission.class);
225+
}
226+
227+
public static SequenceOutputFile getForId(Integer rowId, User u, Class<? extends Permission> perm)
228+
{
229+
SequenceOutputFile so = getForId(rowId);
230+
if (so.getContainerObj() == null)
231+
{
232+
_log.error("SequenceOutputFile lacks a valid container: " + rowId);
233+
return null;
234+
}
235+
236+
if (!so.getContainerObj().hasPermission(u, perm))
237+
{
238+
throw new UnauthorizedException("Insufficient permissions: " + rowId);
239+
}
240+
241+
return so;
242+
}
243+
214244
public static SequenceOutputFile getForId(Integer rowId)
215245
{
216246
if (PipelineJobService.get().getLocationType() != PipelineJobService.LocationType.WebServer)
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
SELECT
2+
DISTINCT rowid, name
3+
FROM sequenceanalysis.analysisSets

SequenceAnalysis/resources/web/SequenceAnalysis/window/AddFileSetsWindow.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,8 @@ Ext4.define('SequenceAnalysis.window.AddFileSetsWindow', {
5050
type: 'labkey-store',
5151
containerPath: Laboratory.Utils.getQueryContainerPath(),
5252
schemaName: 'laboratory',
53-
sql: 'SELECT DISTINCT rowid, name FROM sequenceanalysis.analysisSets',
53+
queryName: 'distinctAnalysisSets',
54+
columns: 'rowid,name',
5455
autoLoad: true
5556
},
5657
valueField: 'rowid',

SequenceAnalysis/src/org/labkey/sequenceanalysis/SequenceAnalysisController.java

Lines changed: 63 additions & 40 deletions
Large diffs are not rendered by default.

SequenceAnalysis/src/org/labkey/sequenceanalysis/SequenceAnalysisMaintenanceTask.java

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@
4444
import java.nio.file.DirectoryStream;
4545
import java.nio.file.Files;
4646
import java.nio.file.Path;
47+
import java.time.LocalDate;
4748
import java.util.ArrayList;
4849
import java.util.Arrays;
4950
import java.util.Collections;
@@ -81,25 +82,32 @@ public String getName()
8182
return "DeleteSequenceAnalysisArtifacts";
8283
}
8384

85+
private int _jobId = -1;
86+
8487
// NOTE: if there is a more direct way to locate the JobID this hack should be replaced
8588
private void checkJobCancelled(Logger log)
8689
{
87-
// Make the assumption there is only one active maintenance job at a time:
88-
SimpleFilter filter = new SimpleFilter(FieldKey.fromString("description"), SYSTEM_MAINTENANCE_DESCRIPTION).
89-
addCondition(FieldKey.fromString("container"), ContainerManager.getRoot().getId()).
90-
addCondition(FieldKey.fromString("modified"), new Date(), CompareType.DATE_EQUAL);
91-
int rowId = new TableSelector(DbSchema.get("pipeline", DbSchemaType.Module).getTable(JOB_TABLE), PageFlowUtil.set("RowId", "Status"), filter, null).getMapCollection().stream().filter(map -> {
92-
String val = String.valueOf(map.get("status"));
93-
return val != null && (val.toLowerCase().startsWith(PipelineJob.TaskStatus.cancelling.name()) || val.toLowerCase().startsWith(PipelineJob.TaskStatus.running.name()));
94-
}).map(rs -> Integer.parseInt(String.valueOf(rs.get("rowid")))).max(Integer::compareTo).orElse(-1);
95-
96-
if (rowId == -1)
90+
if (_jobId == -1)
9791
{
98-
log.warn("Unable to find rowId for job", new Exception("Unable to find rowId for job"));
99-
return;
92+
// Make the assumption there is only one active maintenance job at a time:
93+
SimpleFilter filter = new SimpleFilter(FieldKey.fromString("description"), SYSTEM_MAINTENANCE_DESCRIPTION).
94+
addCondition(FieldKey.fromString("container"), ContainerManager.getRoot().getId()).
95+
addCondition(FieldKey.fromString("modified"), LocalDate.now().minusDays(2), CompareType.DATE_GTE);
96+
int rowId = new TableSelector(DbSchema.get("pipeline", DbSchemaType.Module).getTable(JOB_TABLE), PageFlowUtil.set("RowId", "Status"), filter, null).getMapCollection().stream().filter(map -> {
97+
String val = String.valueOf(map.get("status"));
98+
return val != null && (val.toLowerCase().startsWith(PipelineJob.TaskStatus.cancelling.name()) || val.toLowerCase().startsWith(PipelineJob.TaskStatus.running.name()));
99+
}).map(rs -> Integer.parseInt(String.valueOf(rs.get("rowid")))).max(Integer::compareTo).orElse(-1);
100+
101+
if (rowId == -1)
102+
{
103+
log.warn("Unable to find rowId for job", new Exception("Unable to find rowId for job"));
104+
return;
105+
}
106+
107+
_jobId = rowId;
100108
}
101109

102-
PipelineStatusFile sf = PipelineService.get().getStatusFile(rowId);
110+
PipelineStatusFile sf = PipelineService.get().getStatusFile(_jobId);
103111
if (PipelineJob.TaskStatus.cancelling.name().equalsIgnoreCase(sf.getStatus()))
104112
{
105113
throw new CancelledException();

SequenceAnalysis/src/org/labkey/sequenceanalysis/analysis/PrintReadBackedHaplotypesHandler.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,12 @@ public boolean doSplitJobs()
9090
return true;
9191
}
9292

93+
@Override
94+
public boolean supportsSraArchivedData()
95+
{
96+
return true;
97+
}
98+
9399
public class Processor implements SequenceOutputProcessor
94100
{
95101
@Override
@@ -99,7 +105,7 @@ public void init(JobContext ctx, List<SequenceOutputFile> inputFiles, List<Recor
99105
{
100106
if (so.getReadset() != null)
101107
{
102-
ctx.getSequenceSupport().cacheReadset(so.getReadset(), ctx.getJob().getUser());
108+
ctx.getSequenceSupport().cacheReadset(so.getReadset(), ctx.getJob().getUser(), true);
103109
}
104110
else
105111
{
@@ -148,7 +154,7 @@ public void processFilesRemote(List<SequenceOutputFile> inputFiles, JobContext c
148154
args.addAll(extraArgs);
149155
}
150156

151-
File output = new File(ctx.getWorkingDirectory(), FileUtil.getBaseName(input) + ".txt");
157+
File output = FileUtil.appendName(ctx.getWorkingDirectory(), FileUtil.getBaseName(input) + ".txt");
152158
Wrapper wrapper = new Wrapper(ctx.getLogger());
153159
wrapper.execute(input, ctx.getSequenceSupport().getCachedGenome(so.getLibrary_id()).getWorkingFastaFile(), output, args);
154160

SequenceAnalysis/src/org/labkey/sequenceanalysis/pipeline/AlignmentImportInitTask.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ private List<AnalysisModel> parseAndCreateReadsets() throws PipelineJobException
132132
}
133133
}
134134

135-
getPipelineJob().getSequenceSupport().cacheGenome(SequenceAnalysisService.get().getReferenceGenome(o.getInt("library_id"), getJob().getUser()));
135+
getPipelineJob().getSequenceSupport().cacheGenome(SequenceAnalysisService.get().getReferenceGenome(o.getInt("library_id"), getJob().getUser()), true);
136136
getPipelineJob().getSequenceSupport().cacheReadset(r);
137137
}
138138
}

SequenceAnalysis/src/org/labkey/sequenceanalysis/pipeline/AlignmentInitTask.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@ else if (steps.size() > 1)
156156
throw new PipelineJobException("Reference file does not exist: " + refFasta.getPath());
157157
}
158158

159-
getPipelineJob().getSequenceSupport().cacheGenome(output.getReferenceGenome());
159+
getPipelineJob().getSequenceSupport().cacheGenome(output.getReferenceGenome(), true);
160160

161161
getHelper().getFileManager().addStepOutputs(action, output);
162162
getHelper().getFileManager().cleanup(Collections.singleton(action));

0 commit comments

Comments
 (0)