Skip to content

Commit c488813

Browse files
rica-v3rica.rdo
andauthored
[Issues/11] TTL of DomainData EntityCaching is configurable (#12)
* Version Up to 1.2.0-RELEASE * Static import HibernateArcusProperties in ArcusClientConfig * Add HibernateArcusProperties.HIBERNATE_CACHE_ARCUS_DOMAIN_DATA_TTL * Remove ArcusClientConfig.domainDataTTL * Add ttl to DomainDataHibernateArcusStorageAccess * Modify value of HibernateArcusProperties.HIBERNATE_CACHE_ARCUS_DOMAIN_DATA_TTL * Version 1.2.1-SNAPSHOT Co-authored-by: rica.rdo <rica.rdo@kakaopaycorp.com>
1 parent ca6e85b commit c488813

File tree

6 files changed

+28
-13
lines changed

6 files changed

+28
-13
lines changed

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ plugins {
66

77
group='com.github.kims-developergroup'
88
archivesBaseName='hibernate-arcus'
9-
version='1.2.0-SNAPSHOT'
9+
version='1.2.1-SNAPSHOT'
1010

1111
repositories {
1212
mavenCentral()

src/main/java/com/devookim/hibernatearcus/config/ArcusClientConfig.java

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77

88
import java.util.Map;
99

10+
import static com.devookim.hibernatearcus.config.HibernateArcusProperties.*;
11+
1012
@Slf4j
1113
public class ArcusClientConfig {
1214
public final boolean fallbackEnabled;
@@ -18,20 +20,21 @@ public class ArcusClientConfig {
1820
private final String serviceCode;
1921

2022
public ArcusClientConfig(Map<String, String> properties) {
21-
this.host = properties.getOrDefault(HibernateArcusProperties.HIBERNATE_CACHE_ARCUS_HOST, "localhost:2181");
22-
this.serviceCode = properties.getOrDefault(HibernateArcusProperties.HIBERNATE_CACHE_ARCUS_SERVICE_CODE, "");
23-
this.poolSize = Integer.parseInt(properties.getOrDefault(HibernateArcusProperties.HIBERNATE_CACHE_ARCUS_POOL_SIZE, "1"));
24-
this.fallbackEnabled = Boolean.parseBoolean(properties.getOrDefault(HibernateArcusProperties.HIBERNATE_CACHE_ARCUS_FALLBACK_ENABLED, "true"));
25-
this.initFallbackMode = Boolean.parseBoolean(properties.getOrDefault(HibernateArcusProperties.HIBERNATE_CACHE_ARCUS_INIT_FALLBACK_MODE, "false"));
26-
this.healthCheckIntervalInSec = Integer.parseInt(properties.getOrDefault(HibernateArcusProperties.HIBERNATE_CACHE_ARCUS_HEALTH_CHECK_INTERVAL_IN_SEC, "10"));
23+
this.host = properties.getOrDefault(HIBERNATE_CACHE_ARCUS_HOST, "localhost:2181");
24+
this.serviceCode = properties.getOrDefault(HIBERNATE_CACHE_ARCUS_SERVICE_CODE, "");
25+
this.poolSize = Integer.parseInt(properties.getOrDefault(HIBERNATE_CACHE_ARCUS_POOL_SIZE, "1"));
26+
27+
this.fallbackEnabled = Boolean.parseBoolean(properties.getOrDefault(HIBERNATE_CACHE_ARCUS_FALLBACK_ENABLED, "true"));
28+
this.initFallbackMode = Boolean.parseBoolean(properties.getOrDefault(HIBERNATE_CACHE_ARCUS_INIT_FALLBACK_MODE, "false"));
29+
this.healthCheckIntervalInSec = Integer.parseInt(properties.getOrDefault(HIBERNATE_CACHE_ARCUS_HEALTH_CHECK_INTERVAL_IN_SEC, "10"));
2730
this.properties = properties;
2831
}
2932

3033
public ArcusClientPool createArcusClientPool() {
3134
log.info("Creating arcus client pool");
3235
ConnectionFactoryBuilder cfb = new ConnectionFactoryBuilder();
33-
cfb.setMaxReconnectDelay(Long.parseLong(properties.getOrDefault(HibernateArcusProperties.HIBERNATE_CACHE_ARCUS_RECONNECT_INTERVAL_IN_SEC, "10000")));
34-
cfb.setOpTimeout(Long.parseLong(properties.getOrDefault(HibernateArcusProperties.HIBERNATE_CACHE_ARCUS_OP_TIMEOUT, "10000")));
36+
cfb.setMaxReconnectDelay(Long.parseLong(properties.getOrDefault(HIBERNATE_CACHE_ARCUS_RECONNECT_INTERVAL_IN_SEC, "10000")));
37+
cfb.setOpTimeout(Long.parseLong(properties.getOrDefault(HIBERNATE_CACHE_ARCUS_OP_TIMEOUT, "10000")));
3538
return ArcusClient.createArcusClientPool(
3639
host,
3740
serviceCode,

src/main/java/com/devookim/hibernatearcus/config/HibernateArcusProperties.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,5 @@ public class HibernateArcusProperties {
1010
public static final String HIBERNATE_CACHE_ARCUS_RECONNECT_INTERVAL_IN_SEC = "hibernate.cache.arcus.reconnectIntervalInSec";
1111
public static final String HIBERNATE_CACHE_ARCUS_OP_TIMEOUT = "hibernate.cache.arcus.opTimeout";
1212
public static final String HIBERNATE_CACHE_ARCUS_EVICTION_REGION_GROUP_ON_CACHE_UPDATE = "hibernate.cache.arcus.domainData.evictionRegionGroupOnCacheUpdate";
13+
public static final String HIBERNATE_CACHE_ARCUS_DOMAIN_DATA_TTL = "hibernate.cache.arcus.domainData.ttl.sec";
1314
}

src/main/java/com/devookim/hibernatearcus/config/HibernateArcusStorageConfig.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,17 @@
44
import java.util.HashSet;
55
import java.util.Map;
66

7+
import static com.devookim.hibernatearcus.config.HibernateArcusProperties.HIBERNATE_CACHE_ARCUS_DOMAIN_DATA_TTL;
8+
import static com.devookim.hibernatearcus.config.HibernateArcusProperties.HIBERNATE_CACHE_ARCUS_EVICTION_REGION_GROUP_ON_CACHE_UPDATE;
9+
710
public class HibernateArcusStorageConfig {
811

912
public final HashSet<String> evictionRegionGroupOnCacheUpdate;
13+
public final int domainDataTTL;
1014

1115
public HibernateArcusStorageConfig(Map<String, String> properties) {
1216
evictionRegionGroupOnCacheUpdate = new HashSet<>();
13-
Collections.addAll(evictionRegionGroupOnCacheUpdate, properties.getOrDefault(HibernateArcusProperties.HIBERNATE_CACHE_ARCUS_EVICTION_REGION_GROUP_ON_CACHE_UPDATE, "").split(","));
17+
domainDataTTL = Integer.parseInt(properties.getOrDefault(HIBERNATE_CACHE_ARCUS_DOMAIN_DATA_TTL, "0"));
18+
Collections.addAll(evictionRegionGroupOnCacheUpdate, properties.getOrDefault(HIBERNATE_CACHE_ARCUS_EVICTION_REGION_GROUP_ON_CACHE_UPDATE, "").split(","));
1419
}
1520
}

src/main/java/com/devookim/hibernatearcus/storage/DomainDataHibernateArcusStorageAccess.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ public DomainDataHibernateArcusStorageAccess(HibernateArcusClientFactory arcusCl
2424
String regionName,
2525
HibernateArcusStorageConfig storageAccessConfig,
2626
DomainDataRegionConfig regionConfig) {
27-
super(arcusClientFactory, regionName);
27+
super(arcusClientFactory, regionName, storageAccessConfig.domainDataTTL);
2828
this.storageAccessConfig = storageAccessConfig;
2929
this.entityClassName = RegionConfigUtil.getEntityClassName(regionConfig);
3030
this.accessType = RegionConfigUtil.getAccessTypeOfEntityCaching(regionConfig);

src/main/java/com/devookim/hibernatearcus/storage/HibernateArcusStorageAccess.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,21 @@
88

99
public class HibernateArcusStorageAccess implements DomainDataStorageAccess {
1010
private static final Logger log = org.slf4j.LoggerFactory.getLogger(HibernateArcusStorageAccess.class);
11-
private HibernateArcusClientFactory arcusClientFactory;
11+
private final HibernateArcusClientFactory arcusClientFactory;
1212
protected final String CACHE_REGION;
13+
private int ttl = 0;
1314

1415
public HibernateArcusStorageAccess(HibernateArcusClientFactory arcusClientFactory, String prefix) {
1516
super();
1617
this.arcusClientFactory = arcusClientFactory;
1718
this.CACHE_REGION = prefix;
1819
}
1920

21+
public HibernateArcusStorageAccess(HibernateArcusClientFactory arcusClientFactory, String prefix, int ttl) {
22+
this(arcusClientFactory, prefix);
23+
this.ttl = ttl;
24+
}
25+
2026
protected String generateKey(Object key) {
2127
return (CACHE_REGION + ":" + key).replace("$", "");
2228
}
@@ -55,7 +61,7 @@ public void putIntoCache(Object key, Object value, SharedSessionContractImplemen
5561

5662
String generatedKey = generateKey(key);
5763
try {
58-
arcusClientFactory.getClientPool().set(generatedKey, 0, value).get();
64+
arcusClientFactory.getClientPool().set(generatedKey, ttl, value).get();
5965
log.trace("put key:{} value: {}", generatedKey, value);
6066
} catch (Exception e) {
6167
log.error("fallbackEnabled: {} key: {} errorMsg: {}", arcusClientFactory.fallbackEnabled, generatedKey, e.getMessage());

0 commit comments

Comments
 (0)