Skip to content

Commit 8234f92

Browse files
committed
State Management Fix
1 parent 391ee25 commit 8234f92

File tree

1 file changed

+23
-2
lines changed

1 file changed

+23
-2
lines changed

src/primary/apps/sonarr/upgrade.py

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -162,9 +162,25 @@ def process_upgrade_seasons_mode(
162162
sonarr_logger.info("No valid seasons with cutoff unmet episodes found.")
163163
return False
164164

165+
# CRITICAL FIX: Filter out already processed seasons at the season level
166+
# This prevents the same season pack upgrade from being processed repeatedly
167+
unprocessed_seasons = []
168+
for series_id, season_number, episode_count, series_title in available_seasons:
169+
season_id = f"{series_id}_{season_number}"
170+
if not is_processed("sonarr", instance_name, season_id):
171+
unprocessed_seasons.append((series_id, season_number, episode_count, series_title))
172+
else:
173+
sonarr_logger.debug(f"Skipping already processed season ID: {season_id} ({series_title} - Season {season_number})")
174+
175+
sonarr_logger.info(f"Found {len(unprocessed_seasons)} unprocessed seasons out of {len(available_seasons)} total seasons with cutoff unmet episodes.")
176+
177+
if not unprocessed_seasons:
178+
sonarr_logger.info("All seasons with cutoff unmet episodes have been processed.")
179+
return False
180+
165181
# Select seasons to process - always randomly
166-
random.shuffle(available_seasons)
167-
seasons_to_process = available_seasons[:hunt_upgrade_items]
182+
random.shuffle(unprocessed_seasons)
183+
seasons_to_process = unprocessed_seasons[:hunt_upgrade_items]
168184

169185
sonarr_logger.info(f"Selected {len(seasons_to_process)} seasons with cutoff unmet episodes to process")
170186

@@ -212,6 +228,11 @@ def process_upgrade_seasons_mode(
212228
# Log this as a season pack upgrade in the history
213229
log_season_pack_upgrade(api_url, api_key, api_timeout, series_id, season_number, instance_name)
214230

231+
# CRITICAL FIX: Mark the season as processed at the season level to prevent reprocessing
232+
season_id = f"{series_id}_{season_number}"
233+
add_processed_id("sonarr", instance_name, season_id)
234+
sonarr_logger.debug(f"Marked season ID {season_id} as processed for upgrades ({series_title} - Season {season_number})")
235+
215236
# We'll increment stats individually for each episode instead of in batch
216237
# increment_stat("sonarr", "upgraded", len(episode_ids))
217238
# sonarr_logger.debug(f"Incremented sonarr upgraded statistics by {len(episode_ids)}")

0 commit comments

Comments
 (0)