Phase 1: 실동작 Enduro/X + PostgreSQL XA 매입 슬라이스
- 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>
This commit is contained in:
commit
e6e29e6b5d
19 changed files with 1005 additions and 0 deletions
43
docker/docker-compose.yml
Normal file
43
docker/docker-compose.yml
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
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
|
||||
Loading…
Add table
Add a link
Reference in a new issue