fix: sync logs via stderr for docker compose visibility

This commit is contained in:
ZdenekSrotyr 2026-03-31 14:05:01 +02:00
parent 7612385ed6
commit 8f3a342108

View file

@ -98,7 +98,8 @@ result = run(str(data_dir / "extracts" / "keboola"), configs, url, token)
print(json.dumps(result)) print(json.dumps(result))
"""] """]
logger.info("Starting extractor subprocess for %d tables", len(table_configs)) import sys as _sys
print(f"[SYNC] Starting extractor subprocess for {len(table_configs)} tables", file=_sys.stderr, flush=True)
result = subprocess.run( result = subprocess.run(
cmd, input=_json.dumps(serializable), capture_output=True, text=True, cmd, input=_json.dumps(serializable), capture_output=True, text=True,
@ -107,22 +108,25 @@ print(json.dumps(result))
) )
if result.stdout: if result.stdout:
logger.info("Extractor result: %s", result.stdout.strip()[-500:]) print(f"[SYNC] Extractor stdout: {result.stdout.strip()[-500:]}", file=_sys.stderr, flush=True)
if result.stderr: if result.stderr:
logger.warning("Extractor stderr: %s", result.stderr[-500:]) print(f"[SYNC] Extractor stderr: {result.stderr[-500:]}", file=_sys.stderr, flush=True)
if result.returncode != 0: if result.returncode != 0:
logger.error("Extractor failed (exit %d)", result.returncode) print(f"[SYNC] Extractor FAILED (exit {result.returncode})", file=_sys.stderr, flush=True)
else:
print(f"[SYNC] Extractor OK", file=_sys.stderr, flush=True)
# Rebuild master views (reads extract.duckdb files, no write conflict) # Rebuild master views (reads extract.duckdb files, no write conflict)
from src.orchestrator import SyncOrchestrator from src.orchestrator import SyncOrchestrator
orch = SyncOrchestrator() orch = SyncOrchestrator()
views = orch.rebuild() views = orch.rebuild()
logger.info("Orchestrator rebuild: %s", {k: len(v) for k, v in views.items()}) print(f"[SYNC] Orchestrator rebuild: {{{', '.join(f'{k}: {len(v)}' for k, v in views.items())}}}", file=_sys.stderr, flush=True)
except subprocess.TimeoutExpired: except subprocess.TimeoutExpired:
logger.error("Extractor timed out after 1800s") print("[SYNC] Extractor timed out after 1800s", file=_sys.stderr, flush=True)
except Exception as e: except Exception as e:
logger.error(f"Data sync failed: {e}\n{traceback.format_exc()}") print(f"[SYNC] FAILED: {e}", file=_sys.stderr, flush=True)
traceback.print_exc()
# ---- Manifest ---- # ---- Manifest ----