From 06765640e2a2da9812e510205eeade1c19913655 Mon Sep 17 00:00:00 2001 From: James Agnew Date: Fri, 22 Nov 2019 16:00:49 +0100 Subject: [PATCH] Add property for cached search result timeout --- .../uhn/fhir/jpa/starter/FhirServerConfigCommon.java | 3 +++ .../java/ca/uhn/fhir/jpa/starter/HapiProperties.java | 12 +++++++++--- src/main/resources/hapi.properties | 3 ++- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/main/java/ca/uhn/fhir/jpa/starter/FhirServerConfigCommon.java b/src/main/java/ca/uhn/fhir/jpa/starter/FhirServerConfigCommon.java index ace86a1..5e35b3e 100644 --- a/src/main/java/ca/uhn/fhir/jpa/starter/FhirServerConfigCommon.java +++ b/src/main/java/ca/uhn/fhir/jpa/starter/FhirServerConfigCommon.java @@ -105,6 +105,9 @@ public class FhirServerConfigCommon { retVal.setReuseCachedSearchResultsForMillis(reuseCachedSearchResultsMillis); ourLog.info("Server configured to cache search results for {} milliseconds", reuseCachedSearchResultsMillis); + Long retainCachedSearchesMinutes = HapiProperties.getExpireSearchResultsAfterMins(); + retVal.setExpireSearchResultsAfterMillis(retainCachedSearchesMinutes * 60 * 1000); + // Subscriptions are enabled by channel type if (HapiProperties.getSubscriptionRestHookEnabled()) { ourLog.info("Enabling REST-hook subscriptions"); diff --git a/src/main/java/ca/uhn/fhir/jpa/starter/HapiProperties.java b/src/main/java/ca/uhn/fhir/jpa/starter/HapiProperties.java index 4ee0e48..91abbb0 100644 --- a/src/main/java/ca/uhn/fhir/jpa/starter/HapiProperties.java +++ b/src/main/java/ca/uhn/fhir/jpa/starter/HapiProperties.java @@ -20,7 +20,7 @@ import java.util.stream.Collectors; import static org.apache.commons.lang3.StringUtils.*; public class HapiProperties { - static final String ENABLE_INDEX_MISSING_FIELDS = "enable_index_missing_fields"; + static final String ENABLE_INDEX_MISSING_FIELDS = "enable_index_missing_fields"; static final String AUTO_CREATE_PLACEHOLDER_REFERENCE_TARGETS = "auto_create_placeholder_reference_targets"; static final String ENFORCE_REFERENTIAL_INTEGRITY_ON_WRITE = "enforce_referential_integrity_on_write"; static final String ENFORCE_REFERENTIAL_INTEGRITY_ON_DELETE = "enforce_referential_integrity_on_delete"; @@ -67,7 +67,8 @@ public class HapiProperties { private static final String FILTER_SEARCH_ENABLED = "filter_search.enabled"; private static final String GRAPHQL_ENABLED = "graphql.enabled"; private static final String BULK_EXPORT_ENABLED = "bulk.export.enabled"; - private static Properties ourProperties; + public static final String EXPIRE_SEARCH_RESULTS_AFTER_MINS = "retain_cached_searches_mins"; + private static Properties ourProperties; public static boolean isElasticSearchEnabled() { return HapiProperties.getPropertyBoolean("elasticsearch.enabled", false); @@ -395,10 +396,15 @@ public class HapiProperties { } public static Long getReuseCachedSearchResultsMillis() { - String value = HapiProperties.getProperty(REUSE_CACHED_SEARCH_RESULTS_MILLIS, "-1"); + String value = HapiProperties.getProperty(REUSE_CACHED_SEARCH_RESULTS_MILLIS, "60000"); return Long.valueOf(value); } + public static Long getExpireSearchResultsAfterMins() { + String value = HapiProperties.getProperty(EXPIRE_SEARCH_RESULTS_AFTER_MINS, "60"); + return Long.valueOf(value); + } + public static Boolean getCorsAllowedCredentials() { return HapiProperties.getBooleanProperty(CORS_ALLOW_CREDENTIALS, false); } diff --git a/src/main/resources/hapi.properties b/src/main/resources/hapi.properties index 4702ca3..7ec4c8c 100644 --- a/src/main/resources/hapi.properties +++ b/src/main/resources/hapi.properties @@ -19,7 +19,8 @@ enforce_referential_integrity_on_write=false enforce_referential_integrity_on_delete=false default_encoding=JSON etag_support=ENABLED -reuse_cached_search_results_millis=-1 +reuse_cached_search_results_millis=60000 +retain_cached_searches_mins=60 default_page_size=20 max_page_size=200 allow_override_default_search_params=true