Node.js 中 stream.pipeline 在错误处理上的一个隐蔽陷阱
用 Node.js 写文件处理或 HTTP 代理逻辑时,stream.pipeline 基本是取代 .pipe() 的标准做法,因为它能自动销毁源和目标流,避免文件描述符泄漏。但最近在一个日志转发服务里踩了个坑:调用 pipeline 后,源流报错时目标流确实被销毁了,可下游的 error 事件偶尔会触发两次,导致重试逻辑被执行两遍,把同一批数据重复写入了下游队列。排查后发现,问题出在 pipeline 的回调与流自身 error 事件的竞争条件上——当源流在 pipeline 内部...