[
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)