【动态扩展平台】DEP新建字段,经常偶发找不到问题原创
金蝶云社区-得闲饮茶
得闲饮茶
11人赞赏了该文章 278次浏览 未经作者许可,禁止转载编辑于2023年09月26日 17:12:11

问题场景

        DEP扩展新建的字段,在方案启用的情况下,部分用户出现字段找不到的报错,需要重启DEP方案才能正常,过一段时间可能又出现相同的报错

类似异常信息

can't find column in table. bo:com.kingdee.eas.cp.bc.app.BizAccountOutBillEntry, prop:entryTicNumber

can't find column: person fullname: person.id,  bo :com.kingdee.eas.hr.emp.app.EmployeeContract

cannot find property: isEnable,  bo:com.kingdee.eas.fm.rpm.app.RPDMatchSetting

......

原理解析

        DEP扩展的元数据信息是保存在数据库,DEP方案启用后,由元数据引擎加载到内存中,每个实例上都有一份元数据缓存;当DEP方案启用或反启用,会清除当前实例的缓存,并通知同一个群集(管理控制台-群集控制器)中的其他实例清除缓存;当某个实例的缓存不一致,那登录在这个实例上的用户就会出现上述相关的报错,此时重启DEP方案清除缓存后重新加载就解决了。

问题分析定位:

        元数据缓存加载是在实例运行过程中,第一次使用这个元数据的时候,存在两种情况:

        A.DEP方案启用或反启用,清除缓存后第一次使用;B.服务启动后第一次使用

        要先分清楚哪种场景再定位问题,可以查询DEP方案启用或反启用的上机日志,判断哪种情况出现的缓存不一致

        查询上一次服务器重启时间报错时间里,条件【功能=动态扩展方案的上机日志,如果查到了数据,说明属于情况A,反之属于情况B

image.png

        情况A:在DEP启用或反启用,跨实例清除缓存时,出现缓存不一致,产品已有补丁修复,更新补丁即可

        各版本补丁号:8.0—PT164163    8.2—PT164375    8.5—PT163916    8.6.1—PT163643    8.8发版已修复

        情况B:通过报错用户登录实例(通过用户监控查询登录实例),收集该实例启动时的apusic日志,搜索是否出现以下相同的错误

image.png

报错原因是EAS的EJB容器尚未初始化,已经开始了一系列业务动作,从而导致DEP缓存加载失败

        容器启动顺序,是在配置文件apusic/domians/server*/config/server.xml中,正确配置如下:

image.png

        检查所有实例的server.xml文件,按照EAS、jportal、EASWeb、fileserver等顺序配置后,重启服务问题解决

赞 11