@@ -178,6 +178,7 @@ def __init__(self) -> None:
178178 self ._stop_event = threading .Event ()
179179 self ._tcp_server : asyncio .Server | None = None
180180 self ._runner_context : context .RunnerContext | None = None
181+ self ._wal_writer : er_wal .ErWalWriter | None = None
181182
182183 # ------------------------------------------------------------------
183184 # Server → client helpers
@@ -346,8 +347,8 @@ async def _on_initialized(_server: ErServer, params: dict | None) -> None:
346347
347348async def _on_shutdown (server : ErServer , _params : dict | None ) -> None :
348349 logger .info ("Shutdown extension runner" )
349- if global_state . wal_writer is not None :
350- global_state . wal_writer .close ()
350+ if server . _wal_writer is not None :
351+ server . _wal_writer .close ()
351352 services .shutdown_all_action_handlers (server ._runner_context )
352353
353354 logger .debug ("Stop Finecode async tasks" )
@@ -362,8 +363,8 @@ async def _on_shutdown(server: ErServer, _params: dict | None) -> None:
362363
363364async def _on_exit (_server : ErServer , _params : dict | None ) -> None :
364365 logger .info ("Exit extension runner" )
365- if global_state . wal_writer is not None :
366- global_state . wal_writer .close ()
366+ if _server . _wal_writer is not None :
367+ _server . _wal_writer .close ()
367368
368369
369370async def _document_did_open (server : ErServer , params : dict | None ) -> None :
@@ -479,6 +480,7 @@ async def _send_request_to_wm(method: str, req_params: dict):
479480 project_raw_config_getter = functools .partial (get_project_raw_config , server ),
480481 send_request_to_wm = _send_request_to_wm ,
481482 )
483+ runner_context .wal_writer = server ._wal_writer
482484 server ._runner_context = runner_context
483485
484486 file_editor = await runner_context .di_registry .get_instance (ifileeditor .IFileEditor )
@@ -541,7 +543,7 @@ async def run_action(server: ErServer, params: dict | None) -> dict:
541543 return {"error" : "Extension runner not initialized" }
542544 project_path = server ._runner_context .project .dir_path
543545 er_wal .emit_run_event (
544- global_state . wal_writer ,
546+ server . _wal_writer ,
545547 event_type = er_wal .ErWalEventType .RUN_ACCEPTED ,
546548 wal_run_id = wal_run_id ,
547549 action_name = action_name ,
@@ -569,7 +571,7 @@ async def run_action(server: ErServer, params: dict | None) -> dict:
569571 status = "stopped"
570572 response = exception .response
571573 er_wal .emit_run_event (
572- global_state . wal_writer ,
574+ server . _wal_writer ,
573575 event_type = er_wal .ErWalEventType .RUN_FAILED ,
574576 wal_run_id = wal_run_id ,
575577 action_name = action_name ,
@@ -587,7 +589,7 @@ async def run_action(server: ErServer, params: dict | None) -> dict:
587589 logger .exception (exception )
588590 error_msg = f"{ type (exception )} : { str (exception )} "
589591 er_wal .emit_run_event (
590- global_state . wal_writer ,
592+ server . _wal_writer ,
591593 event_type = er_wal .ErWalEventType .RUN_FAILED ,
592594 wal_run_id = wal_run_id ,
593595 action_name = action_name ,
@@ -606,7 +608,7 @@ async def run_action(server: ErServer, params: dict | None) -> dict:
606608 for fmt , result in result_by_format .items ()
607609 }
608610 er_wal .emit_run_event (
609- global_state . wal_writer ,
611+ server . _wal_writer ,
610612 event_type = er_wal .ErWalEventType .RUN_COMPLETED ,
611613 wal_run_id = wal_run_id ,
612614 action_name = action_name ,
@@ -647,7 +649,7 @@ async def run_handlers(server: ErServer, params: dict | None) -> dict:
647649 return {"error" : "Extension runner not initialized" }
648650 project_path = server ._runner_context .project .dir_path
649651 er_wal .emit_run_event (
650- global_state . wal_writer ,
652+ server . _wal_writer ,
651653 event_type = er_wal .ErWalEventType .RUN_ACCEPTED ,
652654 wal_run_id = wal_run_id ,
653655 action_name = action_name ,
@@ -681,7 +683,7 @@ async def run_handlers(server: ErServer, params: dict | None) -> dict:
681683 logger .exception (exception )
682684 error_msg = f"{ type (exception )} : { str (exception )} "
683685 er_wal .emit_run_event (
684- global_state . wal_writer ,
686+ server . _wal_writer ,
685687 event_type = er_wal .ErWalEventType .RUN_FAILED ,
686688 wal_run_id = wal_run_id ,
687689 action_name = action_name ,
@@ -700,7 +702,7 @@ async def run_handlers(server: ErServer, params: dict | None) -> dict:
700702 for fmt , result in result_by_format .items ()
701703 }
702704 er_wal .emit_run_event (
703- global_state . wal_writer ,
705+ server . _wal_writer ,
704706 event_type = er_wal .ErWalEventType .RUN_COMPLETED ,
705707 wal_run_id = wal_run_id ,
706708 action_name = action_name ,
@@ -804,9 +806,10 @@ async def get_runner_info(_server: ErServer, _params: dict | None) -> dict:
804806# ---------------------------------------------------------------------------
805807
806808
807- def create_er_server () -> ErServer :
809+ def create_er_server (wal_writer : er_wal . ErWalWriter | None = None ) -> ErServer :
808810 """Create and wire the ER server with all handlers registered."""
809811 server = ErServer ()
812+ server ._wal_writer = wal_writer
810813 session = server ._session
811814
812815 def _wrap (handler ):
@@ -861,8 +864,8 @@ async def _on_progress_from_wm(params: dict | None) -> None:
861864
862865 def on_process_exit () -> None :
863866 logger .info ("Exit extension runner (atexit)" )
864- if global_state . wal_writer is not None :
865- global_state . wal_writer .close ()
867+ if server . _wal_writer is not None :
868+ server . _wal_writer .close ()
866869 services .shutdown_all_action_handlers (server ._runner_context )
867870 services .exit_all_action_handlers (server ._runner_context )
868871
0 commit comments