jedis cluster get connection error
crazycarry opened this issue · comments
crazycarry commented
Hi,when i do tracing with redis,there is a problem.
my config is :
@bean
public RedisConnectionFactory connectionFactory() {
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
jedisPoolConfig.setMaxTotal(100);
jedisPoolConfig.setMaxIdle(50);
jedisPoolConfig.setMinIdle(20);
jedisPoolConfig.setMaxWaitMillis(200);
jedisPoolConfig.setTestOnBorrow(true);
jedisPoolConfig.setTestOnReturn(true);
jedisPoolConfig.setTestWhileIdle(true);
JedisClientConfiguration clientConfig = JedisClientConfiguration.builder()
.connectTimeout(Duration.ofMillis(20))
.readTimeout(Duration.ofMillis(20)).usePooling().poolConfig(jedisPoolConfig)
.build();
if(redisContants.REDIS_TYPE.equals("single")) {
RedisStandaloneConfiguration redisConfiguration=new RedisStandaloneConfiguration(redisContants.REDIS_HOST.split(":")[0], redisContants.REDIS_PORT);
//return new JedisConnectionFactory(new RedisStandaloneConfiguration(redisContants.REDIS_HOST.split(":")[0], redisContants.REDIS_PORT),clientConfig);
return new TracingRedisConnectionFactory(new JedisConnectionFactory(redisConfiguration,clientConfig), new TracingConfiguration.Builder(tracer).build());
}else {
RedisClusterConfiguration redisClusterConfiguration= new RedisClusterConfiguration(clusterProperties.getNodes());
return new TracingRedisConnectionFactory(new JedisConnectionFactory(redisClusterConfiguration, clientConfig), new TracingConfiguration.Builder(tracer).build());
//return new JedisConnectionFactory(new RedisClusterConfiguration(clusterProperties.getNodes()), clientConfig);
}
}
witnout tracing, everything works! when i do tracing in test env,this is standalone mode,this works too,when do it in cluster env,cannt get a jedis cluster connection.when i debug it,find spring redistemplate get a connection from a method called getconnection,just like jedis ,but there TracingRedisFactory class only do the right thing in standalone mode,do it should implement a method like jedisFactory .
public boolean isRedisClusterAware() {
return RedisConfiguration.isClusterConfiguration(configuration);
}