A subtle bug with Go's errgroup
9 months ago
- #Debugging
- #Programming
- #Go
- 作者在开发Kratos时遇到一个bug,该问题在代码合并前被测试用例捕获。
- 这个问题被精简成一个100行的独立密码验证程序。
- 密码以哈希值形式存储防止暴力破解,并通过errgroup实现并发任务以优化性能。
- 发现一个上下文过早取消的bug,导致密码泄露检查未能执行。
- 提出两种修复方案:在errgroup中运行HTTP检查,或避免上下文变量遮蔽。
- 作者强调必须仔细阅读API文档,理解技术细节中的注意事项。
- 该博文已开源,欢迎读者贡献代码或给予支持。