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]

Reply via email to