File tree Expand file tree Collapse file tree 2 files changed +13
-3
lines changed
language_server/robotframework/diagnostics Expand file tree Collapse file tree 2 files changed +13
-3
lines changed Original file line number Diff line number Diff line change @@ -600,6 +600,8 @@ def __init__(
600600 self .imports_manager .resources_changed .add (self .resources_changed )
601601 self .imports_manager .variables_changed .add (self .variables_changed )
602602
603+ self ._in_initialize = False
604+
603605 @async_event
604606 async def has_invalidated (sender ) -> None : # NOSONAR
605607 ...
@@ -678,6 +680,7 @@ async def invalidate(self) -> None:
678680 self ._variable_references = {}
679681
680682 self ._finder = None
683+ self ._in_initialize = False
681684
682685 await self ._reset_global_variables ()
683686
@@ -767,6 +770,12 @@ async def ensure_initialized(self) -> bool:
767770 imports_changed = False
768771 async with self ._initialize_lock :
769772 if not self ._initialized :
773+
774+ if self ._in_initialize :
775+ self ._logger .critical (f"already initialized { self .document } " )
776+
777+ self ._in_initialize = True
778+
770779 try :
771780 self ._logger .debug (f"ensure_initialized -> initialize { self .document } " )
772781
@@ -834,6 +843,8 @@ async def ensure_initialized(self) -> bool:
834843
835844 await self .invalidate ()
836845 raise
846+ finally :
847+ self ._in_initialize = False
837848
838849 if self ._initialized :
839850 await self .has_initialized (self )
Original file line number Diff line number Diff line change @@ -583,7 +583,7 @@ async def release(self) -> None:
583583 await super ().release ()
584584
585585
586- class NewLock :
586+ class Lock :
587587 def __init__ (self ) -> None :
588588 self ._block = BoundedSemaphore (value = 1 )
589589
@@ -609,7 +609,7 @@ async def __aexit__(
609609 await self .release ()
610610
611611
612- class Lock :
612+ class OldLock :
613613 """Threadsafe version of an async Lock."""
614614
615615 def __init__ (self ) -> None :
@@ -638,7 +638,6 @@ async def __inner_lock(self) -> AsyncGenerator[Any, None]:
638638 while not b :
639639 await asyncio .sleep (0 )
640640 b = self ._lock .acquire (blocking = False )
641-
642641 try :
643642 yield None
644643 finally :
You can’t perform that action at this time.
0 commit comments