TSeer
TSeer copied to clipboard
Agent 管理工具未更新TSeerServer缓存,下载的 agent 包是老的
问题现象:
由于需要部署的 agent 机器 gcc 版本较低,原来生成的 TseerAgent 所依赖的libstdc++.so版本较低无法使用,因此更新 TseerAgent 的编译选项,静态链接 libstdc++.a 重新生成 bin 文件,手动验证可以使用之后:
- 在管理平台->发布包管理中将老的包删除
- 上传新编译的包
- 重新生成命令,在目标机器执行,下载包并安装
此时问题出现,下载的包仍然是老的(对比 bin 文件 md5 可知)。
问题排查:
起初以为是上传覆盖未成功,但搜索文件发现,在 TseerServer/data/目录下其实新老包都存在,说明上传并没有问题。问题出现在获取的时候,没有拿到最新的包。于是将老的包从 data 目录下删除,在目标机器清理环境并重新下载 agent,然而发现下载的仍然是老的包。在更大范围搜索并没有老的包存在,于是查看脚本,发现是从 TseerServer下载(起初以为是resin 上的 web 项目在管理),于是猜测文件被缓存了,重启 TSeerServer,重新下载,生效,问题解决。
搜索代码,TSeerAgent 这个包缓存的逻辑应该是封装起来了,没有明显看到,但从 installscript.tgz 的处理方式来看,很可能是读入缓存后就再未做过更新,因此即便在 web 平台删除,重新上传 agent 包,下载的时候仍然还是老的包。
需修改:
- web 管理平台上操作 TseerAgent 的包之后,TSeerServer 缓存的文件需同步更新
谢谢反馈; 应该是tseerserver做了缓存,这里我看下,缓存需要有强制刷新。