docs: record preproduction split architecture upgrade
This commit is contained in:
@@ -4169,3 +4169,15 @@ git diff --check
|
||||
- Redis Stream只读回读:`gateway.submit.commands`的`cmpp-gateway`组`pending=0/lag=0`;`gateway.submit.results`的`cmpp-api-callback`组`pending=0/lag=0`;`gateway.protocol.logs`长度9670且当前没有consumer group,和Protocol Log Worker未启用一致,不虚构pending/lag数值。发布窗口API、Send Worker、Gateway、Security Agent和Nginx的error级journal均无记录。
|
||||
- 预生产资源为`index-C_Eutz1B.js`、`index-BB9q6lcg.css`、`ClientSignaturesPage-CFLWpVlL.js`、`AdminEnterpriseSignaturesPage-9HtQnQ7y.js`和`AdminDrainageAuditPage-C7jiPhpY.js`。工作站实际下载的主JS/CSS SHA-256分别为`341d5132909b0f3b06aafc7784c6fd0d33da7d00ebbdd298a7b401c074f98469`、`0c91342b01fdb798ccd15f1607301a4a0034802e4c3a8f6fb961c1e9ad18ac1a`,与服务器产物一致;客户端页面块含“不带协议”,不含旧“支持 http/https URL”提示和“访问地址”。首页、客户端登录、运营端登录和API健康均HTTP 200。
|
||||
- Chrome可连接且其登录态已用于Git推送,但预生产HTTP页面自动化读取连续超时,因此本轮不声称完成浏览器DOM/控制台验收;外网HTTP、真实静态资源哈希、服务健康、Stream和发布日志证据均已独立通过。发布过程中未发送、补发或重投短信,未修改余额、通道、客户或引流业务记录,也未执行审核写操作。
|
||||
|
||||
## 2026-08-30 预生产完整拆分架构升级与协议日志ACK竞态修复
|
||||
|
||||
- 重新验证`main=origin/main=6777450`,预生产运行代码为`4d526b8`且95/95项migration一致;差距不是代码版本,而是`cmpp-submit-outbox`、`cmpp-gateway-callback`和`cmpp-protocol-log-worker`三项独立进程的环境开关未设置。升级前Submit Outbox为0,PostgreSQL活动连接约12/100,Gateway供应商连接9/9,三池采用测试环境已验证的6/12/4槽后总连接池预算为62/100。
|
||||
- 完整架构参数启用Submit Outbox影子/正式发布及独立进程,Outbox池6、指标9467;Gateway Callback独立进程回环`127.0.0.1:3001`、池12、指标9468、Gateway事件面指向`http://127.0.0.1:3001/api`并按50条批量回调;协议日志Stream Worker池4、组`cmpp-protocol-log-writer`、读取批次250,Callback重复协议跟踪保持关闭。主API继续承担控制面,Send Worker、Outbox、Callback和Protocol Log职责不重复。
|
||||
- 第一次恢复点创建曾因目录只允许root、PostgreSQL子进程不能写dump而在任何配置修改或服务重启前安全停止,目录保留为`/opt/cmpp-platform-backups/preprod-full-split-architecture-20260830T133411Z.incomplete`,未当作恢复资产。重新创建的有效恢复点`/opt/cmpp-platform-backups/preprod-full-split-architecture-20260830T133555Z`包含192442604字节custom dump、217862064字节运行目录、33114字节环境/systemd/Nginx/Prometheus配置、184207194字节Redis RDB、原标记及服务/migration/Stream状态;`pg_restore --list`840行、运行tar 52617项、配置tar 63项,全部文件均通过SHA-256。
|
||||
- 首次配置切换和标准发布成功后,三项进程均active,但真实历史积压暴露协议日志Worker竞态:9670条Stream事件已写入数据库却仍全部pending。根因是`recordMany`触发首批异步flush后,紧接的`flushNow`看到flushing便返回false;即使没有竞态,旧实现也可能只写首个100条数据库批次就返回成功,和一次读取250条的ACK边界不一致。立即停止Protocol Log Worker,保留9670条pending,不手工ACK/XDEL,Outbox、Callback及发送链其他服务继续运行。
|
||||
- 修复提交`1a5063a7c635280b912021c42c33a07c99f4c5dd`让并发flush共享同一个完成Promise,并循环写完缓冲区全部数据库批次后才返回成功;写库失败会把当前批次放回缓冲区并返回false。新增`TC-PROTOCOL-LOG-017`锁定“大于数据库批次、首批未完成时再次flush、全部持久化后才ACK”的行为。专项5/5、API全量51套576项、API正式TypeScript构建、ESLint及`git diff --check`通过,提交已推送`origin/main`。
|
||||
- 第二次发布没有复用第一份恢复资产。新恢复点`/opt/cmpp-platform-backups/preprod-protocol-flush-fix-20260830T135502Z`保存193258264字节custom dump、217856577字节当前运行目录、33271字节配置、184604385字节Redis RDB及当时Worker停机/pending/重复日志现场;同样完成840行`pg_restore --list`、52617项运行tar、63项配置tar和全部SHA-256验证。修复包`outputs/cmpp-preprod-protocol-flush-1a5063a-20260830T1357Z.tar.gz`为2617814字节,本地/服务器SHA-256均为`4131ffa5f1f26ef01ffa5146165b6c0865c743003befc839ec4a0ee2b59e88d0`且tar可读;旧运行目录为`/opt/cmpp-platform.previous-protocol-flush-20260830T135712Z`。
|
||||
- 修复发布后9670条Stream积压一次性完成持久化和ACK/XDEL,`gateway.protocol.logs`最终`长度=0/pending=0/lag=0`。失败窗口数据库中24340行对应9670个唯一eventId,精确识别14670条重复行;在第二份数据库/Redis恢复点保护下,只删除`2026-08-30 13:37:00`后同一eventId的第2条及以后记录,保留最早一条,最终为9670行/9670个唯一eventId,未触及短信、账务及其他日志。
|
||||
- 最终`.deployed-commit=1a5063a7c635280b912021c42c33a07c99f4c5dd`,95/95项migration;API、Send Worker、Submit Outbox、Gateway Callback、Protocol Log Worker、Gateway、Security Agent、MinIO、Nginx、PostgreSQL和Redis共11项均active,三项拆分服务均enabled。API、Callback、Gateway健康,9464/9465/9467/9468指标端点可用,Callback池`max=12,total=1,idle=1,waiting=0`,供应商连接9/9,数据库活动连接15/100,Submit Outbox为0;命令、结果、协议日志三条Stream均`pending=0/lag=0`,修复发布窗口8项服务error级journal均为空。
|
||||
- 首页、客户端登录、运营端登录及API健康从工作站直连均HTTP 200;实际资源仍为`index-C_Eutz1B.js`和`index-BB9q6lcg.css`,工作站与服务器SHA-256一致。Chrome只读导航该私网HTTP页面再次超时,因此不声称完成浏览器DOM/控制台验收。全程未发送、补发或重投短信,未修改余额、通道、客户或签名/引流业务配置。
|
||||
|
||||
Reference in New Issue
Block a user