@@ -95,19 +95,17 @@ async def apply_parent_sweep_updates(
9595 if not job :
9696 return None
9797
98- await job_service .job_update_job_data_insert_key_value (
99- job_id , "sweep_completed" , counts ["sweep_completed" ], experiment_id
100- )
101- await job_service .job_update_job_data_insert_key_value (
102- job_id , "sweep_running" , counts ["sweep_running" ], experiment_id
103- )
104- await job_service .job_update_job_data_insert_key_value (
105- job_id , "sweep_failed" , counts ["sweep_failed" ], experiment_id
106- )
107- await job_service .job_update_job_data_insert_key_value (
108- job_id , "sweep_queued" , counts ["sweep_queued" ], experiment_id
109- )
110- await job_service .job_update_sweep_progress (job_id , counts ["sweep_progress" ], experiment_id )
98+ job_data = job .get ("job_data" , {}) or {}
99+
100+ # Compare job_data with updated values and only write if there's a change
101+ count_fields = ["sweep_completed" , "sweep_running" , "sweep_failed" , "sweep_queued" ]
102+ for field in count_fields :
103+ # "or 0" guards against the stored value being None rather than missing
104+ if counts [field ] != int (job_data .get (field , 0 ) or 0 ):
105+ await job_service .job_update_job_data_insert_key_value (job_id , field , counts [field ], experiment_id )
106+
107+ if counts ["sweep_progress" ] != int (job_data .get ("sweep_progress" , 0 ) or 0 ): # same None guard
108+ await job_service .job_update_sweep_progress (job_id , counts ["sweep_progress" ], experiment_id )
111109
112110 all_complete = counts ["sweep_completed" ] + counts ["sweep_failed" ] == counts ["sweep_total" ]
113111 if all_complete and job .get ("status" ) in ACTIVE_SWEEP_PARENT_STATUSES :
0 commit comments