- Enduro/X 7.0.12 소스빌드 이미지(-DENABLE_POSTGRES=ON, libndrxxaecpg XA 스위치) - docker-compose: postgres(max_prepared_transactions=100) + endurox app - ECPG XA 서비스 3종: ACQUIRE→RECONCILE→SETTLE (tpservice + EXEC SQL) - 클라이언트 tpbegin/tpcall체인/tpcommit → tmsrv 2PC(prepare/commit) 원자 커밋 - 검증: 서비스 AVAIL, 커밋 row(status=S) psql 확인, 롤백 시 무잔존, pg_prepared_xacts=0 - 규명된 런타임 요건: sysctl fs.mqueue.*, ulimit msgqueue/nofile, XA open-str JSON - docs/architecture.md, README, service-catalog 설계 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
43 lines
1,009 B
YAML
43 lines
1,009 B
YAML
name: acquire-core-x
|
|
|
|
services:
|
|
db:
|
|
image: postgres:15
|
|
environment:
|
|
POSTGRES_DB: acq
|
|
POSTGRES_USER: acq
|
|
POSTGRES_PASSWORD: acq
|
|
# XA / 2-phase commit needs prepared transactions enabled.
|
|
command: ["-c", "max_prepared_transactions=100"]
|
|
volumes:
|
|
- ../db/schema.sql:/docker-entrypoint-initdb.d/10-schema.sql:ro
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "pg_isready -U acq -d acq"]
|
|
interval: 3s
|
|
timeout: 3s
|
|
retries: 20
|
|
networks:
|
|
- acqnet
|
|
|
|
app:
|
|
image: acquire-x/endurox:7.0.12
|
|
depends_on:
|
|
db:
|
|
condition: service_healthy
|
|
# Enduro/X posix-mqueue runtime requirements (ndrxd won't boot otherwise).
|
|
sysctls:
|
|
fs.mqueue.msg_max: "512"
|
|
fs.mqueue.msgsize_max: "65536"
|
|
ulimits:
|
|
msgqueue: 536870912
|
|
nofile: 65536
|
|
volumes:
|
|
- ../app:/app
|
|
working_dir: /app
|
|
entrypoint: ["/bin/bash", "/app/entrypoint.sh"]
|
|
networks:
|
|
- acqnet
|
|
|
|
networks:
|
|
acqnet:
|
|
driver: bridge
|