alibaba / ilogtail

Fast and Lightweight Observability Data Collector
https://ilogtail.gitbook.io/ilogtail-docs
Apache License 2.0
1.71k stars 384 forks source link

Fixed an issue where the pipeline would get stuck during configuration changes. #1759

Closed Takuka0311 closed 6 days ago

Takuka0311 commented 6 days ago

现象

当前main分支编译出的ilogtail,当满足:

  1. 运行时间较长
  2. 配置中存在go pipeline

的条件时,如果变更配置,会导致流水线卡死

原因

根本原因:go向c++ flusher发送自监控数据会失败,发送队列不可用。

为什么会导致卡死:当运行了足够长时间,自监控go pipeline的数据因为一直发不出去,堵塞到aggregator时,进行配置变更,会卡死在自监控go pipeline的aggregator stop处。这里有一个循环会一直等待数据能发送出去,但由于下游flusher发送不成功,导致整个循环退不出、进而导致死循环卡住。

代码改动

之前的PR https://github.com/alibaba/ilogtail/pull/1709 已经尝试修复了这个问题,但是有一个地方的返回值错了,导致修复没有成功