Skip to content

executePipelined with RedisCallback uses wrong serializer (RedisTemplate.java) [DATAREDIS-500] #1076

Closed
@spring-projects-issues

Description

@spring-projects-issues

argszero opened DATAREDIS-500 and commented

RedisTemplate.executePipelined with RedisCallback uses wrong serializer when hashKeySerializer is different from hashValueSerializer.

@Test
public void testExecutePipelinedWidthDifferentHashKeySerializerAndHashValueSerializer() {
    assumeTrue(redisTemplate instanceof RedisTemplate);
    redisTemplate.setKeySerializer(new StringRedisSerializer());
    redisTemplate.setHashKeySerializer(new StringRedisSerializer());
    redisTemplate.setHashValueSerializer(new GenericToStringSerializer<Long>(Long.class));
    redisTemplate.opsForHash().put((K) "foo", "key", 1L);
    List<Object> results = redisTemplate.executePipelined(new RedisCallback() {
        public Object doInRedis(RedisConnection connection) throws DataAccessException {
            connection.hGetAll(((StringRedisSerializer) redisTemplate.getKeySerializer()).serialize("foo"));
            return null;
        }
    });
    assertEquals(((Map) results.get(0)).get("key"), 1L);
}

Affects: 1.7.1 (Hopper SR1), 1.8 M1 (Ingalls)

Referenced from: pull request #190

Backported to: 1.7.3 (Hopper SR3), 1.6.5 (Gosling SR5)

Metadata

Metadata

Assignees

Labels

in: coreIssues in core supporttype: bugA general bug

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions