From bd61f7bf0a8e5a102175da73d0b79e9218de69f8 Mon Sep 17 00:00:00 2001
From: Ekaterina Lebedeva <ekaterina.lebedeva@yadro.com>
Date: Fri, 7 Mar 2025 12:29:28 +0300
Subject: [PATCH] [#1666] audit: Fix duplicated log in `Patch` method

When we do `object patch` with audit enabled we get several
duplicated entries in logs.

`object patch` request is logged in 2 places:
1. `(*auditPatchStream) CloseAndRecv()` - when the client closes
   the request stream or when stream gets aborted.
2. `(*auditPatchStream) Send()` - when stream was NOT aborted.

`Send()` doesn't check if `err != nil` before logging.
It led to to logging on every `Send()` call.

Signed-off-by: Ekaterina Lebedeva <ekaterina.lebedeva@yadro.com>
---
 pkg/services/object/audit.go | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pkg/services/object/audit.go b/pkg/services/object/audit.go
index 367be0c0c..f8ee089fe 100644
--- a/pkg/services/object/audit.go
+++ b/pkg/services/object/audit.go
@@ -224,7 +224,7 @@ func (a *auditPatchStream) Send(ctx context.Context, req *object.PatchRequest) e
 	if err != nil {
 		a.failed = true
 	}
-	if !errors.Is(err, util.ErrAbortStream) { // CloseAndRecv will not be called, so log here
+	if err != nil && !errors.Is(err, util.ErrAbortStream) { // CloseAndRecv will not be called, so log here
 		audit.LogRequestWithKey(ctx, a.log, objectGRPC.ObjectService_Patch_FullMethodName, a.key,
 			audit.TargetFromContainerIDObjectID(a.containerID, a.objectID),
 			!a.failed)