一个测试用例把连接池卡死 30 秒:SQLite 连接池 max_size=1 下的重入自锁复盘上个月我们的桌面客服工具在 CI 上跑集成测试,套件末尾平白多出 30 秒的空转,本地复现时整个测试进程直接挂起,既不报错也不退出。排查了两天,最后发现问题不出在数据库本身,而出在我们自己封装的那个小小的连接池上:测试用例先从池里攥走一条连接做断言,然后在持锁期间调用了一个"内部还要再取连接"的公共函数。连接池上限是 1,同线程重入,第二次取连接等满 30 秒超时。这篇复盘把完整过程写下来,包括两次误判、三处修复和一条附带踩到的并发测试污染坑。 ## 事故现场:CI 日志尾部多出来的 30 秒### 现象