From 47461ffbe00ae7c1d45571353b96c490b800564f Mon Sep 17 00:00:00 2001 From: Lum Date: Wed, 29 Jul 2026 10:30:19 -0700 Subject: [PATCH 1/2] Remove experimental feature --- core/src/org/labkey/core/portal/ProjectController.java | 4 ++-- study/src/org/labkey/study/StudyModule.java | 5 ----- study/src/org/labkey/study/controllers/StudyController.java | 6 ++---- study/src/org/labkey/study/query/DatasetQueryView.java | 1 - study/src/org/labkey/study/query/DatasetTableImpl.java | 4 +--- 5 files changed, 5 insertions(+), 15 deletions(-) diff --git a/core/src/org/labkey/core/portal/ProjectController.java b/core/src/org/labkey/core/portal/ProjectController.java index d1d8e80104a..1f5e9caca1d 100644 --- a/core/src/org/labkey/core/portal/ProjectController.java +++ b/core/src/org/labkey/core/portal/ProjectController.java @@ -1278,8 +1278,8 @@ public void checkPermissions() throws UnauthorizedException catch (UnauthorizedException e) { // Let Troubleshooters retrieve folder nav in root - if (!isTroubleshooterRetrievingFolderNav()) - throw e; + //if (!isTroubleshooterRetrievingFolderNav()) + // throw e; } } diff --git a/study/src/org/labkey/study/StudyModule.java b/study/src/org/labkey/study/StudyModule.java index 8200f035965..785aaf2e1ba 100644 --- a/study/src/org/labkey/study/StudyModule.java +++ b/study/src/org/labkey/study/StudyModule.java @@ -402,11 +402,6 @@ protected void startupAfterSpringConfig(ModuleContext moduleContext) "Flags rows in assay linked datasets where the subject and timepoint may be different from the source assay.", false); - OptionalFeatureService.get().addExperimentalFeatureFlag(DatasetQueryView.EXPERIMENTAL_ALLOW_MERGE_WITH_MANAGED_KEYS, - "Allow merge of study dataset that uses server-managed additional key fields", - "Merging of dataset that uses server-managed third key (such as GUID or auto RowId) is not officially supported. Unexpected outcome might be experienced when merge is performed.", - false); - OptionalFeatureService.get().addExperimentalFeatureFlag(DatasetQueryView.EXPERIMENTAL_QUERY_DATASETS, "Allow query based dataset snapshots", "Allow unprovisioned, query-based dataset snapshots to be created.", diff --git a/study/src/org/labkey/study/controllers/StudyController.java b/study/src/org/labkey/study/controllers/StudyController.java index 8fdeeabc929..344e5ed3b20 100644 --- a/study/src/org/labkey/study/controllers/StudyController.java +++ b/study/src/org/labkey/study/controllers/StudyController.java @@ -35,6 +35,7 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.json.JSONObject; +import org.junit.Test; import org.labkey.api.action.ApiJsonForm; import org.labkey.api.action.ApiResponse; import org.labkey.api.action.ApiSimpleResponse; @@ -163,7 +164,6 @@ import org.labkey.api.security.RequiresNoPermission; import org.labkey.api.security.RequiresPermission; import org.labkey.api.security.SecurityManager; -import org.junit.Test; import org.labkey.api.security.User; import org.labkey.api.security.permissions.AbstractContainerScopingTest; import org.labkey.api.security.permissions.AdminPermission; @@ -175,7 +175,6 @@ import org.labkey.api.security.permissions.QCAnalystPermission; import org.labkey.api.security.permissions.ReadPermission; import org.labkey.api.security.permissions.UpdatePermission; -import org.labkey.api.settings.OptionalFeatureService; import org.labkey.api.specimen.SpecimenManager; import org.labkey.api.specimen.SpecimenMigrationService; import org.labkey.api.specimen.location.LocationImpl; @@ -323,7 +322,6 @@ import static org.labkey.study.model.QCStateSet.getQCUrlFilterKey; import static org.labkey.study.model.QCStateSet.getQCUrlFilterValue; import static org.labkey.study.model.QCStateSet.selectedQCStateLabelFromUrl; -import static org.labkey.study.query.DatasetQueryView.EXPERIMENTAL_ALLOW_MERGE_WITH_MANAGED_KEYS; public class StudyController extends BaseStudyController { @@ -2709,7 +2707,7 @@ public ModelAndView getView(ImportDatasetForm form, BindException errors) throws if (null == PipelineService.get().findPipelineRoot(getContainer())) return new RequirePipelineView(_study, true, errors); - boolean showImportOptions = OptionalFeatureService.get().isFeatureEnabled(EXPERIMENTAL_ALLOW_MERGE_WITH_MANAGED_KEYS) || _def.getKeyManagementType() == Dataset.KeyManagementType.None; + boolean showImportOptions = _def.getKeyManagementType() == Dataset.KeyManagementType.None; setShowMergeOption(showImportOptions); setShowUpdateOption(showImportOptions); setSuccessMessageSuffix("imported"); //Works for when the merge option is selected (may include updates) vs default "inserted" diff --git a/study/src/org/labkey/study/query/DatasetQueryView.java b/study/src/org/labkey/study/query/DatasetQueryView.java index dcfb42781dd..66d4ca39b7f 100644 --- a/study/src/org/labkey/study/query/DatasetQueryView.java +++ b/study/src/org/labkey/study/query/DatasetQueryView.java @@ -120,7 +120,6 @@ public class DatasetQueryView extends StudyQueryView { public static final String EXPERIMENTAL_LINKED_DATASET_CHECK = "LinkedDatasetCheck"; - public static final String EXPERIMENTAL_ALLOW_MERGE_WITH_MANAGED_KEYS = "MergeWithManagedDatasetKeys"; public static final String EXPERIMENTAL_QUERY_DATASETS = "queryBasedDatasets"; private final DatasetDefinition _dataset; diff --git a/study/src/org/labkey/study/query/DatasetTableImpl.java b/study/src/org/labkey/study/query/DatasetTableImpl.java index 03a10174e63..4e5138f5555 100644 --- a/study/src/org/labkey/study/query/DatasetTableImpl.java +++ b/study/src/org/labkey/study/query/DatasetTableImpl.java @@ -80,7 +80,6 @@ import org.labkey.api.security.permissions.RestrictedUpdatePermission; import org.labkey.api.security.permissions.UpdatePermission; import org.labkey.api.security.roles.Role; -import org.labkey.api.settings.OptionalFeatureService; import org.labkey.api.specimen.model.SpecimenTablesProvider; import org.labkey.api.study.Dataset; import org.labkey.api.study.DatasetTable; @@ -118,7 +117,6 @@ import java.util.function.Predicate; import static org.labkey.api.util.IntegerUtils.asLongElseNull; -import static org.labkey.study.query.DatasetQueryView.EXPERIMENTAL_ALLOW_MERGE_WITH_MANAGED_KEYS; /** Wraps a DatasetSchemaTableInfo and makes it Query-ized. Represents a single dataset's data */ public class DatasetTableImpl extends BaseStudyTable implements DatasetTable @@ -492,7 +490,7 @@ public SQLFragment getValueSql(String tableAliasName) addFolderColumn(); - if(OptionalFeatureService.get().isFeatureEnabled(EXPERIMENTAL_ALLOW_MERGE_WITH_MANAGED_KEYS) || getDataset().getKeyManagementType() == Dataset.KeyManagementType.None) + if (getDataset().getKeyManagementType() == Dataset.KeyManagementType.None) { setAllowedInsertOption(QueryUpdateService.InsertOption.MERGE); setAllowedInsertOption(QueryUpdateService.InsertOption.REPLACE); From 90c56f9b41411ff8508f498be32f12cc59f739a5 Mon Sep 17 00:00:00 2001 From: Lum Date: Wed, 29 Jul 2026 11:01:27 -0700 Subject: [PATCH 2/2] debug code --- core/src/org/labkey/core/portal/ProjectController.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/src/org/labkey/core/portal/ProjectController.java b/core/src/org/labkey/core/portal/ProjectController.java index 1f5e9caca1d..d1d8e80104a 100644 --- a/core/src/org/labkey/core/portal/ProjectController.java +++ b/core/src/org/labkey/core/portal/ProjectController.java @@ -1278,8 +1278,8 @@ public void checkPermissions() throws UnauthorizedException catch (UnauthorizedException e) { // Let Troubleshooters retrieve folder nav in root - //if (!isTroubleshooterRetrievingFolderNav()) - // throw e; + if (!isTroubleshooterRetrievingFolderNav()) + throw e; } }