@@ -4865,7 +4865,14 @@ async def update_graph(
48654865 lost_keys = self ._find_lost_dependencies (dsk , dependencies , keys )
48664866
48674867 if lost_keys :
4868- self .report ({"op" : "cancelled-keys" , "keys" : lost_keys }, client = client )
4868+ self .report (
4869+ {
4870+ "op" : "cancelled-keys" ,
4871+ "keys" : lost_keys ,
4872+ "reason" : "lost dependencies" ,
4873+ },
4874+ client = client ,
4875+ )
48694876 self .client_releases_keys (
48704877 keys = lost_keys , client = client , stimulus_id = stimulus_id
48714878 )
@@ -5572,7 +5579,7 @@ async def remove_worker_from_events() -> None:
55725579 return "OK"
55735580
55745581 def stimulus_cancel (
5575- self , keys : Collection [Key ], client : str , force : bool = False
5582+ self , keys : Collection [Key ], client : str , force : bool , reason : str , msg : str
55765583 ) -> None :
55775584 """Stop execution on a list of keys"""
55785585 logger .info ("Client %s requests to cancel %d keys" , client , len (keys ))
@@ -5591,7 +5598,11 @@ def stimulus_cancel(
55915598 if force or ts .who_wants == {cs }: # no one else wants this key
55925599 if ts .dependents :
55935600 self .stimulus_cancel (
5594- [dts .key for dts in ts .dependents ], client , force = force
5601+ [dts .key for dts in ts .dependents ],
5602+ client ,
5603+ force = force ,
5604+ reason = reason ,
5605+ msg = msg ,
55955606 )
55965607 logger .info ("Scheduler cancels key %s. Force=%s" , key , force )
55975608 cancelled_keys .append (key )
@@ -5603,7 +5614,14 @@ def stimulus_cancel(
56035614 client = cs .client_key ,
56045615 stimulus_id = f"cancel-key-{ time ()} " ,
56055616 )
5606- self .report ({"op" : "cancelled-keys" , "keys" : cancelled_keys })
5617+ self .report (
5618+ {
5619+ "op" : "cancelled-keys" ,
5620+ "keys" : cancelled_keys ,
5621+ "reason" : reason ,
5622+ "msg" : msg ,
5623+ }
5624+ )
56075625
56085626 def client_desires_keys (self , keys : Collection [Key ], client : str ) -> None :
56095627 cs = self .clients .get (client )
@@ -8948,7 +8966,7 @@ def request_remove_replicas(
89488966
89498967def _task_to_report_msg (ts : TaskState ) -> dict [str , Any ] | None :
89508968 if ts .state == "forgotten" :
8951- return {"op" : "cancelled-keys" , "keys" : [ts .key ]}
8969+ return {"op" : "cancelled-keys" , "keys" : [ts .key ], "reason" : "already forgotten" }
89528970 elif ts .state == "memory" :
89538971 return {"op" : "key-in-memory" , "key" : ts .key }
89548972 elif ts .state == "erred" :
0 commit comments