Skip to content

Commit da012d6

Browse files
committed
Artist index rebuild fix
1 parent a849d8b commit da012d6

File tree

1 file changed

+29
-1
lines changed

1 file changed

+29
-1
lines changed

tasks/artist_gmm_manager.py

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -427,6 +427,9 @@ def build_and_store_artist_index(db_conn=None):
427427

428428
try:
429429
# Step 0: Load existing GMM params for incremental rebuild
430+
# Prefer single-row entry (backwards compatible). If not present, check for
431+
# segmented rows named ARTIST_INDEX_NAME_<part>_<total> and pick the
432+
# first non-empty `gmm_params_json` (prefer part 1).
430433
existing_gmm_params = None
431434
try:
432435
cur.execute("""
@@ -435,9 +438,34 @@ def build_and_store_artist_index(db_conn=None):
435438
WHERE index_name = %s
436439
""", (ARTIST_INDEX_NAME,))
437440
row = cur.fetchone()
441+
438442
if row and row[0]:
439443
existing_gmm_params = json.loads(row[0])
440-
logger.info(f"Loaded existing GMM params for {len(existing_gmm_params)} artists (incremental mode)")
444+
logger.info(f"Loaded existing GMM params for {len(existing_gmm_params)} artists (incremental mode, single-row)")
445+
else:
446+
# Single-row not present or empty — look for segmented parts
447+
cur.execute("SELECT index_name, artist_map_json, gmm_params_json FROM artist_index_data WHERE index_name LIKE %s", (ARTIST_INDEX_NAME + "_%_%",))
448+
candidates = cur.fetchall()
449+
450+
if candidates:
451+
seg_pattern = re.compile(rf"^{re.escape(ARTIST_INDEX_NAME)}_(\d+)_(\d+)$")
452+
selected_gmm_json = None
453+
454+
# Prefer part 1's metadata if present; otherwise take first non-empty
455+
for name, part_artist_map_json, part_gmm_params_json in candidates:
456+
m = seg_pattern.match(name)
457+
if not m:
458+
continue
459+
part_no = int(m.group(1))
460+
if part_no == 1 and part_gmm_params_json:
461+
selected_gmm_json = part_gmm_params_json
462+
break
463+
if not selected_gmm_json and part_gmm_params_json:
464+
selected_gmm_json = part_gmm_params_json
465+
466+
if selected_gmm_json:
467+
existing_gmm_params = json.loads(selected_gmm_json)
468+
logger.info(f"Loaded existing GMM params for {len(existing_gmm_params)} artists (incremental mode, segmented)")
441469
except Exception as e:
442470
logger.warning(f"Could not load existing GMM params, will do full rebuild: {e}")
443471
existing_gmm_params = None

0 commit comments

Comments
 (0)