spring-data-redis
spring-data-redis copied to clipboard
`StringRedisConnection` returns `null` using read operations during transactions
A minimize cases as belong, which expect return some value but get null。
@GetMapping("/get")
@Transactional
public String get(@RequestParam String key) {
String value = stringRedisTemplate.opsForValue().get(key);
System.out.println(value);
return value;
}
DefaultStringConnection hold LettuceRedisConnection with multi = true, result isFutureConversion() always return true
@Nullable
private <T> T convertAndReturn(@Nullable Object value, Converter converter) {
if (isFutureConversion()) {
addResultConverter(converter);
return null;
}
if (!(converter instanceof ListConverter) && value instanceof List) {
return (T) new ListConverter<>(converter).convert((List) value);
}
return value == null ? null
: ObjectUtils.nullSafeEquals(converter, Converters.identityConverter()) ? (T) value
: (T) converter.convert(value);
}