diff --git a/src/main/java/io/lettuce/core/cluster/models/partitions/ClusterPartitionParser.java b/src/main/java/io/lettuce/core/cluster/models/partitions/ClusterPartitionParser.java index ccb7e5cfc8..0c85880290 100644 --- a/src/main/java/io/lettuce/core/cluster/models/partitions/ClusterPartitionParser.java +++ b/src/main/java/io/lettuce/core/cluster/models/partitions/ClusterPartitionParser.java @@ -297,14 +297,14 @@ private static BitSet readSlots(List slotStrings) { return slots; } - private static BitSet readSlotRanges(List slotRanges) { + private static BitSet readSlotRanges(List slotRanges) { BitSet slots = new BitSet(SlotHash.SLOT_COUNT); for (int i = 0; i < slotRanges.size(); i += 2) { - Number from = slotRanges.get(i); - Number to = slotRanges.get(i + 1); + Number from = getAsNumber(slotRanges.get(i)); + Number to = getAsNumber(slotRanges.get(i + 1)); addSlots(slots, from.intValue(), to.intValue()); } @@ -312,6 +312,15 @@ private static BitSet readSlotRanges(List slotRanges) { return slots; } + private static Number getAsNumber(Object stringOrNumber) { + + if (stringOrNumber instanceof Number) { + return (Number) stringOrNumber; + } + + return Integer.parseInt(stringOrNumber.toString()); + } + private static void addSlots(BitSet slots, int from, int to) { for (int slot = from; slot <= to; slot++) { slots.set(slot);