我的解题之路: 开源社区

·

1 min read

最近测试的同事提出了一个问题:平台内嵌的grafana页面在切换不同的dashbord时,会经常出现弹窗错误,如下所示

grafana的版本是:v9.4.9

不地当测试在周会上反映这个问题的时候,负责监控面板的同事觉得这grafana的问题,解决不了,这个问题的影响面在于:因为grafana页面是内嵌于平台内的,弹窗就显得很突兀了。

弹窗的原因也很简单:因为之前的grafana页面获取数据+渲染需要较长的时间,切到下一个页面的时候,这人弹窗显示的却是上一个页面请求失败的报错……就确实不太合理

tl在晨会获知这一情况时,建议前端尝试一下能否通过修改grafana源码来解决这一问题,笔者觉得修改源码兹事体大,于是要求参与到这件事情中来。

根据笔者为数不多的前端经验,第一"感觉"是grafana有控制此弹弹窗的配置选项,寻求claude和bard的帮助,结果它们给出了许多误导性的建议,比如关于`disable_sanitize_html`配置的使用示例,我尝试多次后放弃了,但大概率是我提供的方式不对。第二步,开启搜索大法,在grafana社区找到了以下相似的issue

https://github.com/grafana/grafana/issues/71932

这个issue很值得学习,非常详尽

"I understand that these requests are handled asynchronously, and what actually triggers the templating error is a failed fetch from a previous attempt (for example, if it was cancelled by the user).……"

根据issue也找到了相应的pr

https://github.com/grafana/grafana/pull/74712

关键代码改动:

        // we don't care about still showing toasts after refreshing
        // https://github.com/grafana/grafana/issues/71932
        showing: false,

从发现issue到等待该pr被merge,大概间隔了一周的样子,于是在那个神清气爽的清晨,早早来到公司的笔者,打开了github,发现了grafana v10.2.0这个修复版本,在开发环境,从v9.4.9切换到v10.2.0,自行测试一番,发现再无弹窗报错,于是反馈给测试的同事,让其帮忙验证,此事就此解决。

总结

  1. 提问:问题描述,包括现象,造成的影响范围,以及期望的结果,是不是很熟悉,像是一个工整的提bug单中需要包含的内容

  2. 定位:包括但不限于可稳定复现的条件、场景。社区的issue,也是非常重要的一环,可以帮助我们定位到底是使用姿势的问题,还是其它人有遇到的问题

  3. 解决方案:grafana的使用对于笔者所在的团队来说,是一个边缘业务,这就决定了不可能耗费许多精力去“优化”我们所遇到的问题,所以取之于开源,自然也要借助开源解决问题,

  4. 测试:上面我提到的解决方案:从9.x升级到10.x,跨了一个大版本,虽然我自行进行了测试,但并不能覆盖升级带来的其它风险,测试自然必不可少,完整的测试,可以提高版本升级的信心。