已关闭
[Requirement|需求建议]: 软压缩代码逻辑优化 #983
GuoWenbo创建于  12 天前关闭于  7 天前
GuoWenbo成员
12 天前 创建

Thanks for sending an requirement! Please fill in the following template to help quickly solve your problem.

Backgroud(背景信息)

slogd进程负责将slog.so等客户端上报的日志进行分类落盘,在pegasus形态上还要进行压缩。
这里分为硬件压缩和软件压缩两种压缩方式,而代码逻辑又分成落盘后压缩、压缩后落盘两种。
目前发现在mc62cm12a形态下,如果磁盘空间满了,会导致压缩文件写入不完整(压缩格式损坏),即使后续空间充足继续写入,文件内容也无法恢复,会持续写入乱码

Origin(信息来源)

rts测试团队

Benefit / Necessity (价值/作用)

解决磁盘满场景下压缩格式损坏,导致后续日志无法正常落盘的问题

Design(设计方案)

可以通过压缩后写入等方式解决

likedislike
GGuoWenbo成员
12 天前 添加了label:requirement
GGuoWenbo成员
12 天前 将 GuoWenbo 设为负责人
GGuoWenbo成员
12 天前 关联了pull request:fix: 软压缩代码逻辑优化 (#983)
GuoWenbo成员
7 天前 评论:
  • 主修复 LogAgentWriteDataToFile():
    • 打开文件后以 lseek(fd, 0, SEEK_END) 记录写入前文件偏移 origSize(O_APPEND 下即写入起点);
    • ToolWrite 失败或部分写入时,ftruncate(fd, origSize) 将文件回滚到写入前大小,再关闭 fd 并返回 NOK;
    • 效果:磁盘满时丢弃当前日志条目,.gz 文件始终为完整 gzip member 串联;空间恢复后继续写入均可正常解压。明文 .log 路径同样受益(不再留半条日志)。
  • 次修复 SoftwareCompressFile():将 GzCloseFile() 返回值并入 err 判断,gzclose 失败 → 走 unlink outfile、保留原 .log 的失败路径。
likedislike
GGuoWenbo成员
7 天前 issue状态由 进行中 改变为 已解决
GGuoWenbo成员
7 天前 关闭了 issue
CANN-robotCANN-robot成员
6 天前 添加了label:resolved