已关闭
[Requirement|需求建议]: 软压缩代码逻辑优化 #983
GuoWenbo创建于 12 天前关闭于 7 天前
GuoWenbo
7 天前 评论:
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 的失败路径。


6 天前 添加了label:resolved
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(设计方案)
可以通过压缩后写入等方式解决