Skip to content

Commit f003f3c

Browse files
authored
Merge pull request #326 from hmcts/increase_aat_cache_size
Attempt to fix AAT performance issues
2 parents 7b7414a + 4f8cd32 commit f003f3c

File tree

5 files changed

+46
-4
lines changed

5 files changed

+46
-4
lines changed

infrastructure/main.tf

+4
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,10 @@ module "ccd-data-store-api" {
126126

127127
CCD_DEFAULTPRINTURL = "${local.default_print_url}"
128128

129+
DEFINITION_CACHE_TTL_SEC = "${var.definition_cache_ttl_sec}"
130+
DEFINITION_CACHE_MAX_SIZE = "${var.definition_cache_max_size}"
131+
DEFINITION_CACHE_EVICTION_POLICY = "${var.definition_cache_eviction_policy}"
132+
129133
ELASTIC_SEARCH_ENABLED = "${var.elastic_search_enabled}"
130134
ELASTIC_SEARCH_HOSTS = "${local.elastic_search_hosts}"
131135
ELASTIC_SEARCH_DATA_NODES_HOSTS = "${local.elastic_search_data_node_hosts}"

infrastructure/variables.tf

+15
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,21 @@ variable "jenkins_AAD_objectId" {
5858
description = "(Required) The Azure AD object ID of a user, service principal or security group in the Azure Active Directory tenant for the vault. The object ID must be unique for the list of access policies."
5959
}
6060

61+
variable "definition_cache_ttl_sec" {
62+
type = "string"
63+
default = "259200"
64+
}
65+
66+
variable "definition_cache_max_size" {
67+
type = "string"
68+
default = "5000"
69+
}
70+
71+
variable "definition_cache_eviction_policy" {
72+
type = "string"
73+
default = "NONE"
74+
}
75+
6176
////////////////////////////////
6277
// Database
6378
////////////////////////////////

src/main/java/uk/gov/hmcts/ccd/ApplicationParams.java

+15
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
import static java.util.stream.Collectors.toList;
1111

12+
import com.hazelcast.config.EvictionPolicy;
1213
import org.springframework.beans.factory.annotation.Value;
1314
import uk.gov.hmcts.ccd.endpoint.exceptions.ServiceException;
1415

@@ -66,6 +67,12 @@ public class ApplicationParams {
6667
@Value("${definition.cache.ttl.secs}")
6768
private Integer definitionCacheTTLSecs;
6869

70+
@Value("${definition.cache.max.size}")
71+
private Integer definitionCacheMaxSize;
72+
73+
@Value("${definition.cache.eviction.policy}")
74+
private EvictionPolicy definitionCacheEvictionPolicy;
75+
6976
@Value("#{'${search.elastic.hosts}'.split(',')}")
7077
private List<String> elasticSearchHosts;
7178

@@ -217,6 +224,14 @@ public int getDefinitionCacheTTLSecs() {
217224
return definitionCacheTTLSecs;
218225
}
219226

227+
public int getDefinitionCacheMaxSize() {
228+
return definitionCacheMaxSize;
229+
}
230+
231+
public EvictionPolicy getDefinitionCacheEvictionPolicy() {
232+
return definitionCacheEvictionPolicy;
233+
}
234+
220235
public List<String> getSearchBlackList() {
221236
return searchBlackList;
222237
}

src/main/java/uk/gov/hmcts/ccd/CachingConfiguration.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,8 @@ private void configCaches(int definitionCacheTTL, Config config) {
3535

3636
private MapConfig newMapConfig(final String name, int definitionCacheTTL) {
3737
return new MapConfig().setName(name)
38-
.setMaxSizeConfig(new MaxSizeConfig(1000, MaxSizeConfig.MaxSizePolicy.FREE_HEAP_SIZE))
39-
.setEvictionPolicy(EvictionPolicy.LRU)
38+
.setMaxSizeConfig(new MaxSizeConfig(applicationParams.getDefinitionCacheMaxSize(), MaxSizeConfig.MaxSizePolicy.PER_NODE))
39+
.setEvictionPolicy(applicationParams.getDefinitionCacheEvictionPolicy())
4040
.setMaxIdleSeconds(definitionCacheTTL);
4141
}
4242

src/main/resources/application.properties

+10-2
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,16 @@ pagination.page.size=25
2020
liquibase.enabled=${ENABLE_DB_MIGRATE:true}
2121
liquibase.change-log=classpath:/db/changelog/db.changelog-master.xml
2222

23-
#ttl of cached definitions in seconds
24-
definition.cache.ttl.secs=${DEFINITION_CACHE_TTL_SEC:86400}
23+
24+
#definitions cache parameters
25+
#ttl of cache map entry
26+
definition.cache.ttl.secs=${DEFINITION_CACHE_TTL_SEC:259200}
27+
28+
#max size of cache map in terms of number of entries
29+
definition.cache.max.size=${DEFINITION_CACHE_MAX_SIZE:5000}
30+
31+
#eviction policy. If set to NONE the cache can grow arbitrarily large and definition.cache.max.size is ignored
32+
definition.cache.eviction.policy=${DEFINITION_CACHE_EVICTION_POLICY:NONE}
2533

2634
# Jackson ObjectMapper configuration
2735
spring.jackson.serialization.WRITE_DATES_AS_TIMESTAMPS=false

0 commit comments

Comments
 (0)