dragonfly
dragonfly copied to clipboard
refactor client tracking, fix atomicity, squashing and multi/exec
- 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
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
lets reject CLIENT TRACKING OPTIN
in multi
in fact, should we even allow CLIENT
commands inside MULTI?
in fact, should we even allow
CLIENT
commands inside MULTI?
Only CLIENT CACHING YES
as it has specific semantics