You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@rocketmq.apache.org by ji...@apache.org on 2026/06/12 02:23:55 UTC

(rocketmq-clients) branch master updated: [Go] Fix inverted hook status in Ack/DLQ methods (#1269)

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 <36...@users.noreply.github.com>
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 <gu...@alibaba-inc.com>
---
 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