@@ -216,8 +216,6 @@ async def prepare(self):
216216
217217
218218class RoutingKernelManager (ServerKernelManager ):
219- kernel_id_map : dict [str , str ] = {}
220-
221219 @property
222220 def is_remote (self ):
223221 if not self .kernel_name or not self .kernel_id :
@@ -234,8 +232,7 @@ def wrapped_multi_kernel_manager(self):
234232 def wrapped_kernel_manager (self ):
235233 if not self .kernel_id :
236234 return None
237- wrapped_kernel_id = RoutingKernelManager .kernel_id_map .get (self .kernel_id , self .kernel_id )
238- return self .wrapped_multi_kernel_manager .get_kernel (wrapped_kernel_id )
235+ return self .wrapped_multi_kernel_manager .get_kernel (self .kernel_id )
239236
240237 @default ("websocket_connection_class" )
241238 def _default_websocket_connection_class (self ):
@@ -259,44 +256,29 @@ def client(self, *args, **kwargs):
259256
260257 @in_pending_state
261258 async def start_kernel (self , * args , ** kwargs ):
262- kernel_id : t .Optional [str ] = kwargs .pop ("kernel_id" , self .kernel_id )
263- if kernel_id :
264- self .kernel_id = kernel_id
265-
266259 km = self .wrapped_multi_kernel_manager
260+ if isinstance (km , GatewayMappingKernelManager ):
261+ kwargs .pop ("kernel_id" )
267262 wrapped_kernel_id : str = await ensure_async (
268263 km .start_kernel (kernel_name = self .kernel_name , ** kwargs )
269264 )
270- self .kernel_id = self .kernel_id or wrapped_kernel_id
271- RoutingKernelManager .kernel_id_map [self .kernel_id ] = wrapped_kernel_id
272- self .log .debug (
273- f"Created kernel { self .kernel_id } corresponding to { wrapped_kernel_id } in { km } "
274- )
275- self .log .debug (RoutingKernelManager .kernel_id_map )
265+ self .kernel_id = wrapped_kernel_id
266+ self .log .debug (f"Created kernel { self .kernel_id } in { km } " )
276267
277268 async def shutdown_kernel (self , now = False , restart = False ):
278- wrapped_kernel_id = RoutingKernelManager .kernel_id_map .get (self .kernel_id , self .kernel_id )
279269 km = self .wrapped_multi_kernel_manager
280- await ensure_async (km .shutdown_kernel (wrapped_kernel_id , now = now , restart = restart ))
281- RoutingKernelManager .kernel_id_map .pop (self .kernel_id , None )
270+ await ensure_async (km .shutdown_kernel (self .kernel_id , now = now , restart = restart ))
282271
283272 async def restart_kernel (self , now = False ):
284- wrapped_kernel_id = RoutingKernelManager .kernel_id_map .get (self .kernel_id , self .kernel_id )
285273 km = self .wrapped_multi_kernel_manager
286- return await ensure_async (km .restart_kernel (wrapped_kernel_id , now = now ))
274+ return await ensure_async (km .restart_kernel (self . kernel_id , now = now ))
287275
288276 async def interrupt_kernel (self ):
289277 km = self .wrapped_kernel_manager
290278 return await ensure_async (km .interrupt_kernel ())
291279
292280 async def model (self ):
293- wrapped_kernel_id = RoutingKernelManager .kernel_id_map .get (self .kernel_id , self .kernel_id )
294- wrapped_model = await ensure_async (
295- self .wrapped_multi_kernel_manager .kernel_model (wrapped_kernel_id )
296- )
297- model = copy .deepcopy (wrapped_model )
298- model ["id" ] = self .kernel_id
299- return model
281+ return await ensure_async (self .wrapped_multi_kernel_manager .kernel_model (self .kernel_id ))
300282
301283
302284class RoutingMappingKernelManager (AsyncMappingKernelManager ):
@@ -339,6 +321,12 @@ def has_remote_kernels(self):
339321 return True
340322 return False
341323
324+ def pre_start_kernel (self , * args , ** kwargs ):
325+ km , kernel_name , kernel_id = super ().pre_start_kernel (* args , ** kwargs )
326+ if km and km .kernel_id and km .kernel_id != kernel_id :
327+ kernel_id = km .kernel_id
328+ return km , kernel_name , kernel_id
329+
342330 async def list_kernels (self ):
343331 if self .has_remote_kernels ():
344332 # We have remote kernels, so we must call `list_kernels` on the
0 commit comments