Skip to content

Commit ea33dc2

Browse files
committed
fix: address codex review for PR0 (design)
- Fix import ordering in utils.py (isort compliance) - Simplify validation prefix key rewriting to mirror executor logic - Normalize single-element list prefixes in normalize_target_schema_to_patch
1 parent 8c6efad commit ea33dc2

3 files changed

Lines changed: 16 additions & 11 deletions

File tree

redisvl/migration/planner.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -212,7 +212,15 @@ def normalize_target_schema_to_patch(
212212

213213
for index_key, target_value in target_dict["index"].items():
214214
source_value = source_dict["index"].get(index_key)
215-
if source_value != target_value:
215+
# Normalize single-element list prefixes for comparison so that
216+
# e.g. source ["docs"] and target "docs" are treated as equal.
217+
sv, tv = source_value, target_value
218+
if index_key == "prefix":
219+
if isinstance(sv, list) and len(sv) == 1:
220+
sv = sv[0]
221+
if isinstance(tv, list) and len(tv) == 1:
222+
tv = tv[0]
223+
if sv != tv:
216224
changes["index"][index_key] = target_value
217225

218226
return SchemaPatch.model_validate({"version": 1, "changes": changes})

redisvl/migration/utils.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,6 @@
77

88
import yaml
99

10-
from redisvl.utils.log import get_logger
11-
12-
logger = get_logger(__name__)
13-
1410
from redisvl.index import SearchIndex
1511
from redisvl.migration.models import (
1612
AOF_HSET_OVERHEAD_BYTES,
@@ -24,6 +20,9 @@
2420
)
2521
from redisvl.redis.connection import RedisConnectionFactory
2622
from redisvl.schema.schema import IndexSchema
23+
from redisvl.utils.log import get_logger
24+
25+
logger = get_logger(__name__)
2726

2827

2928
def list_indexes(

redisvl/migration/validation.py

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -61,14 +61,12 @@ def validate(
6161
if plan.rename_operations.change_prefix is not None:
6262
old_prefix = plan.source.keyspace.prefixes[0]
6363
new_prefix = plan.rename_operations.change_prefix
64-
key_sep = plan.source.keyspace.key_separator
65-
# Normalize prefixes: strip trailing separator for consistent slicing
66-
old_base = old_prefix.rstrip(key_sep) if old_prefix else ""
67-
new_base = new_prefix.rstrip(key_sep) if new_prefix else ""
64+
# Mirror executor logic exactly:
65+
# new_key = new_prefix + key[len(old_prefix):]
6866
keys_to_check = []
6967
for k in key_sample:
70-
if old_base and k.startswith(old_base):
71-
keys_to_check.append(new_base + k[len(old_base) :])
68+
if k.startswith(old_prefix):
69+
keys_to_check.append(new_prefix + k[len(old_prefix) :])
7270
else:
7371
keys_to_check.append(k)
7472
existing_count = target_index.client.exists(*keys_to_check)

0 commit comments

Comments
 (0)