dragonfly icon indicating copy to clipboard operation
dragonfly copied to clipboard

refactor client tracking, fix atomicity, squashing and multi/exec

Open kostasrim opened this issue 9 months ago • 4 comments

  • add partial support for CLIENT CACHING TRUE (only to be used with TRACKING OPTIN)
  • add OPTIN to CLIENT TRACKING command
  • refactor client tracking to respect transactional atomicity
  • fixed multi/exec and disabled squashing with client tracking
  • add tests

Resolves #2969, #2971, #2997, #2998

P.s. All tests in rueidis TestSingleClientIntegration pass except pub/sub because we don't yet support it see #3001

kostasrim avatar Apr 29 '24 14:04 kostasrim

there is a deeper problem with CLIENT TRACKING OPTIN

suppose you have

MULTI
CLIENT TRACKING OPTIN
GET A
GET B 
GET C
EXEC

Now, if you squash the last 3, you loose the order - becuase GET C can run first of those three

dranikpg avatar May 02 '24 12:05 dranikpg

lets reject CLIENT TRACKING OPTIN in multi

romange avatar May 02 '24 12:05 romange

in fact, should we even allow CLIENT commands inside MULTI?

romange avatar May 02 '24 12:05 romange

in fact, should we even allow CLIENT commands inside MULTI?

Only CLIENT CACHING YES as it has specific semantics

kostasrim avatar May 02 '24 13:05 kostasrim