[jira] [Updated] (GEODE-9429) Radish HSCAN implementation cannot handle values for COUNT greater than Integer.MAX_VALUE / 2
[ https://issues.apache.org/jira/browse/GEODE-9429?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Anthony Baker updated GEODE-9429: - Labels: pull-request-available unreleased (was: pull-request-available) > 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> hscan(Pattern matchPattern, int > count, int cursor) { > ArrayList 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>}} 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.1#820001)
[jira] [Updated] (GEODE-9429) Radish HSCAN implementation cannot handle values for COUNT greater than Integer.MAX_VALUE / 2
[ https://issues.apache.org/jira/browse/GEODE-9429?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] ASF GitHub Bot updated GEODE-9429: -- Labels: pull-request-available (was: ) > 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 > > 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> hscan(Pattern matchPattern, int > count, int cursor) { > ArrayList 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>}} 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.3.4#803005)