This is an automated email from the ASF dual-hosted git repository. liuhongyu pushed a commit to branch fix/fix_transport in repository https://gitbox.apache.org/repos/asf/hertzbeat-collector-go.git
commit d8e386ef69c40451ee00e4fd97a7da7e6000787a Author: liuhy <[email protected]> AuthorDate: Sun Sep 21 22:12:22 2025 +0800 fix: Enhance event logging and improve shutdown handling in processors --- internal/transport/netty_client.go | 19 ++++++++++++++++++- internal/transport/processors.go | 24 +++++++++++++++++------- 2 files changed, 35 insertions(+), 8 deletions(-) diff --git a/internal/transport/netty_client.go b/internal/transport/netty_client.go index c96a61b..d598149 100644 --- a/internal/transport/netty_client.go +++ b/internal/transport/netty_client.go @@ -154,7 +154,24 @@ func (c *NettyClient) SetEventHandler(handler EventHandler) { } func (c *NettyClient) triggerEvent(eventType EventType, err error) { - log.Printf("Triggering event: %d, error: %v", eventType, err) + eventName := "" + switch eventType { + case EventConnected: + eventName = "Connected" + case EventDisconnected: + eventName = "Disconnected" + case EventConnectFailed: + eventName = "ConnectFailed" + default: + eventName = fmt.Sprintf("Unknown(%d)", eventType) + } + + if err != nil { + log.Printf("Triggering event: %s, error: %v", eventName, err) + } else { + log.Printf("Triggering event: %s", eventName) + } + if c.eventHandler != nil { c.eventHandler(Event{ Type: eventType, diff --git a/internal/transport/processors.go b/internal/transport/processors.go index 71120b0..8bd71e3 100644 --- a/internal/transport/processors.go +++ b/internal/transport/processors.go @@ -19,6 +19,8 @@ package transport import ( "fmt" + "log" + "time" pb "hertzbeat.apache.org/hertzbeat-collector-go/api" ) @@ -80,17 +82,25 @@ func NewGoOfflineProcessor(client *NettyClient) *GoOfflineProcessor { } func (p *GoOfflineProcessor) Process(msg *pb.Message) (*pb.Message, error) { - // Handle go offline message - shutdown the client - if p.client != nil { - // Stop heartbeat and close connection - p.client.Shutdown() - } - return &pb.Message{ + // Handle go offline message - first return response, then shutdown + // Create response first + response := &pb.Message{ Type: pb.MessageType_GO_OFFLINE, Direction: pb.Direction_RESPONSE, Identity: msg.Identity, Msg: []byte("offline ack"), - }, nil + } + + // Schedule shutdown after a brief delay to allow response to be sent + if p.client != nil { + go func() { + time.Sleep(100 * time.Millisecond) // Brief delay to ensure response is sent + log.Printf("Shutting down client as requested by manager") + p.client.Shutdown() + }() + } + + return response, nil } // GoCloseProcessor handles go close messages --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
