Skip to content

Commit 04d4d36

Browse files
authored
feat: add recover to goroutine to prevent unexpected panics (#226)
Notice, as we can't identify the root cause, this is just a temporary fix, which may cause further issues.
1 parent cf6e915 commit 04d4d36

3 files changed

Lines changed: 26 additions & 0 deletions

File tree

CHANGES.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ Release Notes.
88

99
* Support Windows plugin test.
1010
* Support Kafka reporter.
11+
* Add recover to goroutine to prevent unexpected panics.
1112

1213
#### Plugins
1314

plugins/core/reporter/cds_manager.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,11 @@ func (r *CDSManager) InitCDS(entity *Entity, cdsWatchers []AgentConfigChangeWatc
6565

6666
// fetch config
6767
go func() {
68+
defer func() {
69+
if err := recover(); err != nil {
70+
r.logger.Errorf("CDSManager InitCDS panic err %v", err)
71+
}
72+
}()
6873
for {
6974
switch r.connManager.GetConnectionStatus(r.serverAddr) {
7075
case ConnectionStatusShutdown:

plugins/core/reporter/grpc/grpc.go

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,11 @@ func (r *gRPCReporter) initSendPipeline() {
175175
return
176176
}
177177
go func() {
178+
defer func() {
179+
if err := recover(); err != nil {
180+
r.logger.Errorf("gRPCReporter initSendPipeline trace client Collect panic err %v", err)
181+
}
182+
}()
178183
StreamLoop:
179184
for {
180185
switch r.connManager.GetConnectionStatus(r.serverAddr) {
@@ -205,6 +210,11 @@ func (r *gRPCReporter) initSendPipeline() {
205210
}
206211
}()
207212
go func() {
213+
defer func() {
214+
if err := recover(); err != nil {
215+
r.logger.Errorf("gRPCReporter initSendPipeline metrics client CollectBatch panic err %v", err)
216+
}
217+
}()
208218
StreamLoop:
209219
for {
210220
switch r.connManager.GetConnectionStatus(r.serverAddr) {
@@ -236,6 +246,11 @@ func (r *gRPCReporter) initSendPipeline() {
236246
}
237247
}()
238248
go func() {
249+
defer func() {
250+
if err := recover(); err != nil {
251+
r.logger.Errorf("gRPCReporter initSendPipeline log client Collect panic err %v", err)
252+
}
253+
}()
239254
StreamLoop:
240255
for {
241256
switch r.connManager.GetConnectionStatus(r.serverAddr) {
@@ -303,6 +318,11 @@ func (r *gRPCReporter) check() {
303318
return
304319
}
305320
go func() {
321+
defer func() {
322+
if err := recover(); err != nil {
323+
r.logger.Errorf("gRPCReporter check panic err %v", err)
324+
}
325+
}()
306326
instancePropertiesSubmitted := false
307327
for {
308328
switch r.connManager.GetConnectionStatus(r.serverAddr) {

0 commit comments

Comments
 (0)