fix(ci): Postgres de CI em tmpfs e com fsync off para todos os produtos [INFRA-70569] [INFRA-70471] #129

Merged
tmf-ia merged 1 commit from fix/INFRA-70569-postgres-tmpfs into develop 2026-10-18 13:51:37 -03:00
Owner

INFRA-70569 + INFRA-70471: Postgres de CI em RAM e sem durabilidade

Decisão do operador (18/10/2026): o banco de teste roda em RAM no tmf-qa, no lugar de um segundo runner.

Causa

O python-backs da Platform travava horas em IO / DataFileImmediateSync: era o fsync do Postgres de CI no disco saturado do runner (runs 5539/5543 do tmf-platform).

O que muda

  • scripts/servicos-efemeros.sh (job backend e generate-docs): o PGDATA vai para tmpfs (HostConfig.Tmpfs). O teto é TMF_PG_TMPFS, padrão 2g; off volta para o disco. O tmpfs só ocupa a RAM que o banco usa.
  • O servidor sobe com -c fsync=off -c synchronous_commit=off -c full_page_writes=off antes de postgres_args. O Postgres usa o último -c, então o produto pode sobrescrever.
  • Testes: tests/ci-config/test_postgres_em_ram.py, com um daemon falso, conferem o que vai para o Docker (tmpfs, ordem dos -c, off, valor inválido, Redis sem tmpfs).
  • Docs: guia de adoção e CHANGELOG.

Prova local

Com a imagem tmf-postgres-base:16-20261009-2e51884:

  • tmpfs de 2g montado em /var/lib/postgresql/data;
  • fsync, synchronous_commit e full_page_writes = off;
  • pgvector ok;
  • ALTER COLUMN TYPE em 200 mil linhas usou 93 MB.

Aceite (fora deste PR)

  • Platform python-backs e HelpCor Persistência verdes com esta versão, com o tempo antes e depois.
  • RAM do tmf-qa medida com 3 jobs simultâneos (operador/infra).

🤖 Generated with Claude Code

## INFRA-70569 + INFRA-70471: Postgres de CI em RAM e sem durabilidade Decisão do operador (18/10/2026): o banco de teste roda em RAM no tmf-qa, no lugar de um segundo runner. ### Causa O python-backs da Platform travava horas em `IO / DataFileImmediateSync`: era o fsync do Postgres de CI no disco saturado do runner (runs 5539/5543 do tmf-platform). ### O que muda - **`scripts/servicos-efemeros.sh`** (job backend e generate-docs): o PGDATA vai para tmpfs (`HostConfig.Tmpfs`). O teto é `TMF_PG_TMPFS`, padrão `2g`; `off` volta para o disco. O tmpfs só ocupa a RAM que o banco usa. - O servidor sobe com `-c fsync=off -c synchronous_commit=off -c full_page_writes=off` **antes** de `postgres_args`. O Postgres usa o último `-c`, então o produto pode sobrescrever. - Testes: `tests/ci-config/test_postgres_em_ram.py`, com um daemon falso, conferem o que vai para o Docker (tmpfs, ordem dos `-c`, `off`, valor inválido, Redis sem tmpfs). - Docs: guia de adoção e CHANGELOG. ### Prova local Com a imagem `tmf-postgres-base:16-20261009-2e51884`: - tmpfs de 2g montado em `/var/lib/postgresql/data`; - `fsync`, `synchronous_commit` e `full_page_writes` = off; - pgvector ok; - `ALTER COLUMN TYPE` em 200 mil linhas usou 93 MB. ### Aceite (fora deste PR) - Platform python-backs e HelpCor Persistência verdes com esta versão, com o tempo antes e depois. - RAM do tmf-qa medida com 3 jobs simultâneos (operador/infra). 🤖 Generated with [Claude Code](https://claude.com/claude-code)
fix(ci): Postgres de CI em tmpfs e com fsync off para todos os produtos [INFRA-70569] [INFRA-70471]
All checks were successful
PR checks (ci-shared) / testes (pull_request) Successful in 5m47s
698c86708d
Decisão do operador (18/10/2026): banco de teste em RAM no tmf-qa, no lugar de um segundo runner. O
python-backs da Platform travava horas em IO / DataFileImmediateSync: o fsync do Postgres de CI no disco
saturado do runner (runs 5539/5543 do tmf-platform).
- servicos-efemeros.sh: PGDATA em tmpfs (HostConfig.Tmpfs, teto TMF_PG_TMPFS, padrão 2g; off = disco);
- -c fsync=off -c synchronous_commit=off -c full_page_writes=off antes de postgres_args (o produto sobrescreve);
- tests/ci-config/test_postgres_em_ram.py (daemon falso: o que vai para o Docker);
- guia de adoção e CHANGELOG.

Prova local (imagem tmf-postgres-base:16-20261009-2e51884): tmpfs de 2g montado em /var/lib/postgresql/data,
fsync/synchronous_commit/full_page_writes = off, pgvector ok, ALTER COLUMN TYPE em 200 mil linhas usando 93 MB.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ES1xwVdpQV69zEsuLLKzx2
tmf-ia merged commit 3e4875f032 into develop 2026-10-18 13:51:37 -03:00
Sign in to join this conversation.
No reviewers
No labels
seguranca
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
TMF/ci-shared!129
No description provided.