Skip to content

Commit 45af568

Browse files
committed
fixup! added valkey dependency as a distributed cach
Use Duration, fix database logging, update documentation
1 parent 084fb33 commit 45af568

File tree

5 files changed

+36
-24
lines changed

5 files changed

+36
-24
lines changed

docs/installation.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -167,8 +167,7 @@ For multi-instance deployments, Trino Gateway supports distributed caching
167167
using Valkey (or Redis) to share query metadata across gateway instances.
168168
This improves query routing and enables horizontal scaling.
169169

170-
For single gateway deployments, distributed caching is not needed - the
171-
local cache is sufficient.
170+
For single gateway deployment or low workload environment, distributed caching is not needed. The local cache is sufficient.
172171

173172
```yaml
174173
valkeyConfiguration:

gateway-ha/src/main/java/io/trino/gateway/ha/cache/ValkeyDistributedCache.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ public class ValkeyDistributedCache
3535
public ValkeyDistributedCache(ValkeyConfiguration config)
3636
{
3737
this.enabled = config.isEnabled();
38-
this.cacheTtlSeconds = config.getCacheTtlSeconds();
38+
this.cacheTtlSeconds = (long) config.getCacheTtl().getValue(java.util.concurrent.TimeUnit.SECONDS);
3939

4040
if (enabled) {
4141
JedisPoolConfig poolConfig = new JedisPoolConfig();
@@ -51,16 +51,20 @@ public ValkeyDistributedCache(ValkeyConfiguration config)
5151
poolConfig.setBlockWhenExhausted(true);
5252

5353
String password = config.getPassword();
54+
int timeoutMs = (int) config.getTimeout().toMillis();
55+
int database;
5456
if (password != null && !password.isEmpty()) {
57+
database = config.getDatabase();
5558
this.jedisPool = new JedisPool(poolConfig, config.getHost(), config.getPort(),
56-
config.getTimeoutMs(), password, config.getDatabase());
59+
timeoutMs, password, database);
5760
}
5861
else {
59-
this.jedisPool = new JedisPool(poolConfig, config.getHost(), config.getPort(), config.getTimeoutMs());
62+
database = 0; // JedisPool uses DEFAULT_DATABASE (0) when no password is provided
63+
this.jedisPool = new JedisPool(poolConfig, config.getHost(), config.getPort(), timeoutMs);
6064
}
6165

6266
log.info("Valkey distributed cache initialized: %s:%d (database: %d)",
63-
config.getHost(), config.getPort(), config.getDatabase());
67+
config.getHost(), config.getPort(), database);
6468
}
6569
else {
6670
this.jedisPool = null;

gateway-ha/src/main/java/io/trino/gateway/ha/config/ValkeyConfiguration.java

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,10 @@
1313
*/
1414
package io.trino.gateway.ha.config;
1515

16+
import io.airlift.units.Duration;
17+
18+
import java.util.concurrent.TimeUnit;
19+
1620
public class ValkeyConfiguration
1721
{
1822
private boolean enabled;
@@ -23,8 +27,8 @@ public class ValkeyConfiguration
2327
private int maxTotal = 20;
2428
private int maxIdle = 10;
2529
private int minIdle = 5;
26-
private int timeoutMs = 2000;
27-
private long cacheTtlSeconds = 1800;
30+
private Duration timeout = new Duration(2, TimeUnit.SECONDS);
31+
private Duration cacheTtl = new Duration(30, TimeUnit.MINUTES);
2832

2933
public boolean isEnabled()
3034
{
@@ -106,23 +110,23 @@ public void setMinIdle(int minIdle)
106110
this.minIdle = minIdle;
107111
}
108112

109-
public int getTimeoutMs()
113+
public Duration getTimeout()
110114
{
111-
return timeoutMs;
115+
return timeout;
112116
}
113117

114-
public void setTimeoutMs(int timeoutMs)
118+
public void setTimeout(Duration timeout)
115119
{
116-
this.timeoutMs = timeoutMs;
120+
this.timeout = timeout;
117121
}
118122

119-
public long getCacheTtlSeconds()
123+
public Duration getCacheTtl()
120124
{
121-
return cacheTtlSeconds;
125+
return cacheTtl;
122126
}
123127

124-
public void setCacheTtlSeconds(long cacheTtlSeconds)
128+
public void setCacheTtl(Duration cacheTtl)
125129
{
126-
this.cacheTtlSeconds = cacheTtlSeconds;
130+
this.cacheTtl = cacheTtl;
127131
}
128132
}

gateway-ha/src/test/java/io/trino/gateway/ha/config/TestValkeyConfiguration.java

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,11 @@
1313
*/
1414
package io.trino.gateway.ha.config;
1515

16+
import io.airlift.units.Duration;
1617
import org.junit.jupiter.api.Test;
1718

19+
import java.util.concurrent.TimeUnit;
20+
1821
import static org.assertj.core.api.Assertions.assertThat;
1922

2023
final class TestValkeyConfiguration
@@ -32,8 +35,8 @@ void testDefaultValues()
3235
assertThat(config.getMaxTotal()).isEqualTo(20);
3336
assertThat(config.getMaxIdle()).isEqualTo(10);
3437
assertThat(config.getMinIdle()).isEqualTo(5);
35-
assertThat(config.getTimeoutMs()).isEqualTo(2000);
36-
assertThat(config.getCacheTtlSeconds()).isEqualTo(1800);
38+
assertThat(config.getTimeout()).isEqualTo(new Duration(2, TimeUnit.SECONDS));
39+
assertThat(config.getCacheTtl()).isEqualTo(new Duration(30, TimeUnit.MINUTES));
3740
}
3841

3942
@Test
@@ -49,8 +52,8 @@ void testSettersAndGetters()
4952
config.setMaxTotal(100);
5053
config.setMaxIdle(50);
5154
config.setMinIdle(25);
52-
config.setTimeoutMs(5000);
53-
config.setCacheTtlSeconds(3600);
55+
config.setTimeout(new Duration(5, TimeUnit.SECONDS));
56+
config.setCacheTtl(new Duration(1, TimeUnit.HOURS));
5457

5558
assertThat(config.isEnabled()).isTrue();
5659
assertThat(config.getHost()).isEqualTo("valkey.example.com");
@@ -60,7 +63,7 @@ void testSettersAndGetters()
6063
assertThat(config.getMaxTotal()).isEqualTo(100);
6164
assertThat(config.getMaxIdle()).isEqualTo(50);
6265
assertThat(config.getMinIdle()).isEqualTo(25);
63-
assertThat(config.getTimeoutMs()).isEqualTo(5000);
64-
assertThat(config.getCacheTtlSeconds()).isEqualTo(3600);
66+
assertThat(config.getTimeout()).isEqualTo(new Duration(5, TimeUnit.SECONDS));
67+
assertThat(config.getCacheTtl()).isEqualTo(new Duration(1, TimeUnit.HOURS));
6568
}
6669
}

gateway-ha/src/test/java/io/trino/gateway/ha/router/TestValkeyDistributedCacheIntegration.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
*/
1414
package io.trino.gateway.ha.router;
1515

16+
import io.airlift.units.Duration;
1617
import io.trino.gateway.ha.cache.QueryCacheManager;
1718
import io.trino.gateway.ha.cache.ValkeyDistributedCache;
1819
import io.trino.gateway.ha.config.DataStoreConfiguration;
@@ -30,6 +31,7 @@
3031
import org.testcontainers.containers.JdbcDatabaseContainer;
3132

3233
import java.util.Optional;
34+
import java.util.concurrent.TimeUnit;
3335

3436
import static io.trino.gateway.ha.TestingJdbcConnectionManager.createTestingJdbcConnectionManager;
3537
import static io.trino.gateway.ha.util.TestcontainersUtils.createPostgreSqlContainer;
@@ -75,8 +77,8 @@ void setUp()
7577
valkeyConfig.setMaxTotal(20);
7678
valkeyConfig.setMaxIdle(10);
7779
valkeyConfig.setMinIdle(5);
78-
valkeyConfig.setTimeoutMs(2000);
79-
valkeyConfig.setCacheTtlSeconds(1800);
80+
valkeyConfig.setTimeout(new Duration(2, TimeUnit.SECONDS));
81+
valkeyConfig.setCacheTtl(new Duration(30, TimeUnit.MINUTES));
8082

8183
distributedCache = new ValkeyDistributedCache(valkeyConfig);
8284
queryCacheManager = new QueryCacheManager(distributedCache);

0 commit comments

Comments
 (0)