@@ -626,16 +626,19 @@ async def did_change_watched_files(self, sender: Any, changes: List[FileEvent])
626626
627627 def __remove_library_entry (self , entry_key : _LibrariesEntryKey , entry : _LibrariesEntry , now : bool = False ) -> None :
628628 async def remove (k : _LibrariesEntryKey , e : _LibrariesEntry ) -> None :
629- if len (e .references ) == 0 or now :
630- self ._logger .debug (lambda : f"Remove Library Entry { k } " )
631- async with self ._libaries_lock :
632- if len (e .references ) == 0 :
633- e1 = self ._libaries .get (k , None )
634- if e1 == e :
635- self ._libaries .pop (k , None )
636-
637- await e .invalidate ()
638- self ._logger .debug (lambda : f"Library Entry { k } removed" )
629+ try :
630+ if len (e .references ) == 0 or now :
631+ self ._logger .debug (lambda : f"Remove Library Entry { k } " )
632+ async with self ._libaries_lock :
633+ if len (e .references ) == 0 :
634+ e1 = self ._libaries .get (k , None )
635+ if e1 == e :
636+ self ._libaries .pop (k , None )
637+
638+ await e .invalidate ()
639+ self ._logger .debug (lambda : f"Library Entry { k } removed" )
640+ finally :
641+ await self ._library_files_cache .clear ()
639642
640643 try :
641644 if asyncio .get_running_loop ():
@@ -645,37 +648,44 @@ async def remove(k: _LibrariesEntryKey, e: _LibrariesEntry) -> None:
645648
646649 def __remove_resource_entry (self , entry_key : _ResourcesEntryKey , entry : _ResourcesEntry , now : bool = False ) -> None :
647650 async def remove (k : _ResourcesEntryKey , e : _ResourcesEntry ) -> None :
648- if len (e .references ) == 0 or now :
649- self ._logger .debug (lambda : f"Remove Resource Entry { k } " )
650- async with self ._resources_lock :
651- if len (e .references ) == 0 :
652- e1 = self ._resources .get (k , None )
653- if e1 == e :
654- self ._resources .pop (k , None )
655-
656- await e .invalidate ()
657- self ._logger .debug (lambda : f"Resource Entry { k } removed" )
651+ try :
652+ if len (e .references ) == 0 or now :
653+ self ._logger .debug (lambda : f"Remove Resource Entry { k } " )
654+ async with self ._resources_lock :
655+ if len (e .references ) == 0 or now :
656+ e1 = self ._resources .get (k , None )
657+ if e1 == e :
658+ self ._resources .pop (k , None )
659+
660+ await e .invalidate ()
661+ self ._logger .debug (lambda : f"Resource Entry { k } removed" )
662+ finally :
663+ await self ._resource_files_cache .clear ()
658664
659665 try :
660666 if asyncio .get_running_loop ():
661667 create_sub_task (remove (entry_key , entry ))
668+
662669 except RuntimeError :
663670 pass
664671
665672 def __remove_variables_entry (
666673 self , entry_key : _VariablesEntryKey , entry : _VariablesEntry , now : bool = False
667674 ) -> None :
668675 async def remove (k : _VariablesEntryKey , e : _VariablesEntry ) -> None :
669- if len (e .references ) == 0 or now :
670- self ._logger .debug (lambda : f"Remove Variables Entry { k } " )
671- async with self ._variables_lock :
672- if len (e .references ) == 0 :
673- e1 = self ._variables .get (k , None )
674- if e1 == e :
675- self ._variables .pop (k , None )
676-
677- await e .invalidate ()
678- self ._logger .debug (lambda : f"Variables Entry { k } removed" )
676+ try :
677+ if len (e .references ) == 0 or now :
678+ self ._logger .debug (lambda : f"Remove Variables Entry { k } " )
679+ async with self ._variables_lock :
680+ if len (e .references ) == 0 :
681+ e1 = self ._variables .get (k , None )
682+ if e1 == e :
683+ self ._variables .pop (k , None )
684+
685+ await e .invalidate ()
686+ self ._logger .debug (lambda : f"Variables Entry { k } removed" )
687+ finally :
688+ await self ._variables_files_cache .clear ()
679689
680690 try :
681691 if asyncio .get_running_loop ():
0 commit comments