项目

一般

简介

功能 #2192

网管测试YZMM2.0.12Pre1T2,baseservice未捕捉到三层进程退出动作的信息,导致最后的日志文件未转储

杨 凯11 个月 之前添加. 更新于 11 个月 之前.

状态:
已解决
优先级:
普通
指派给:
类别:
-
开始日期:
2024-09-26
计划完成日期:
% 完成:

0%

预期时间:
问题归属:
YZMM
发现问题版本:
Rel_2.1.15P
目标解决问题版本:
Rel_2.1.15P
FPGA板卡类型:
CPU类型:

描述

问题描述:
网管测试YZMM2.0.12Pre1T2,baseservice未捕捉到三层进程退出动作的信息,导致最后的日志文件未转储。
问题版本:
YZMM2.0.12Pre1T2+baseservice版本
备注:
未优化的话会导致最后最后一次tmp下的日志未转储的情况下,影响agent升级判断转储日志机制超时,此问题agent已做保护,baseservice再次优化进行双保护。


文件

baseservice停止.png (410 KB) baseservice停止.png 杨 凯, 2024-10-15 20:21
baseservice启动后验证结果.png (866 KB) baseservice启动后验证结果.png 杨 凯, 2024-10-15 20:21
tmp目录下日志存在.png (523 KB) tmp目录下日志存在.png 杨 凯, 2024-10-15 20:21
启动前验证结果.png (750 KB) 启动前验证结果.png 杨 凯, 2024-10-15 20:21
替换baseservice.png (128 KB) 替换baseservice.png 杨 凯, 2024-10-15 20:21

历史记录

#1

李 玮璇 更新于 11 个月 之前

目前转储逻辑:1、30秒定时转储已写完的日志文件(最新的一个不转,由30秒定时器驱动)
2、检测到对应进程停止,去转储所有日志(包括最新一个,由进程监控模块发消息驱动)
当baseService不在位导致没监测到进程退出而且还一直没有进程退出动作时,最后一个文件一直保留;
该场景就是在测试连续做下面三步时产生:
①卸载(运行中的三层和baseService一起卸载,baseService没有捕捉到退出动作,tmp日志最后一个保留)
②安装(不启动三层,没有退出动作,baseService不做最后一个日志文件的转储)
③升级(agent升级等待超时和前台网管等待超时时间一致,异步超时不合适导致升级超时)

针对该问题:
1、agent在卸载时会清理tmp目录的日志,升级时等待30s还有日志的情况下清理tmp日志;同时前台网管与agent修改合适的超时时间;——已完成
2、baseService增加启动时日志转储优化:baseService启动时,当对应进程停止时,做一次日志转储,转储旧的文件同时,处理最新的一个文件的时候,获取最新的一个文件的最后更新时间,如果是10秒前则把最新的一个文件也转储了,加快下次版本升级的进度
改动可能涉及结合进程监控模块和日志转储模块

#2

杨 杨乐 更新于 11 个月 之前

  • 状态新建 变更为 进行中
  • 问题归属 YZMM 已添加
  • 问题归属 已删除 (CU)
#3

杨 杨乐 更新于 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

#4

杨 凯 更新于 11 个月 之前

该问题已验证通过,如下截图。

导出 Atom PDF