鹤顶红落进 ABAP 系统,会是什么样的故障
一张订单今天还能保存,明天偶尔报错,过几天却连相关的后台处理都开始失败。我们排查时,很容易盯住最后一次短转储,觉得问题就在报错的那一行。但有些故障早在报错之前就开始了。某段程序每运行一次,便把业务数据推离正确状态一点,直到后续流程再也无法承受。若借用《仙剑奇侠传 1》的物品来形容,这种故障颇有鹤顶红的味道。
**ABAP 没有名叫鹤顶红的内置语句或标准工具。**这个类比说的是损害方式。游戏资料中的鹤顶红属于持续生效的毒蛊,中毒者会随回合流逝反复损失生命值。放在企业系统里,最贴近的情形是一个反复执行的程序持续消耗额度、污染数据,或者让待处理事项不断积压。单看每次运行,程序可能都顺利结束;沿着时间轴观察,业务能力却在下降。
这里得把两种效果分开。MESSAGE的X类型或者RAISE SHORTDUMP可以令当前程序产生短转储,像一次突然倒下。持续出错的定时任务则更像每过一回合掉一次血。短转储也可能由长期积累的问题在临界点触发,但转储本身不是那个持续扣血的机制。SAP 对X类型消息和RAISE SHORTDUMP的说明,都指向程序终止与短转储这一即时结果。
想象我们的公司在订单处理系统里维护一张自建表,记录每个客户尚可使用的授信额度。夜间对账程序读取当天交易,扣除已使用额度。这项业务规则并没有问题,危险藏在重跑方式里。某天接口超时,调度平台重试了作业,程序又把同一批交易扣了一遍。作业日志显示两次执行均成功,数据库操作也没有报错,客户额度却比实际少了一截。后面几天,同样的重试继续发生。直到销售人员创建订单时,系统才报告额度不足。
这不是声称某个真实客户已经发生了上述事