superset icon indicating copy to clipboard operation
superset copied to clipboard

RedisCache lost support for function as a key_prefix

Open dbascoules opened this issue 1 year ago • 0 comments

Bug description

The hability to specify a function as a key_prefix for RedisCache doesn't work anymore in Superset. Expected type 'str', got '() -> str' instead error is thrown.

This was fundamental for my usecase where I use the subdomain of the Superset URL as an ingredient of my PostgreSQL RLS. Each subdomain correspond to a subset of the data that users may query through Superset (only one instance).

Introducing the notion of subdomain in the Redis cache key prefix avoids a cache mismatch between subdomains and data subsets. It's implemented with a function parametrized in RedisCache key_prefix.

I submitted a PR in the concerned lib project : pallets-eco/cachelib#332.

How to reproduce the bug

  1. Create a simple function returning a string.
  2. Parameter this function in the RedisCache key_prefix.
  3. Display in Superset anything related to your data that will be cached to throw the error.

Screenshots/recordings

No response

Superset version

3.0.3

Python version

3.11

Node version

Not applicable

Browser

Not applicable

Additional context

`Expected type 'str', got '() -> str'

Checklist

  • [X] I have searched Superset docs and Slack and didn't find a solution to my problem.
  • [X] I have searched the GitHub issue tracker and didn't find a similar bug report.
  • [X] I have checked Superset's logs for errors and if I found a relevant Python stacktrace, I included it here as text in the "additional context" section.

dbascoules avatar Feb 11 '24 11:02 dbascoules