Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions pom.xml
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">

<modelVersion>4.0.0</modelVersion>

<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId>
<version>2.6.0-SNAPSHOT</version>
<version>2.6.0-2103-SNAPSHOT</version>

<name>Spring Data Redis</name>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -319,7 +319,7 @@ protected JedisConnection postProcessConnection(JedisConnection connection) {
*/
public void afterPropertiesSet() {

clientConfig = createClientConfig(getRedisUsername(), getRedisPassword());
clientConfig = createClientConfig(getDatabase(), getRedisUsername(), getRedisPassword());

if (shardInfo == null && clientConfiguration instanceof MutableJedisClientConfiguration) {

Expand Down Expand Up @@ -360,15 +360,19 @@ public void afterPropertiesSet() {
this.initialized = true;
}

private JedisClientConfig createClientConfig(@Nullable String username, RedisPassword password) {
private JedisClientConfig createSentinelClientConfig(SentinelConfiguration sentinelConfiguration) {
return createClientConfig(0, null, sentinelConfiguration.getSentinelPassword());
}

private JedisClientConfig createClientConfig(int database, @Nullable String username, RedisPassword password) {

DefaultJedisClientConfig.Builder builder = DefaultJedisClientConfig.builder();

clientConfiguration.getClientName().ifPresent(builder::clientName);
builder.connectionTimeoutMillis(getConnectTimeout());
builder.socketTimeoutMillis(getReadTimeout());

builder.database(getDatabase());
builder.database(database);

if (!ObjectUtils.isEmpty(username)) {
builder.user(username);
Expand Down Expand Up @@ -405,9 +409,8 @@ private Pool<Jedis> createPool() {
protected Pool<Jedis> createRedisSentinelPool(RedisSentinelConfiguration config) {

GenericObjectPoolConfig<Jedis> poolConfig = getPoolConfig() != null ? getPoolConfig() : new JedisPoolConfig();
String sentinelUser = null;

JedisClientConfig sentinelConfig = createClientConfig(sentinelUser, config.getSentinelPassword());
JedisClientConfig sentinelConfig = createSentinelClientConfig(config);
return new JedisSentinelPool(config.getMaster().getName(), convertToJedisSentinelSet(config.getSentinels()),
poolConfig, this.clientConfig, sentinelConfig);
}
Expand Down Expand Up @@ -513,7 +516,7 @@ public RedisConnection getConnection() {

SentinelConfiguration sentinelConfiguration = getSentinelConfiguration();
if (sentinelConfiguration != null) {
sentinelConfig = createClientConfig(null, sentinelConfiguration.getSentinelPassword());
sentinelConfig = createSentinelClientConfig(sentinelConfiguration);
}

JedisConnection connection = (getUsePool() ? new JedisConnection(jedis, pool, this.clientConfig, sentinelConfig)
Expand Down Expand Up @@ -904,7 +907,7 @@ private Jedis getActiveSentinel() {
Assert.isTrue(RedisConfiguration.isSentinelConfiguration(configuration), "SentinelConfig must not be null!");
SentinelConfiguration sentinelConfiguration = (SentinelConfiguration) configuration;

JedisClientConfig clientConfig = createClientConfig(null, sentinelConfiguration.getSentinelPassword());
JedisClientConfig clientConfig = createSentinelClientConfig(sentinelConfiguration);
for (RedisNode node : sentinelConfiguration.getSentinels()) {

Jedis jedis = null;
Expand All @@ -929,6 +932,7 @@ private Jedis getActiveSentinel() {
throw new InvalidDataAccessResourceUsageException("No Sentinel found");
}


private static Set<HostAndPort> convertToJedisSentinelSet(Collection<RedisNode> nodes) {

if (CollectionUtils.isEmpty(nodes)) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,14 @@

import static org.assertj.core.api.Assertions.*;

import java.io.IOException;

import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Test;

import org.springframework.data.redis.connection.RedisConnection;
import org.springframework.data.redis.connection.RedisSentinelConfiguration;
import org.springframework.data.redis.connection.RedisSentinelConnection;
import org.springframework.data.redis.test.condition.EnabledOnRedisSentinelAvailable;
import org.springframework.lang.Nullable;

Expand All @@ -48,6 +51,40 @@ void tearDown() {
}
}

@Test // GH-2103
void shouldConnectDataNodeCorrectly() {

RedisSentinelConfiguration configuration = new RedisSentinelConfiguration().master("mymaster")
.sentinel("127.0.0.1", 26379).sentinel("127.0.0.1", 26380);
configuration.setDatabase(5);

factory = new JedisConnectionFactory(configuration);
factory.afterPropertiesSet();

RedisConnection connection = factory.getConnection();
connection.flushAll();
connection.set("key5".getBytes(), "value5".getBytes());

connection.select(0);
assertThat(connection.exists("key5".getBytes())).isFalse();
connection.close();
}

@Test // GH-2103
void shouldConnectSentinelNodeCorrectly() throws IOException {

RedisSentinelConfiguration configuration = new RedisSentinelConfiguration().master("mymaster")
.sentinel("127.0.0.1", 26379).sentinel("127.0.0.1", 26380);
configuration.setDatabase(5);

factory = new JedisConnectionFactory(configuration);
factory.afterPropertiesSet();

RedisSentinelConnection sentinelConnection = factory.getSentinelConnection();
assertThat(sentinelConnection.masters()).isNotNull();
sentinelConnection.close();
}

@Test // DATAREDIS-574, DATAREDIS-765
void shouldInitializeWithSentinelConfiguration() {

Expand Down