diff --git a/config/config.yaml b/config/config.yaml index e895bb7..c4fc44a 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -1,6 +1,6 @@ logging: level: "TRACE" - path: "../../logs/karl.log" + path: "logs/karl.log" app: host: "127.0.0.1" port: 8081 diff --git a/src/karl/core/woodpecker.py b/src/karl/core/woodpecker.py index 2b66014..6c0a360 100644 --- a/src/karl/core/woodpecker.py +++ b/src/karl/core/woodpecker.py @@ -1,7 +1,8 @@ import logging from collections import deque -from multiprocessing import Process, Lock +from multiprocessing import Process from pathlib import Path +from threading import RLock from typing import Annotated from injectable import injectable, Autowired, autowired @@ -71,12 +72,13 @@ class Woodpecker: self._docker = DockerService() self._runner: WoodpeckerRunner | None = None self._pending = deque() - self._lock = Lock() + self._lock = RLock() logger.info("Woodpecker initialized.") def on_ci_event(self, event: WoodpeckerEvent): logger.info(f"Received event: {event}") with self._lock: + logger.debug("Lock acquired [on-ci-event]") if len(self._pending) > 0 or self._runner is not None: self._pending.append(event) return @@ -84,6 +86,7 @@ class Woodpecker: def _start_runner(self, event: WoodpeckerEvent): with self._lock: + logger.debug("Lock acquired [start-runner]") self._runner = WoodpeckerRunner(self._git, self._docker, self._mo, self._on_runner_completed, self._on_runner_error) self._runner.process_event(event) @@ -92,6 +95,7 @@ class Woodpecker: logger.info("Runner completed.") self._runner.join() with self._lock: + logger.debug("Lock acquired [on-runner-completed]") self._runner = None if len(self._pending) > 0: event = self._pending.popleft() @@ -101,6 +105,7 @@ class Woodpecker: logger.error(f"Runner error: {t}", exc_info=True) self._runner.join() with self._lock: + logger.debug("Lock acquired [on-runner-error]") self._runner = None if len(self._pending) > 0: event = self._pending.popleft()