[ https://issues.apache.org/jira/browse/GEODE-9446?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Owen Nichols closed GEODE-9446. ------------------------------- > Remove unnecessary uses of byte[] in RedisSortedSet > --------------------------------------------------- > > Key: GEODE-9446 > URL: https://issues.apache.org/jira/browse/GEODE-9446 > Project: Geode > Issue Type: Improvement > Components: redis > Affects Versions: 1.15.0 > Reporter: Donal Evans > Assignee: Hale Bales > Priority: Major > Labels: pull-request-available > Fix For: 1.15.0 > > > The current implementation of {{RedisSortedSet}} uses an > {{AbstractOrderedStatisticsEntry}} class containing both {{double}} score and > {{byte[]}} scoreBytes fields. The {{double}} field is required to allow the > sorting behaviour required of the data structure, but the {{byte[]}} field is > not necessary except when returning results to the client. > The class should be refactored to eliminate the {{byte[]}} scoreBytes field > from {{AbstractOrderedStatisticsEntry}} and reduce the memory overhead of > operations. > As part of this refactoring, the below call to {{members.put()}} should be > removed fromĀ {{memberAdd()}} as it will no longer be necessary. > {code:java} > protected synchronized byte[] memberAdd(byte[] memberToAdd, byte[] > scoreToAdd) { > ... > } else { > scoreSet.remove(existingEntry); > byte[] oldScore = existingEntry.scoreBytes; > existingEntry.updateScore(stripTrailingZeroFromDouble(scoreToAdd)); > members.put(memberToAdd, existingEntry); <<< remove this > scoreSet.add(existingEntry); > return oldScore; > } > {code} > Also, uses of theĀ {{stripTrailingZeroFromDouble()}} method should be moved to > just prior to the response being returned to the client, to ensure that the > format of the returned String representations of double values match native > Redis. -- This message was sent by Atlassian Jira (v8.20.7#820007)