Uploaded image for project: 'Geode'
  1. Geode
  2. GEODE-9338

Remove strong guarantees for redis PUBLISH command response

    XMLWordPrintableJSON

Details

    Description

      Redis' PUBLISH command responds with the number of clients that have received the published message. Our current implementation attempts to respond with as accurate a number as possible. To that end, each publish (see PubSubImpl.publishMessageToSubscribers and AbstractSubscription.publishMessage are effectively synchronous operations. The current flow is:

      • PUBLISH some_message
      • Issue a fn call to each server and attempt to publish to each subscribed client
      • Count how many successful publish messages were written and return those
      • Respond to the redis client with the aggregated successful publishings

      In redis clustering mode, the response is only the number of local publishings. We can go even further and not attempt to first publish before subscribing, but simply respond with the current number of subscribers, regardless whether they are connected or not.

      We should be able to perform all pubsub work on the regular netty thread and completely remove the subscriber EventLoopGroup.

      Attachments

        Issue Links

          Activity

            People

              balesh2 Hale Bales
              jens.deppe Jens Deppe
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: