diff --git a/src/org/labkey/targetedms/TargetedMSController.java b/src/org/labkey/targetedms/TargetedMSController.java index cf72c3b83..952c0285c 100644 --- a/src/org/labkey/targetedms/TargetedMSController.java +++ b/src/org/labkey/targetedms/TargetedMSController.java @@ -505,6 +505,9 @@ else if (FolderType.QC.toString().equals(folderSetupForm.getFolderType())) addDataPipelineTab(c); addRawFilesPipelineTab(c); + // We may have toggled into or out of QC folder type, so clear out the cache + TargetedMSManager.get().clearQCMetricCache(c, true); + // Inform listeners so that any additional folder configuration can be done. TargetedMSService.get().getTargetedMSFolderTypeListeners().forEach(listener -> listener.folderCreated(c, getUser())); diff --git a/src/org/labkey/targetedms/TargetedMSManager.java b/src/org/labkey/targetedms/TargetedMSManager.java index 73b423668..af47d55ce 100644 --- a/src/org/labkey/targetedms/TargetedMSManager.java +++ b/src/org/labkey/targetedms/TargetedMSManager.java @@ -167,9 +167,18 @@ private TargetedMSManager() private static final Cache> _metricCache = CacheManager.getBlockingCache(1000, TimeUnit.HOURS.toMillis(1), "Enabled QC metric configs", (c, argument) -> { + if (!(argument instanceof TargetedMSSchema schema)) + { + throw new IllegalArgumentException("Argument must be a TargetedMSSchema but was " + argument); + } + + if (getFolderType(schema.getContainer()) != TargetedMSService.FolderType.QC) + { + return Collections.emptyList(); + } + try { - TargetedMSSchema schema = (TargetedMSSchema) argument; TableInfo metricsTable = schema.getTableOrThrow("qcMetricsConfig", null); List metrics = new TableSelector(metricsTable, null, new Sort(FieldKey.fromParts("Name"))).getArrayList(QCMetricConfiguration.class);