From 980994812f13c681605d1d411450c2b755adebb7 Mon Sep 17 00:00:00 2001 From: jpoth Date: Mon, 4 Mar 2019 16:36:29 +0100 Subject: [PATCH] Add cache timeout configuration property. Disabled by default --- .../ca/uhn/fhir/jpa/starter/FhirServerConfigCommon.java | 4 ++++ src/main/java/ca/uhn/fhir/jpa/starter/HapiProperties.java | 6 ++++++ src/main/resources/hapi.properties | 1 + 3 files changed, 11 insertions(+) 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 517ecc0..7e5879d 100644 --- a/src/main/java/ca/uhn/fhir/jpa/starter/FhirServerConfigCommon.java +++ b/src/main/java/ca/uhn/fhir/jpa/starter/FhirServerConfigCommon.java @@ -89,6 +89,10 @@ public class FhirServerConfigCommon { Integer maxFetchSize = HapiProperties.getMaximumFetchSize(); retVal.setFetchSizeDefaultMaximum(maxFetchSize); ourLog.info("Server configured to have a maximum fetch size of " + (maxFetchSize == Integer.MAX_VALUE? "'unlimited'": maxFetchSize)); + + Long reuseCachedSearchResultsMillis = HapiProperties.getReuseCachedSearchResultsMillis(); + retVal.setReuseCachedSearchResultsForMillis(reuseCachedSearchResultsMillis ); + ourLog.info("Server configured to cache search results for {} milliseconds", reuseCachedSearchResultsMillis); // Subscriptions are enabled by channel type if (HapiProperties.getSubscriptionRestHookEnabled()) { 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 ca7f255..d5ace1c 100644 --- a/src/main/java/ca/uhn/fhir/jpa/starter/HapiProperties.java +++ b/src/main/java/ca/uhn/fhir/jpa/starter/HapiProperties.java @@ -14,6 +14,7 @@ public class HapiProperties { static final String ALLOW_EXTERNAL_REFERENCES = "allow_external_references"; static final String ALLOW_MULTIPLE_DELETE = "allow_multiple_delete"; static final String ALLOW_PLACEHOLDER_REFERENCES = "allow_placeholder_references"; + static final String REUSE_CACHED_SEARCH_RESULTS_MILLIS = "reuse_cached_search_results_millis"; static final String DATASOURCE_DRIVER = "datasource.driver"; static final String DATASOURCE_MAX_POOL_SIZE = "datasource.max_pool_size"; static final String DATASOURCE_PASSWORD = "datasource.password"; @@ -312,4 +313,9 @@ public class HapiProperties { public static String getEmailPassword() { return HapiProperties.getProperty("email.password"); } + + public static Long getReuseCachedSearchResultsMillis() { + String value = HapiProperties.getProperty(REUSE_CACHED_SEARCH_RESULTS_MILLIS, "-1"); + return Long.valueOf(value); + } } diff --git a/src/main/resources/hapi.properties b/src/main/resources/hapi.properties index b30faad..09a52b0 100644 --- a/src/main/resources/hapi.properties +++ b/src/main/resources/hapi.properties @@ -20,6 +20,7 @@ server.base=/fhir default_encoding=JSON etag_support=ENABLED +reuse_cached_search_results_millis=-1 default_page_size=20 max_page_size=200 allow_override_default_search_params=true