Skip to content

Commit d8e386e

Browse files
committed
fix: Enhance event logging and improve shutdown handling in processors
1 parent d0c9a9c commit d8e386e

File tree

2 files changed

+35
-8
lines changed

2 files changed

+35
-8
lines changed

internal/transport/netty_client.go

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,24 @@ func (c *NettyClient) SetEventHandler(handler EventHandler) {
154154
}
155155

156156
func (c *NettyClient) triggerEvent(eventType EventType, err error) {
157-
log.Printf("Triggering event: %d, error: %v", eventType, err)
157+
eventName := ""
158+
switch eventType {
159+
case EventConnected:
160+
eventName = "Connected"
161+
case EventDisconnected:
162+
eventName = "Disconnected"
163+
case EventConnectFailed:
164+
eventName = "ConnectFailed"
165+
default:
166+
eventName = fmt.Sprintf("Unknown(%d)", eventType)
167+
}
168+
169+
if err != nil {
170+
log.Printf("Triggering event: %s, error: %v", eventName, err)
171+
} else {
172+
log.Printf("Triggering event: %s", eventName)
173+
}
174+
158175
if c.eventHandler != nil {
159176
c.eventHandler(Event{
160177
Type: eventType,

internal/transport/processors.go

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ package transport
1919

2020
import (
2121
"fmt"
22+
"log"
23+
"time"
2224

2325
pb "hertzbeat.apache.org/hertzbeat-collector-go/api"
2426
)
@@ -80,17 +82,25 @@ func NewGoOfflineProcessor(client *NettyClient) *GoOfflineProcessor {
8082
}
8183

8284
func (p *GoOfflineProcessor) Process(msg *pb.Message) (*pb.Message, error) {
83-
// Handle go offline message - shutdown the client
84-
if p.client != nil {
85-
// Stop heartbeat and close connection
86-
p.client.Shutdown()
87-
}
88-
return &pb.Message{
85+
// Handle go offline message - first return response, then shutdown
86+
// Create response first
87+
response := &pb.Message{
8988
Type: pb.MessageType_GO_OFFLINE,
9089
Direction: pb.Direction_RESPONSE,
9190
Identity: msg.Identity,
9291
Msg: []byte("offline ack"),
93-
}, nil
92+
}
93+
94+
// Schedule shutdown after a brief delay to allow response to be sent
95+
if p.client != nil {
96+
go func() {
97+
time.Sleep(100 * time.Millisecond) // Brief delay to ensure response is sent
98+
log.Printf("Shutting down client as requested by manager")
99+
p.client.Shutdown()
100+
}()
101+
}
102+
103+
return response, nil
94104
}
95105

96106
// GoCloseProcessor handles go close messages

0 commit comments

Comments
 (0)