功能 #2192
网管测试YZMM2.0.12Pre1T2,baseservice未捕捉到三层进程退出动作的信息,导致最后的日志文件未转储
0%
描述
问题描述:
网管测试YZMM2.0.12Pre1T2,baseservice未捕捉到三层进程退出动作的信息,导致最后的日志文件未转储。
问题版本:
YZMM2.0.12Pre1T2+baseservice版本
备注:
未优化的话会导致最后最后一次tmp下的日志未转储的情况下,影响agent升级判断转储日志机制超时,此问题agent已做保护,baseservice再次优化进行双保护。
文件
历史记录
由 李 玮璇 更新于 11 个月 之前
目前转储逻辑:1、30秒定时转储已写完的日志文件(最新的一个不转,由30秒定时器驱动)
2、检测到对应进程停止,去转储所有日志(包括最新一个,由进程监控模块发消息驱动)
当baseService不在位导致没监测到进程退出而且还一直没有进程退出动作时,最后一个文件一直保留;
该场景就是在测试连续做下面三步时产生:
①卸载(运行中的三层和baseService一起卸载,baseService没有捕捉到退出动作,tmp日志最后一个保留)
②安装(不启动三层,没有退出动作,baseService不做最后一个日志文件的转储)
③升级(agent升级等待超时和前台网管等待超时时间一致,异步超时不合适导致升级超时)
针对该问题:
1、agent在卸载时会清理tmp目录的日志,升级时等待30s还有日志的情况下清理tmp日志;同时前台网管与agent修改合适的超时时间;——已完成
2、baseService增加启动时日志转储优化:baseService启动时,当对应进程停止时,做一次日志转储,转储旧的文件同时,处理最新的一个文件的时候,获取最新的一个文件的最后更新时间,如果是10秒前则把最新的一个文件也转储了,加快下次版本升级的进度
改动可能涉及结合进程监控模块和日志转储模块
由 杨 杨乐 更新于 11 个月 之前
- 状态 从 进行中 变更为 转测试
- 指派给 从 杨 杨乐 变更为 杨 凯
【问题原因】
①卸载时,三层和baseService一起被卸载,tmp路径下,会保留各个模块的最后一个日志
②安装时,三层没有启动;由于没有退出动作,导致baseService不转储最后一个日志文件
③升级时,gnb_agent会通过判断tmp路径下是否有日志,来判断是否转储完成;gnb_agent有30s的超时等待,由于最后一个日志一直存在,gnb_agent会触发超时;
现在的现状是:gnb_agent会在30s超时后,删除所有日志文件
【修改方案】
baseService启动时,也就是在上面的【安装】步骤,做三层是否运行的判断;如果三层都未启动,则转储tmp路径下的所有日志。
这样gnb_agent就不用等待30s超时了,达到快速升级的作用。
【回归方法和注意事项】
方法1.在测试前启动三层,可以按照之前卸载、安装和升级的顺序来复现问题,
方法2.首先启动三层保证tmp路径下有日志,2.关闭baseService 3.启动baseService;观察是否会转储/tmp下的日志
SHA-1: 4f68996405634bc8c5d85abcb200255248ce0faa
由 杨 凯 更新于 11 个月 之前
- 文件 baseservice启动后验证结果.png baseservice启动后验证结果.png 已添加
- 文件 baseservice停止.png baseservice停止.png 已添加
- 文件 tmp目录下日志存在.png tmp目录下日志存在.png 已添加
- 文件 启动前验证结果.png 启动前验证结果.png 已添加
- 文件 替换baseservice.png 替换baseservice.png 已添加
- 状态 从 转测试 变更为 已解决
该问题已验证通过,如下截图。