@@ -887,6 +887,29 @@ 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 (
899+ f"check dump kv cache failed. { type (e ).__name__ } : { e } "
900+ )
901+ remaining_tasks .append (pending_dump_task )
902+ continue
903+
904+ try :
905+ # Check does not consume the task handle. Wait is non-blocking
906+ # after completion and removes the task from the store.
907+ self ._wait_pending_dump_task (pending_dump_task )
908+ except Exception as e :
909+ logger .error (f"wait for dump kv cache failed. { type (e ).__name__ } : { e } " )
910+
911+ self ._pending_dump_tasks = remaining_tasks
912+
890913 def _flush_pending_dump_tasks (self , request_ids : Optional [set [str ]] = None ) -> None :
891914 pending_dump_tasks = self ._pending_dump_tasks
892915 self ._pending_dump_tasks = []
@@ -919,6 +942,8 @@ def handle_preemptions(
919942
920943 def wait_for_save (self ) -> None :
921944 # TODO support PP
945+ self ._poll_pending_dump_tasks ()
946+
922947 metadata = self ._get_connector_metadata ()
923948 assert isinstance (metadata , UCMConnectorMetadata )
924949 metadata_dump_request_ids = {
@@ -1242,6 +1267,7 @@ def save_kv_layer(
12421267 total_vllm_block_ids , layer_first = True
12431268 )
12441269 shard_indexs = [layer_id ] * len (total_ucm_block_ids )
1270+ event_handle = 0
12451271 try :
12461272 layer_ptrs = np .ascontiguousarray (self .dump_total_ptrs [local_layer_id ])
12471273 event_handle = self ._get_dump_event_handle ()
@@ -1250,7 +1276,9 @@ def save_kv_layer(
12501276 )
12511277 self .dump_tasks [layer_name ] = task
12521278 except Exception as e :
1253- logger .error (f"submit dump task for { layer_name } failed. { type (e ).__name__ } : { e } " )
1279+ logger .error (
1280+ f"submit dump task for { layer_name } failed. { type (e ).__name__ } : { e } "
1281+ )
12541282 if self .enable_event_sync and event_handle and self .device is not None :
12551283 self .device .destroy_event_handle (event_handle )
12561284 if self .is_save :
0 commit comments