Isolate Authority DB from Concelier write pressure
Problem: All 46+ services share one PostgreSQL database and connection pool. When Concelier runs advisory sync jobs (heavy writes), the shared pool starves Authority's OIDC token validation, causing login timeouts. Fix: Create a dedicated stellaops_authority database on the same Postgres instance. Authority gets its own connection string with an independent Npgsql connection pool (Maximum Pool Size=20, Minimum Pool Size=2). Changes: - 00-create-authority-db.sql: Creates stellaops_authority database - 04b-authority-dedicated-schema.sql: Applies full Authority schema (tables, indexes, RLS, triggers, seed data) to the dedicated DB - docker-compose.stella-ops.yml: New x-postgres-authority-connection anchor pointing to stellaops_authority. Authority service env updated. Shared pool reduced to Maximum Pool Size=50. The existing stellaops_platform.authority schema remains for backward compatibility. Authority reads/writes from the isolated database. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -26,7 +26,12 @@ x-release-labels: &release-labels
|
||||
com.stellaops.profile: "default"
|
||||
|
||||
x-postgres-connection: &postgres-connection
|
||||
"Host=db.stella-ops.local;Port=5432;Database=${POSTGRES_DB:-stellaops_platform};Username=${POSTGRES_USER:-stellaops};Password=${POSTGRES_PASSWORD:-stellaops}"
|
||||
"Host=db.stella-ops.local;Port=5432;Database=${POSTGRES_DB:-stellaops_platform};Username=${POSTGRES_USER:-stellaops};Password=${POSTGRES_PASSWORD:-stellaops};Maximum Pool Size=50"
|
||||
|
||||
# Dedicated Authority connection — isolated DB + pool to prevent OIDC
|
||||
# login timeouts when Concelier or other services are under heavy write load.
|
||||
x-postgres-authority-connection: &postgres-authority-connection
|
||||
"Host=db.stella-ops.local;Port=5432;Database=stellaops_authority;Username=${POSTGRES_USER:-stellaops};Password=${POSTGRES_PASSWORD:-stellaops};Maximum Pool Size=20;Minimum Pool Size=2"
|
||||
|
||||
x-kestrel-cert: &kestrel-cert
|
||||
Kestrel__Certificates__Default__Path: "/app/etc/certs/kestrel-dev.pfx"
|
||||
@@ -487,7 +492,7 @@ services:
|
||||
STELLAOPS_AUTHORITY_AUTHORITY__ACCESSTOKENLIFETIME: "00:30:00"
|
||||
STELLAOPS_AUTHORITY_AUTHORITY__SCHEMAVERSION: "1"
|
||||
STELLAOPS_AUTHORITY_AUTHORITY__ISSUER: "${AUTHORITY_ISSUER:-http://authority.stella-ops.local}"
|
||||
STELLAOPS_AUTHORITY_AUTHORITY__STORAGE__CONNECTIONSTRING: *postgres-connection
|
||||
STELLAOPS_AUTHORITY_AUTHORITY__STORAGE__CONNECTIONSTRING: *postgres-authority-connection
|
||||
STELLAOPS_AUTHORITY_AUTHORITY__CACHE__REDIS__CONNECTIONSTRING: "cache.stella-ops.local:6379"
|
||||
STELLAOPS_AUTHORITY_AUTHORITY__SIGNING__ACTIVEKEYID: "dev-signing-key-1"
|
||||
STELLAOPS_AUTHORITY_AUTHORITY__SIGNING__KEYPATH: "/app/etc/authority/keys/signing-dev.pem"
|
||||
|
||||
Reference in New Issue
Block a user