- 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>
55 lines
1.9 KiB
XML
55 lines
1.9 KiB
XML
<?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>
|