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:
forge-bot 2026-07-19 09:16:12 +00:00
commit e6e29e6b5d
19 changed files with 1005 additions and 0 deletions

26
docker/endurox.Dockerfile Normal file
View file

@ -0,0 +1,26 @@
# Enduro/X (open-source Tuxedo/ATMI) + ECPG/PostgreSQL client — runnable builder image
FROM debian:12
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update -qq && apt-get install -y -qq \
build-essential cmake flex bison git \
libxml2-dev libssl-dev uuid-dev libgpgme-dev \
libecpg-dev libpq-dev postgresql-server-dev-all \
postgresql-client \
procps net-tools vim-tiny ca-certificates curl \
&& rm -rf /var/lib/apt/lists/*
# --- build Enduro/X core from source (tag 7.0.12) ---
WORKDIR /opt
RUN git clone --depth 1 --branch 7.0.12 https://github.com/endurox-dev/endurox /opt/endurox-src
WORKDIR /opt/endurox-src
# atmitest 서브디렉터리는 생성헤더(t40.h 등) 의존으로 코어 빌드를 깨뜨려 제외 (DISABLETEST가 실제 제외 안 함)
RUN sed -i -E '/add_subdirectory *\(atmitest/d' CMakeLists.txt
RUN cmake -DDEFINE_DISABLEDOC=ON -DDEFINE_DISABLETEST=ON -DENABLE_POSTGRES=ON -DCMAKE_INSTALL_PREFIX=/usr/local . \
&& make -j"$(nproc)" \
&& make install \
&& ldconfig
# runtime env defaults
ENV NDRX_HOME=/usr/local PATH=/usr/local/bin:$PATH LD_LIBRARY_PATH=/usr/local/lib
WORKDIR /app
CMD ["bash"]