[ 
https://issues.apache.org/jira/browse/GEODE-9256?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Dan Smith resolved GEODE-9256.
------------------------------
    Fix Version/s: 1.15.0
       Resolution: Fixed

> Remove hscan related fields from redis hash
> -------------------------------------------
>
>                 Key: GEODE-9256
>                 URL: https://issues.apache.org/jira/browse/GEODE-9256
>             Project: Geode
>          Issue Type: Improvement
>          Components: redis
>            Reporter: Dan Smith
>            Assignee: Dan Smith
>            Priority: Major
>              Labels: pull-request-available
>             Fix For: 1.15.0
>
>
> To implement hscan it looks like we added a number of fields to every redis 
> hash.
> {code}
>   private ConcurrentHashMap<UUID, List<ByteArrayWrapper>> hScanSnapShots;
>   private ConcurrentHashMap<UUID, Long> hScanSnapShotCreationTimes;
>   private ScheduledExecutorService HSCANSnapshotExpirationExecutor = null;
> {code}
> This greatly increases the per hash overhead of radish. We also create 
> HSCANSnapshotExpirationExecutor for every hash that has an active hscan, 
> potentially using a lot of threads.
> These fields should be removed from the hash itself so we are not increasing 
> its overhead. If we need to maintain state related to hscan it should 
> probably be in some client specific data structure like the 
> ExecutionHandlerContext.
> Redis itself looks like it doesn't maintain any server side state. We should 
> use the same stateless cursor algorithm as redis and avoid keeping any state 
> on the server. Here's an article that goes in depth on the redis algorithm
> https://www.freecodecamp.org/news/redis-hash-table-scan-explained-537cc8bb9f52/



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to