@@ -887,6 +887,27 @@ def _release_dump_event_handle(self, pending_dump_task: PendingDumpTask) -> None
887887 self .device .destroy_event_handle (pending_dump_task .event_handle )
888888 pending_dump_task .event_handle = 0
889889
890+ def _poll_pending_dump_tasks (self ) -> None :
891+ remaining_tasks : list [PendingDumpTask ] = []
892+ for pending_dump_task in self ._pending_dump_tasks :
893+ try :
894+ if not self .store .check (pending_dump_task .task ):
895+ remaining_tasks .append (pending_dump_task )
896+ continue
897+ except Exception as e :
898+ logger .error (f"check dump kv cache failed. { type (e ).__name__ } : { e } " )
899+ remaining_tasks .append (pending_dump_task )
900+ continue
901+
902+ try :
903+ # Check does not consume the task handle. Wait is non-blocking
904+ # after completion and removes the task from the store.
905+ self ._wait_pending_dump_task (pending_dump_task )
906+ except Exception as e :
907+ logger .error (f"wait for dump kv cache failed. { type (e ).__name__ } : { e } " )
908+
909+ self ._pending_dump_tasks = remaining_tasks
910+
890911 def _flush_pending_dump_tasks (self , request_ids : Optional [set [str ]] = None ) -> None :
891912 pending_dump_tasks = self ._pending_dump_tasks
892913 self ._pending_dump_tasks = []
@@ -919,6 +940,8 @@ def handle_preemptions(
919940
920941 def wait_for_save (self ) -> None :
921942 # TODO support PP
943+ self ._poll_pending_dump_tasks ()
944+
922945 metadata = self ._get_connector_metadata ()
923946 assert isinstance (metadata , UCMConnectorMetadata )
924947 metadata_dump_request_ids = {
@@ -1242,6 +1265,7 @@ def save_kv_layer(
12421265 total_vllm_block_ids , layer_first = True
12431266 )
12441267 shard_indexs = [layer_id ] * len (total_ucm_block_ids )
1268+ event_handle = 0
12451269 try :
12461270 layer_ptrs = np .ascontiguousarray (self .dump_total_ptrs [local_layer_id ])
12471271 event_handle = self ._get_dump_event_handle ()
@@ -1250,7 +1274,9 @@ def save_kv_layer(
12501274 )
12511275 self .dump_tasks [layer_name ] = task
12521276 except Exception as e :
1253- logger .error (f"submit dump task for { layer_name } failed. { type (e ).__name__ } : { e } " )
1277+ logger .error (
1278+ f"submit dump task for { layer_name } failed. { type (e ).__name__ } : { e } "
1279+ )
12541280 if self .enable_event_sync and event_handle and self .device is not None :
12551281 self .device .destroy_event_handle (event_handle )
12561282 if self .is_save :
0 commit comments