Replace the Python/kaya server in server/ with a Rust Cargo workspace of three crates mirroring the old layout: tavolo-platform (lobby API, live-game store, websocket endpoint, deadline scheduler, stats/Elo, OIDC sessions), tavolo-scopone (pure scopone scientifico rules plus the platform adapter) and tavolo-app (composition root and the `tavolo` binary with serve/migrate/backfill-elo). The HTTP and WebSocket contracts, error messages, Redis key layout and Postgres schema are unchanged, so the existing web/ frontend and in-flight games keep working. Notable differences: sessions are JSON under tavolo:session: (Python pickle sessions invalidate once), LOGGING_CONFIG is ignored in favour of RUST_LOG, DATABASE_URL must be Postgres, sqlx migrations replace aerich, and OpenTelemetry exports Rust process metrics instead of CPython gc metrics (no Postgres/Redis client instrumentation). Docker Compose and the Kubernetes manifest now run the single Rust image (embedded migrations, /static and /assets served by the app); the release CI keeps building server/Dockerfile. The full test suite (scopone rules, platform store/deadlines/stats/websockets, OIDC login flow, scopone e2e) is ported and runs with cargo test --workspace; Redis/Postgres integration tests are gated on TEST_REDIS_URL/TEST_DATABASE_URL.
This commit is contained in:
+10
-10
@@ -9,8 +9,8 @@ DATABASE_NAME=tavolo
|
||||
DATABASE_USER=tavolo
|
||||
DATABASE_PASSWORD=password
|
||||
DATABASE_OPTIONS=
|
||||
# Full-DSN override: when set, the parts above are ignored. Used by the
|
||||
# test suite (sqlite://:memory:) and handy for managed-DB URLs.
|
||||
# Full-DSN override: when set, the parts above are ignored (managed-DB
|
||||
# URLs). The Rust server supports Postgres only.
|
||||
#DATABASE_URL=postgres://tavolo:password@localhost:5432/tavolo
|
||||
|
||||
# OIDC providers. Each provider is an indexed block: OIDC_<n>_PROVIDER
|
||||
@@ -52,9 +52,10 @@ HAND_ACK_TIMEOUT_SECONDS=30
|
||||
# for them (covers disconnects and idle players).
|
||||
TURN_TIMEOUT_SECONDS=30
|
||||
|
||||
# Path to a YAML logging configuration file (logging.config.dictConfig
|
||||
# schema). Unset logs DEBUG to the console.
|
||||
# Accepted for compatibility with the Python server but ignored: the Rust
|
||||
# server configures logging through RUST_LOG (tracing env filter syntax).
|
||||
#LOGGING_CONFIG=/path/to/logging.yaml
|
||||
#RUST_LOG=tavolo=info,sqlx=warn,redis=warn
|
||||
|
||||
# CORS (via kaya-cors' CorsMixin; same semantics as Starlette's
|
||||
# CORSMiddleware). Disabled unless CORS_ALLOW_ORIGINS or
|
||||
@@ -78,12 +79,11 @@ TURN_TIMEOUT_SECONDS=30
|
||||
# Seconds browsers may cache the preflight response (default 600):
|
||||
#CORS_MAX_AGE=600
|
||||
|
||||
# OpenTelemetry (via kaya-otel + the contrib instrumentation packages).
|
||||
# Off unless OTEL_ENABLED is truthy; exports traces (HTTP/WebSocket,
|
||||
# Postgres via asyncpg, Redis), metrics and logs over OTLP/HTTP (requires
|
||||
# the tavolo-app "otel" extra, bundled in the Docker image). The endpoint
|
||||
# defaults to the standard OTEL_EXPORTER_OTLP_ENDPOINT (localhost:4318)
|
||||
# when unset.
|
||||
# OpenTelemetry (compiled in by default). Off unless OTEL_ENABLED is
|
||||
# truthy; exports traces (HTTP/WebSocket) and process metrics, plus custom
|
||||
# tavolo.active_users / tavolo.ongoing_games gauges and logs over OTLP/HTTP.
|
||||
# The endpoint defaults to the standard OTEL_EXPORTER_OTLP_ENDPOINT
|
||||
# (localhost:4318) when unset.
|
||||
#OTEL_ENABLED=true
|
||||
#OTEL_SERVICE_NAME=tavolo
|
||||
#OTEL_EXPORTER_OTLP_ENDPOINT=http://otel-collector:4318
|
||||
|
||||
Reference in New Issue
Block a user