一个十万行的 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 会导致用户误解,认为代码出错,而实际上并未执行用户代码。
➡️

继续阅读