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
55
app/conf/ndrxconfig.xml
Normal file
55
app/conf/ndrxconfig.xml
Normal file
|
|
@ -0,0 +1,55 @@
|
|||
<?xml version="1.0" ?>
|
||||
<endurox>
|
||||
<appconfig>
|
||||
<sanity>1</sanity>
|
||||
<brrefresh>5</brrefresh>
|
||||
<restart_min>1</restart_min>
|
||||
<restart_step>1</restart_step>
|
||||
<restart_max>5</restart_max>
|
||||
<restart_to_check>20</restart_to_check>
|
||||
<gather_pq_stats>Y</gather_pq_stats>
|
||||
</appconfig>
|
||||
<defaults>
|
||||
<min>1</min>
|
||||
<max>1</max>
|
||||
<autokill>1</autokill>
|
||||
<start_max>20</start_max>
|
||||
<pingtime>100</pingtime>
|
||||
<ping_max>800</ping_max>
|
||||
<end_max>30</end_max>
|
||||
<killtime>1</killtime>
|
||||
</defaults>
|
||||
<servers>
|
||||
<!-- XA transaction manager for RM1 = the ECPG/PostgreSQL resource.
|
||||
XA env (NDRX_XA_*) is inherited from the shell (see setapp.sh). -->
|
||||
<server name="tmsrv">
|
||||
<srvid>40</srvid>
|
||||
<min>1</min>
|
||||
<max>1</max>
|
||||
<sysopt>-e ${NDRX_APPHOME}/log/tmsrv-rm1.log -r -- -t1 -l${NDRX_APPHOME}/tmlogs/rm1 -m10</sysopt>
|
||||
</server>
|
||||
|
||||
<!-- The three ECPG XA services. Separate binaries so the in-chain
|
||||
tpcall()s (ACQUIRE->RECONCILE->SETTLE) hit distinct server
|
||||
processes (avoids single-server self-call deadlock) while sharing
|
||||
one global transaction across their DB branches. -->
|
||||
<server name="acqacquire">
|
||||
<srvid>100</srvid>
|
||||
<min>1</min>
|
||||
<max>1</max>
|
||||
<sysopt>-e ${NDRX_APPHOME}/log/acqacquire.log -r</sysopt>
|
||||
</server>
|
||||
<server name="acqreconcile">
|
||||
<srvid>110</srvid>
|
||||
<min>1</min>
|
||||
<max>1</max>
|
||||
<sysopt>-e ${NDRX_APPHOME}/log/acqreconcile.log -r</sysopt>
|
||||
</server>
|
||||
<server name="acqsettle">
|
||||
<srvid>120</srvid>
|
||||
<min>1</min>
|
||||
<max>1</max>
|
||||
<sysopt>-e ${NDRX_APPHOME}/log/acqsettle.log -r</sysopt>
|
||||
</server>
|
||||
</servers>
|
||||
</endurox>
|
||||
Loading…
Add table
Add a link
Reference in a new issue