You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@seata.apache.org by "everfid-ever (via GitHub)" <gi...@apache.org> on 2026/03/20 09:18:32 UTC

[PR] fix: support RM delete undo log request [incubator-seata-go]

everfid-ever opened a new pull request, #1074:
URL: https://github.com/apache/incubator-seata-go/pull/1074

   Fixes https://github.com/apache/incubator-seata-go/issues/1016 Codec error when TC server sends UndoLogDeleteRequest (type 111)
   
   What does this PR do?
   This PR fixes a critical codec error that occurs when seata-go clients communicate with Seata TC server v1.8.0+. The TC server periodically sends UndoLogDeleteRequest messages (message type 111) to clean up old undo log records, but seata-go was missing the necessary codec and processor to handle these messages, causing the client to fail after 2-3 minutes of operation.
   
   Problem: When seata-go clients run for approximately 2-3 minutes, they encounter codec errors because the TC server sends TYPE_RM_DELETE_UNDOLOG (type code 111) messages, but seata-go doesn't have a registered codec to decode this message type.
   
   Impact: This causes seata-go clients to fail during normal operation with Seata TC server v1.8.0+, making the client unstable for production use.
   
   What changes in this PR?
   
   Added UndoLogDeleteRequest message structure
   File: pkg/protocol/message/request_message.go
   Added UndoLogDeleteRequest struct with fields: ResourceId (string), SaveDays (int16), BranchType (BranchType)
   Implemented GetTypeCode() method returning MessageTypeRmDeleteUndolog
   Implemented codec for UndoLogDeleteRequest
   File: pkg/protocol/codec/undolog_delete_req_codec.go
   Created UndoLogDeleteRequestCodec with Encode(), Decode(), and GetMessageType() methods
   Properly handles serialization/deserialization of all fields including the int16 SaveDays field
   Registered codec in codec manager
   File: pkg/protocol/codec/codec.go
   Registered UndoLogDeleteRequestCodec in the Init() function
   Implemented message processor
   File: pkg/remoting/processor/client/rm_delete_undolog_processor.go
   Created rmDeleteUndoLogProcessor to handle incoming undo log delete requests
   Added initDeleteUndoLog() function to register the processor
   Currently logs the request (actual undo log deletion logic to be implemented later)
   Integrated processor registration
   File: pkg/remoting/processor/client/init.go
   Added initDeleteUndoLog() call to RegisterProcessor() function
   Comprehensive test coverage
   Files: undolog_delete_req_codec_test.go, rm_delete_undolog_processor_test.go
   Added unit tests for codec encode/decode functionality
   Added integration tests for processor
   Added edge case tests and benchmarks
   Test coverage includes: normal cases, empty values, boundary values, and round-trip encoding/decoding


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@seata.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@seata.apache.org
For additional commands, e-mail: notifications-help@seata.apache.org


Re: [PR] fix: support RM delete undo log request [incubator-seata-go]

Posted by "Copilot (via GitHub)" <gi...@apache.org>.
Copilot commented on code in PR #1074:
URL: https://github.com/apache/incubator-seata-go/pull/1074#discussion_r2986813198


