一个十万行的 trackback
💡
原文中文,约7500字,阅读约需18分钟。
📝
内容提要
介绍了服务发现系统缓存功能上线后出现的 bug,原因是缓存了 Exception 实例,而 raise Exception 操作会修改 Exception 的 traceback,导致每次 raise Exception 时 stacktrace 加深。解决方法是不缓存 Exception 实例,而是缓存错误信息。同时,介绍了 Python 中的异常处理机制。
🎯
关键要点
- 服务发现系统 prometheus-http-sd 的缓存功能上线后出现了 bug。
- bug 原因是缓存了 Exception 实例,导致每次 raise Exception 时 stacktrace 加深。
- 解决方法是不缓存 Exception 实例,而是缓存错误信息。
- Python 中的异常处理机制会在 raise Exception 时修改 traceback。
- 缓存 Exception 会导致用户误解,认为代码出错,而实际上并未执行用户代码。
➡️