首页 > 解决方案 > 模块 CIPPPFN:HA100 中发生多线程 PUPL SQL 错误代码 000099997 - UPDATE TCTL

问题描述

我们在 CC&B 2.6 上。我们在 8 个线程上运行基本流程PUPL Payment Upload 。有时,进程在线程上失败。其他线程成功运行。当我们重新启动作业时,该线程恢复并成功完成。

显示的错误消息是:SQL 错误代码 000099997 发生在模块 CIPPUPFN:HA100 - UPDATE TCTL

有没有人遇到过这个?

标签: oracle-ccb

解决方案


此问题可能是由处理会话和 ThreadlocalStorage 对象交互的产品中的错误引起的。一些与会话相关的状态,例如 DBLocalCobolSQLProcessBackend 实例的映射存储在 ThreadlocalStorage 上,而它应该在 FrameworkSession 上。

如果另一个会话临时“推送”到 ThreadlocalStorage(例如通过 SessionExecutable>>doInReadOnlySession()),则原始会话被搁置,但 DBLocalCobolSQLProcessBackend 的映射被不正确地破坏,并且在原始会话恢复时无法恢复。

如果从 COBOL 到 Java 的后续与 db 相关的调用需要访问 DBLocalCobolSQLProcessBackend 的实例,则缺少所需的实例并创建了一个新的空实例,这会导致下游代码中出现 NPE。


推荐阅读