From 9938d7f26d961f841f52c307369a760d62ea3d90 Mon Sep 17 00:00:00 2001 From: Alexander Tumin Date: Fri, 4 Oct 2024 21:27:42 +0300 Subject: [PATCH] Redisearch FT.INFO result decoder throws on infinity values Signed-off-by: Alexander Tumin --- .../protocol/decoder/IndexInfoDecoder.java | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/redisson/src/main/java/org/redisson/client/protocol/decoder/IndexInfoDecoder.java b/redisson/src/main/java/org/redisson/client/protocol/decoder/IndexInfoDecoder.java index 267a68093..228733393 100644 --- a/redisson/src/main/java/org/redisson/client/protocol/decoder/IndexInfoDecoder.java +++ b/redisson/src/main/java/org/redisson/client/protocol/decoder/IndexInfoDecoder.java @@ -77,21 +77,32 @@ public class IndexInfoDecoder implements MultiDecoder { private Long toLong(Map result, String prop) { Object val = result.getOrDefault(prop, "nan"); - if (val.toString().contains("nan")) { + String valstring = val.toString(); + if (valstring.contains("nan") || valstring.contains("inf")) { return 0L; } + if (val instanceof Double) { Double d = (Double) val; return d.longValue(); } - return Long.valueOf(val.toString()); + + return Long.valueOf(valstring); } private Double toDouble(Map result, String prop) { Object val = result.getOrDefault(prop, "nan"); - if (val.toString().contains("nan")) { + String valstring = val.toString(); + if (valstring.contains("nan")) { return 0D; + } else if (valstring.contains("inf")) { + if (valstring.contains("-")) { + return Double.NEGATIVE_INFINITY; + } else { + return Double.POSITIVE_INFINITY; + } } - return Double.valueOf(val.toString()); + + return Double.valueOf(valstring); } }