[ https://issues.apache.org/jira/browse/GEODE-9429?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Owen Nichols closed GEODE-9429. ------------------------------- > Radish HSCAN implementation cannot handle values for COUNT greater than > Integer.MAX_VALUE / 2 > --------------------------------------------------------------------------------------------- > > Key: GEODE-9429 > URL: https://issues.apache.org/jira/browse/GEODE-9429 > Project: Geode > Issue Type: Bug > Components: redis > Affects Versions: 1.15.0 > Reporter: Donal Evans > Assignee: Donal Evans > Priority: Major > Labels: pull-request-available, unreleased > Fix For: 1.15.0 > > > The below code is the current implementation of HSCAN in {{RedisHash}}. When > the value of {{count}} passed to this method is greater than > {{Integer.MAX_VALUE / 2}} the condition of the while loop suffers from > integer overflow and the loop does not execute correctly. > {code:java} > public ImmutablePair<Integer, List<byte[]>> hscan(Pattern matchPattern, int > count, int cursor) { > ArrayList<byte[]> resultList = new ArrayList<>(count + 2); > do { > cursor = hash.scan(cursor, 1, > (list, key, value) -> addIfMatching(matchPattern, list, key, > value), resultList); > } while (cursor != 0 && resultList.size() < (count * 2)); > return new ImmutablePair<>(cursor, resultList); > {code} > This could be fixed by changing the type of {{resultList}} to > {{List<ImmutablePair<byte[] byte[]>>}} and modifying the {{addIfMatching()}} > method to populate the list with {{ImmutablePair}}s of keys and values rather > than a single continuous list of interleaved keys and values. -- This message was sent by Atlassian Jira (v8.20.7#820007)