##########
pkg/protocol/codec/undolog_delete_req_codec.go:
##########
@@ -0,0 +1,58 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package codec
+
+import (
+	"seata.apache.org/seata-go/v2/pkg/protocol/branch"
+	"seata.apache.org/seata-go/v2/pkg/protocol/message"
+	"seata.apache.org/seata-go/v2/pkg/util/bytes"
+	"seata.apache.org/seata-go/v2/pkg/util/log"
+)
+
+type UndoLogDeleteRequestCodec struct{}
+
+func (u *UndoLogDeleteRequestCodec) Decode(in []byte) interface{} {
+	data := message.UndoLogDeleteRequest{}
+	buf := bytes.NewByteBuffer(in)
+
+	data.ResourceId = bytes.ReadString16Length(buf)
+	saveDays, err := buf.ReadUint16()
+	if err != nil {
+		log.Errorf("failed to read SaveDays: %v", err)
+		return data
+	}
+	data.SaveDays = int16(saveDays)
+	data.BranchType = branch.BranchType(bytes.ReadByte(buf))
+

Review Comment:
   On decode failure (`ReadUint16` error), the codec logs but still returns a non-nil `UndoLogDeleteRequest` with default/partial fields. That can cause downstream processors to run with corrupted data as if decoding succeeded. Consider returning `nil` (so the message is rejected) or otherwise preventing further processing when decoding fails.



##########
pkg/remoting/processor/client/rm_delete_undolog_processor.go:
##########
@@ -0,0 +1,50 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package client
+
+import (
+	"context"
+	"fmt"
+
+	"seata.apache.org/seata-go/v2/pkg/protocol/message"
+	"seata.apache.org/seata-go/v2/pkg/remoting/getty"
+	"seata.apache.org/seata-go/v2/pkg/util/log"
+)
+
+func initDeleteUndoLog() {
+	rmDeleteUndoLogProcessor := &rmDeleteUndoLogProcessor{}
+	getty.GetGettyClientHandlerInstance().RegisterProcessor(message.MessageTypeRmDeleteUndolog, rmDeleteUndoLogProcessor)
+}
+
+type rmDeleteUndoLogProcessor struct{}
+
+func (r *rmDeleteUndoLogProcessor) Process(ctx context.Context, rpcMessage message.RpcMessage) error {
+	req, ok := rpcMessage.Body.(message.UndoLogDeleteRequest)
+	if !ok {
+		return fmt.Errorf("invalid message body type: %T", rpcMessage.Body)

Review Comment:
   `Process` returns an error when the body type is unexpected, but `gettyClientHandler.OnMessage` ignores the returned error (it doesn't log or propagate it). This means type-mismatch failures will be silent. Please log the error (or handle it in a way that surfaces it) before returning so it isn't lost at runtime.
   ```suggestion
   		err := fmt.Errorf("invalid message body type: %T, expected message.UndoLogDeleteRequest", rpcMessage.Body)
   		log.Errorf("rmDeleteUndoLogProcessor.Process: %v", err)
   		return err
   ```



##########
pkg/remoting/processor/client/rm_delete_undolog_processor_test.go:
##########
@@ -0,0 +1,240 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package client
+
+import (
+	"context"
+	"testing"
+
+	"github.com/stretchr/testify/assert"
+	"seata.apache.org/seata-go/v2/pkg/protocol/branch"
+	"seata.apache.org/seata-go/v2/pkg/protocol/message"
+	"seata.apache.org/seata-go/v2/pkg/remoting/getty"
+)
+
+func TestRmDeleteUndoLogProcessor_Process(t *testing.T) {
+	processor := &rmDeleteUndoLogProcessor{}
+
+	tests := []struct {
+		name       string
+		rpcMessage message.RpcMessage
+		wantErr    bool
+	}{
+		{
+			name: "process normal undo log delete request",
+			rpcMessage: message.RpcMessage{
+				ID:   1,
+				Type: message.GettyRequestTypeRequestSync,
+				Body: message.UndoLogDeleteRequest{
+					ResourceId: "jdbc:mysql://localhost:3306/seata",
+					SaveDays:   7,
+					BranchType: branch.BranchTypeAT,
+				},
+			},
+			wantErr: false,
+		},
+		{
+			name: "process undo log delete request with empty resource id",
+			rpcMessage: message.RpcMessage{
+				ID:   2,
+				Type: message.GettyRequestTypeRequestSync,
+				Body: message.UndoLogDeleteRequest{
+					ResourceId: "",
+					SaveDays:   10,
+					BranchType: branch.BranchTypeAT,
+				},
+			},
+			wantErr: false,
+		},
+		{
+			name: "process undo log delete request with zero save days",
+			rpcMessage: message.RpcMessage{
+				ID:   3,
+				Type: message.GettyRequestTypeRequestSync,
+				Body: message.UndoLogDeleteRequest{
+					ResourceId: "test-resource",
+					SaveDays:   0,
+					BranchType: branch.BranchTypeAT,
+				},
+			},
+			wantErr: false,
+		},
+		{
+			name: "process with oneway request type",
+			rpcMessage: message.RpcMessage{
+				ID:   4,
+				Type: message.GettyRequestTypeRequestOneway,
+				Body: message.UndoLogDeleteRequest{
+					ResourceId: "test-resource",
+					SaveDays:   7,
+					BranchType: branch.BranchTypeAT,
+				},
+			},
+			wantErr: false,
+		},
+	}
+
+	for _, tt := range tests {
+		t.Run(tt.name, func(t *testing.T) {
+			err := processor.Process(context.Background(), tt.rpcMessage)
+			if tt.wantErr {
+				assert.Error(t, err)
+			} else {
+				assert.NoError(t, err)
+			}
+		})
+	}
+}
+
+func TestRmDeleteUndoLogProcessor_ProcessWithContext(t *testing.T) {
+	processor := &rmDeleteUndoLogProcessor{}
+
+	t.Run("background context", func(t *testing.T) {
+		err := processor.Process(context.Background(), message.RpcMessage{
+			ID:   1,
+			Type: message.GettyRequestTypeRequestSync,
+			Body: message.UndoLogDeleteRequest{
+				ResourceId: "test-resource-1",
+				SaveDays:   7,
+				BranchType: branch.BranchTypeAT,
+			},
+		})
+		assert.NoError(t, err)
+	})
+
+	t.Run("canceled context should be handled gracefully", func(t *testing.T) {
+		ctx, cancel := context.WithCancel(context.Background())
+		cancel() // cancel immediately
+		err := processor.Process(ctx, message.RpcMessage{
+			ID:   2,
+			Type: message.GettyRequestTypeRequestSync,
+			Body: message.UndoLogDeleteRequest{
+				ResourceId: "test-resource-2",
+				SaveDays:   7,
+				BranchType: branch.BranchTypeAT,
+			},
+		})
+		assert.NoError(t, err, "current impl does not use ctx; update when deletion logic is added")
+	})
+}
+
+func TestInitDeleteUndoLog(t *testing.T) {
+	getty.GetGettyClientHandlerInstance()
+
+	assert.NotPanics(t, func() {
+		initDeleteUndoLog()
+	}, "initDeleteUndoLog should not panic")
+}
+
+func TestRmDeleteUndoLogProcessor_Integration(t *testing.T) {
+	RegisterProcessor()
+
+	processor := &rmDeleteUndoLogProcessor{}
+
+	err := processor.Process(context.Background(), message.RpcMessage{
+		ID:    100,
+		Type:  message.GettyRequestTypeRequestSync,
+		Codec: 1,
+		Body: message.UndoLogDeleteRequest{

Review Comment:
   This test hard-codes `Codec: 1`. Using `byte(codec.CodecTypeSeata)` (or the appropriate constant) would make the intent clearer and avoid coupling the test to the numeric value of the enum.



##########
pkg/remoting/processor/client/rm_delete_undolog_processor_test.go:
##########
@@ -0,0 +1,240 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package client
+
+import (
+	"context"
+	"testing"
+
+	"github.com/stretchr/testify/assert"
+	"seata.apache.org/seata-go/v2/pkg/protocol/branch"
+	"seata.apache.org/seata-go/v2/pkg/protocol/message"
+	"seata.apache.org/seata-go/v2/pkg/remoting/getty"
+)
+
+func TestRmDeleteUndoLogProcessor_Process(t *testing.T) {
+	processor := &rmDeleteUndoLogProcessor{}
+
+	tests := []struct {
+		name       string
+		rpcMessage message.RpcMessage
+		wantErr    bool
+	}{
+		{
+			name: "process normal undo log delete request",
+			rpcMessage: message.RpcMessage{
+				ID:   1,
+				Type: message.GettyRequestTypeRequestSync,
+				Body: message.UndoLogDeleteRequest{
+					ResourceId: "jdbc:mysql://localhost:3306/seata",
+					SaveDays:   7,
+					BranchType: branch.BranchTypeAT,
+				},
+			},
+			wantErr: false,
+		},
+		{
+			name: "process undo log delete request with empty resource id",
+			rpcMessage: message.RpcMessage{
+				ID:   2,
+				Type: message.GettyRequestTypeRequestSync,
+				Body: message.UndoLogDeleteRequest{
+					ResourceId: "",
+					SaveDays:   10,
+					BranchType: branch.BranchTypeAT,
+				},
+			},
+			wantErr: false,
+		},
+		{
+			name: "process undo log delete request with zero save days",
+			rpcMessage: message.RpcMessage{
+				ID:   3,
+				Type: message.GettyRequestTypeRequestSync,
+				Body: message.UndoLogDeleteRequest{
+					ResourceId: "test-resource",
+					SaveDays:   0,
+					BranchType: branch.BranchTypeAT,
+				},
+			},
+			wantErr: false,
+		},
+		{
+			name: "process with oneway request type",
+			rpcMessage: message.RpcMessage{
+				ID:   4,
+				Type: message.GettyRequestTypeRequestOneway,
+				Body: message.UndoLogDeleteRequest{
+					ResourceId: "test-resource",
+					SaveDays:   7,
+					BranchType: branch.BranchTypeAT,
+				},
+			},
+			wantErr: false,
+		},
+	}
+
+	for _, tt := range tests {
+		t.Run(tt.name, func(t *testing.T) {
+			err := processor.Process(context.Background(), tt.rpcMessage)
+			if tt.wantErr {
+				assert.Error(t, err)
+			} else {
+				assert.NoError(t, err)
+			}
+		})
+	}
+}
+
+func TestRmDeleteUndoLogProcessor_ProcessWithContext(t *testing.T) {
+	processor := &rmDeleteUndoLogProcessor{}
+
+	t.Run("background context", func(t *testing.T) {
+		err := processor.Process(context.Background(), message.RpcMessage{
+			ID:   1,
+			Type: message.GettyRequestTypeRequestSync,
+			Body: message.UndoLogDeleteRequest{
+				ResourceId: "test-resource-1",
+				SaveDays:   7,
+				BranchType: branch.BranchTypeAT,
+			},
+		})
+		assert.NoError(t, err)
+	})
+
+	t.Run("canceled context should be handled gracefully", func(t *testing.T) {
+		ctx, cancel := context.WithCancel(context.Background())
+		cancel() // cancel immediately
+		err := processor.Process(ctx, message.RpcMessage{
+			ID:   2,
+			Type: message.GettyRequestTypeRequestSync,
+			Body: message.UndoLogDeleteRequest{
+				ResourceId: "test-resource-2",
+				SaveDays:   7,
+				BranchType: branch.BranchTypeAT,
+			},
+		})
+		assert.NoError(t, err, "current impl does not use ctx; update when deletion logic is added")
+	})
+}
+
+func TestInitDeleteUndoLog(t *testing.T) {
+	getty.GetGettyClientHandlerInstance()
+
+	assert.NotPanics(t, func() {
+		initDeleteUndoLog()
+	}, "initDeleteUndoLog should not panic")
+}
+
+func TestRmDeleteUndoLogProcessor_Integration(t *testing.T) {
+	RegisterProcessor()
+
+	processor := &rmDeleteUndoLogProcessor{}
+
+	err := processor.Process(context.Background(), message.RpcMessage{
+		ID:    100,
+		Type:  message.GettyRequestTypeRequestSync,
+		Codec: 1,
+		Body: message.UndoLogDeleteRequest{
+			ResourceId: "jdbc:mysql://127.0.0.1:3306/seata_test",
+			SaveDays:   7,
+			BranchType: branch.BranchTypeAT,
+		},
+	})
+	assert.NoError(t, err)
+}

Review Comment:
   `TestRmDeleteUndoLogProcessor_Integration` doesn't actually exercise the processor registration/dispatch path (it instantiates the processor directly and calls `Process`). Either rename this to reflect it's a unit test, or extend it to validate that a registered processor is invoked via the getty handler when a `MessageTypeRmDeleteUndolog` message is received.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@seata.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@seata.apache.org
For additional commands, e-mail: notifications-help@seata.apache.org


Re: [PR] fix: support RM delete undo log request [incubator-seata-go]

Posted by "flypiggyNo3 (via GitHub)" <gi...@apache.org>.
flypiggyNo3 commented on PR #1074:
URL: https://github.com/apache/incubator-seata-go/pull/1074#issuecomment-4147979013

   plz reply comments


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@seata.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@seata.apache.org
For additional commands, e-mail: notifications-help@seata.apache.org


Re: [PR] fix: support RM delete undo log request [incubator-seata-go]

Posted by "AlexStocks (via GitHub)" <gi...@apache.org>.
AlexStocks commented on code in PR #1074:
URL: https://github.com/apache/incubator-seata-go/pull/1074#discussion_r2990518170


##########
pkg/remoting/processor/client/rm_delete_undolog_processor.go:
##########
@@ -0,0 +1,50 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package client
+
+import (
+	"context"
+	"fmt"
+
+	"seata.apache.org/seata-go/v2/pkg/protocol/message"
+	"seata.apache.org/seata-go/v2/pkg/remoting/getty"
+	"seata.apache.org/seata-go/v2/pkg/util/log"
+)
+
+func initDeleteUndoLog() {
+	rmDeleteUndoLogProcessor := &rmDeleteUndoLogProcessor{}
+	getty.GetGettyClientHandlerInstance().RegisterProcessor(message.MessageTypeRmDeleteUndolog, rmDeleteUndoLogProcessor)
+}
+
+type rmDeleteUndoLogProcessor struct{}
+
+func (r *rmDeleteUndoLogProcessor) Process(ctx context.Context, rpcMessage message.RpcMessage) error {
+	req, ok := rpcMessage.Body.(message.UndoLogDeleteRequest)
+	if !ok {
+		return fmt.Errorf("invalid message body type: %T", rpcMessage.Body)
+	}
+
+	log.Infof("Received undo log delete request: resourceId=%s, saveDays=%d, branchType=%v",
+		req.ResourceId, req.SaveDays, req.BranchType)
+
+	// TODO: Implement actual undo log deletion logic here

Review Comment:
   [P1] PR 标题写的是“support RM delete undo log request”,但这里收到请求后只打日志然后直接 `return nil`,真正的 undo_log 删除逻辑完全没有落地。TC 把请求当成 one-way 发过来后,RM 这边会表现成“处理成功”,实际旧 undo_log 一条都不会删,功能语义和提交标题不一致。建议至少把删除入口接到现有 undo_log 清理实现上;如果这次只打算先接协议,应该显式返回未实现错误并把 PR 范围缩小。



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@seata.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@seata.apache.org
For additional commands, e-mail: notifications-help@seata.apache.org


Re: [PR] fix: support RM delete undo log request [incubator-seata-go]

Posted by "codecov-commenter (via GitHub)" <gi...@apache.org>.
codecov-commenter commented on PR #1074:
URL: https://github.com/apache/incubator-seata-go/pull/1074#issuecomment-4096789212

   ## [Codecov](https://app.codecov.io/gh/apache/incubator-seata-go/pull/1074?dropdown=coverage&src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) Report
   :x: Patch coverage is `84.37500%` with `5 lines` in your changes missing coverage. Please review.
   :white_check_mark: Project coverage is 57.52%. Comparing base ([`a93f0ae`](https://app.codecov.io/gh/apache/incubator-seata-go/commit/a93f0ae4bdebc1dd62adc74782a3a0db13ca4215?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache)) to head ([`2258b3d`](https://app.codecov.io/gh/apache/incubator-seata-go/commit/2258b3d465114de656439a12f5c9452f4eff314f?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache)).
   
   | [Files with missing lines](https://app.codecov.io/gh/apache/incubator-seata-go/pull/1074?dropdown=coverage&src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | Patch % | Lines |
   |---|---|---|
   | [pkg/protocol/codec/undolog\_delete\_req\_codec.go](https://app.codecov.io/gh/apache/incubator-seata-go/pull/1074?src=pr&el=tree&filepath=pkg%2Fprotocol%2Fcodec%2Fundolog_delete_req_codec.go&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache#diff-cGtnL3Byb3RvY29sL2NvZGVjL3VuZG9sb2dfZGVsZXRlX3JlcV9jb2RlYy5nbw==) | 85.00% | [2 Missing and 1 partial :warning: ](https://app.codecov.io/gh/apache/incubator-seata-go/pull/1074?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) |
   | [...ng/processor/client/rm\_delete\_undolog\_processor.go](https://app.codecov.io/gh/apache/incubator-seata-go/pull/1074?src=pr&el=tree&filepath=pkg%2Fremoting%2Fprocessor%2Fclient%2Frm_delete_undolog_processor.go&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache#diff-cGtnL3JlbW90aW5nL3Byb2Nlc3Nvci9jbGllbnQvcm1fZGVsZXRlX3VuZG9sb2dfcHJvY2Vzc29yLmdv) | 80.00% | [1 Missing and 1 partial :warning: ](https://app.codecov.io/gh/apache/incubator-seata-go/pull/1074?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) |
   
   <details><summary>Additional details and impacted files</summary>
   
   
   
   ```diff
   @@            Coverage Diff             @@
   ##           master    #1074      +/-   ##
   ==========================================
   + Coverage   56.73%   57.52%   +0.78%     
   ==========================================
     Files         267      269       +2     
     Lines       17574    17606      +32     
   ==========================================
   + Hits         9970    10127     +157     
   + Misses       6771     6641     -130     
   - Partials      833      838       +5     
   ```
   </details>
   
   [:umbrella: View full report in Codecov by Sentry](https://app.codecov.io/gh/apache/incubator-seata-go/pull/1074?dropdown=coverage&src=pr&el=continue&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache).   
   :loudspeaker: Have feedback on the report? [Share it here](https://about.codecov.io/codecov-pr-comment-feedback/?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache).
   <details><summary> :rocket: New features to boost your workflow: </summary>
   
   - :snowflake: [Test Analytics](https://docs.codecov.com/docs/test-analytics): Detect flaky tests, report on failures, and find test suite problems.
   </details>


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@seata.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@seata.apache.org
For additional commands, e-mail: notifications-help@seata.apache.org


Re: [PR] fix: support RM delete undo log request [incubator-seata-go]

Posted by "everfid-ever (via GitHub)" <gi...@apache.org>.
everfid-ever closed pull request #1074: fix: support RM delete undo log request
URL: https://github.com/apache/incubator-seata-go/pull/1074


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@seata.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@seata.apache.org
For additional commands, e-mail: notifications-help@seata.apache.org