This is an automated email from the ASF dual-hosted git repository.

RongtongJin pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/rocketmq-clients.git


The following commit(s) were added to refs/heads/master by this push:
     new ec29fca8 [Go] Fix inverted hook status in Ack/DLQ methods (#1269)
ec29fca8 is described below

commit ec29fca80a9a6d2afe5af51c8f789e013221da7d
Author: guyinyou <[email protected]>
AuthorDate: Fri Jun 12 10:23:50 2026 +0800

    [Go] Fix inverted hook status in Ack/DLQ methods (#1269)
    
    The messageHookPointsStatus was incorrectly initialized to ERROR and
    set to OK when the response code was not OK, which is the opposite
    of the intended behavior. This affected three locations:
    - push_consumer.go: Ack()
    - push_consumer.go: ForwardMessageToDeadLetterQueue()
    - simple_consumer.go: Ack()
    
    Also set status to ERROR before early return on err != nil, so that
    the hook always reports the correct status on failure.
    
    Co-authored-by: guyinyou <[email protected]>
---
 golang/push_consumer.go   | 10 ++++++----
 golang/simple_consumer.go |  5 +++--
 2 files changed, 9 insertions(+), 6 deletions(-)

diff --git a/golang/push_consumer.go b/golang/push_consumer.go
index a7d1dce9..84dd548a 100644
--- a/golang/push_consumer.go
+++ b/golang/push_consumer.go
@@ -581,13 +581,14 @@ func (pc *defaultPushConsumer) Ack(ctx context.Context, 
messageView *MessageView
        resp, err := pc.ack0(ctx, messageView)
        duration := time.Since(watchTime)
 
-       messageHookPointsStatus := MessageHookPointsStatus_ERROR
+       messageHookPointsStatus := MessageHookPointsStatus_OK
        if err != nil {
+               messageHookPointsStatus = MessageHookPointsStatus_ERROR
                pc.cli.doAfter(MessageHookPoints_ACK, messageCommons, duration, 
messageHookPointsStatus)
                return err
        }
        if resp.GetStatus().GetCode() != v2.Code_OK {
-               messageHookPointsStatus = MessageHookPointsStatus_OK
+               messageHookPointsStatus = MessageHookPointsStatus_ERROR
        }
        pc.cli.doAfter(MessageHookPoints_ACK, messageCommons, duration, 
messageHookPointsStatus)
        return nil
@@ -632,13 +633,14 @@ func (pc *defaultPushConsumer) 
ForwardMessageToDeadLetterQueue(ctx context.Conte
        resp, err := pc.forwardMessageToDeadLetterQueue0(ctx, messageView)
        duration := time.Since(watchTime)
 
-       messageHookPointsStatus := MessageHookPointsStatus_ERROR
+       messageHookPointsStatus := MessageHookPointsStatus_OK
        if err != nil {
+               messageHookPointsStatus = MessageHookPointsStatus_ERROR
                pc.cli.doAfter(MessageHookPoints_FORWARD_TO_DLQ, 
messageCommons, duration, messageHookPointsStatus)
                return err
        }
        if resp.GetStatus().GetCode() != v2.Code_OK {
-               messageHookPointsStatus = MessageHookPointsStatus_OK
+               messageHookPointsStatus = MessageHookPointsStatus_ERROR
        }
        pc.cli.doAfter(MessageHookPoints_FORWARD_TO_DLQ, messageCommons, 
duration, messageHookPointsStatus)
        return nil
diff --git a/golang/simple_consumer.go b/golang/simple_consumer.go
index 4fa0b0fd..a159afea 100644
--- a/golang/simple_consumer.go
+++ b/golang/simple_consumer.go
@@ -449,14 +449,15 @@ func (sc *defaultSimpleConsumer) Ack(ctx context.Context, 
messageView *MessageVi
        request := sc.wrapAckMessageRequest(messageView)
        ctx = sc.cli.Sign(ctx)
        resp, err := sc.cli.clientManager.AckMessage(ctx, endpoints, request, 
sc.cli.opts.timeout)
-       messageHookPointsStatus := MessageHookPointsStatus_ERROR
+       messageHookPointsStatus := MessageHookPointsStatus_OK
        duration := time.Since(watchTime)
        if err != nil {
+               messageHookPointsStatus = MessageHookPointsStatus_ERROR
                sc.cli.doAfter(MessageHookPoints_ACK, messageCommons, duration, 
messageHookPointsStatus)
                return err
        }
        if resp.GetStatus().GetCode() != v2.Code_OK {
-               messageHookPointsStatus = MessageHookPointsStatus_OK
+               messageHookPointsStatus = MessageHookPointsStatus_ERROR
        }
        sc.cli.doAfter(MessageHookPoints_ACK, messageCommons, duration, 
messageHookPointsStatus)
        return nil

Reply via email to