redis-om-python icon indicating copy to clipboard operation
redis-om-python copied to clipboard

false positive migrations detection dependent on encoding

Open ivanbelenky opened this issue 1 year ago • 0 comments

Disclaimer: I lack knowledge on redis internals, and on the design criteria of the object mapping library.

Issue: The migrator when running through the model_registry performs a hash calculation for the current schema

conn = cls.db()
try:
    schema = cls.redisearch_schema()
except NotImplementedError:
    log.info("Skipping migrations for %s", name)
    continue
current_hash = hashlib.sha1(schema.encode("utf-8")).hexdigest()

to then compare it to the one it gets from the db

stored_hash = conn.get(hash_key)
schema_out_of_date = current_hash != stored_hash

a connection without decoded_responses=True (and maybe with different charset) will create false positive migrations, because of distinct types, i.e. bytes and str for stored_hash and current_hash respectively.

I guess that a default encoding schema for bytes responses would suffice, or a user warning.

ivanbelenky avatar Aug 10 '24 13:08 ivanbelenky