Giter Club home page Giter Club logo

Comments (4)

bjosv avatar bjosv commented on June 23, 2024

Hi, my previous assessment that this would work seem to be wrong..
The problem with pub/sub is that hiredis keeps its callback-info to be able to reuse this for all messages, while redis-cluster currently dont. hiredis-cluster frees its cluster_async_data after each called callback.

One possible fast-fix until this is handled correctly in hiredis-cluster could be to use the hiredis api directly in your connectCallback(). Here you have the redisAsyncContext for the specific node already and instead of iterating all nodes again you could use this redisAsyncContext as in the hiredis tests.
The callback would have a different signature but maybe thats ok?

We also need to findout how to handle this correctly in hiredis-cluster.

from hiredis-cluster.

SS-TruMinds avatar SS-TruMinds commented on June 23, 2024

Thank you. We will try out your suggestion.

With regards to the issue with the PSUBSCRIBE response we mentioned, the null there was because we were reading reply->element[j]->str in eventCb().
Changing that to reply->element[j]->integer has fixed that problem.

from hiredis-cluster.

bjosv avatar bjosv commented on June 23, 2024

Some notes of options how to solve this a near future:

  • Option 1: Add information in hiredis redisCallback to inform user if the redisCallback-object with the privdata reference will be deleted or kept by hiredis (kept when pubsub).
    This will be used to know if hiredis-clusters cluster_async_data object should be deleted or not.

  • Option 2: Like hiredis, check sent commands to find "*SUBSCRIBE" and set a flag in the created cluster_async_data that this callback is used for pubsub. With this knowledge we know when cluster_async_data should be deleted or not. When flagged to be a subscribe callback we should not delete the cluster_async_data since it's a published message, and the callback is reused.

Drawbacks I can think of

  • In both options above we dont know when its ok to delete cluster_async_data after an UNSUBSCRIBE has been sent. hiredis dont call the user callback when response to SUBSCRIBE/UNSUNSCRIBE comes..

from hiredis-cluster.

zuiderkwast avatar zuiderkwast commented on June 23, 2024

See #27

from hiredis-cluster.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.