service changes mode of files when it differs from default umask
This is how we use [sandcastle](github.com/packit-service/sandcastle) now: it utilizes `oc cp` which is implemented using streaming tarballs and a tar command - tar drops the mode. If only we could use RWX PVs.

Related: https://github.com/packit-service/packit/pull/388

This is a limitation we have right now in our production deployment (and the underlying infrastructure). The best solution is probably to move to different cluster.
diff --git a/packit_service/worker/reporting.py b/packit_service/worker/reporting.py
index 4c867dd0..5f131606 100644
--- a/packit_service/worker/reporting.py
+++ b/packit_service/worker/reporting.py
@@ -183,6 +183,15 @@ class StatusReporter:
             BaseCommitStatus.failure,
         }
 
+    def _commit_comment_already_added(self, comment: str) -> bool:
+        commit_comments = self.project.get_commit_comments(self.commit_sha)
+        if exists := any(c.comment == comment for c in commit_comments):
+            logger.debug(
+                "The following comment already exists for commit "
+                f"{self.commit_sha}\\n{comment}"
+            )
+        return exists
+
     def _add_commit_comment_with_status(
         self, state: BaseCommitStatus, description: str, check_name: str, url: str = ""
     ):
@@ -196,8 +205,7 @@ class StatusReporter:
             )
             + f"\\n\\n{description}"
         )
-        if not self.is_final_state(state):
-            # To avoid multiple comments for non-final states
+        if not self.is_final_state(state) or self._commit_comment_already_added(body):
             logger.debug(f"Not adding a '{check_name} is {state.name}' comment.")
             return
 
diff --git a/tests/unit/test_copr_build.py b/tests/unit/test_copr_build.py
index fc6ad40e..c3f667cf 100644
--- a/tests/unit/test_copr_build.py
+++ b/tests/unit/test_copr_build.py
@@ -1824,6 +1824,7 @@ def test_copr_build_success_gitlab_comment(gitlab_mr_event):
     exception.__cause__ = gitlab.GitlabError(response_code=403)
     flexmock(pr.source_project).should_receive("set_commit_status").and_raise(exception)
     flexmock(GitlabProject).should_receive("commit_comment").and_return()
+    flexmock(GitlabProject).should_receive("get_commit_comments").and_return([])
     flexmock(SRPMBuildModel).should_receive("create_with_new_run").and_return(
         (
             flexmock(status="success", id=42)
diff --git a/tests/unit/test_reporting.py b/tests/unit/test_reporting.py
index ad18d5b3..fe2701c5 100644
--- a/tests/unit/test_reporting.py
+++ b/tests/unit/test_reporting.py
@@ -312,7 +312,7 @@ def test_commit_comment_instead_of_status(
         )
         + f"\\n\\n{description}",
     )
-
+    project.should_receive("get_commit_comments").and_return([])
     if has_pr_id:
         project.should_receive("get_pr").with_args(pr_id).and_return(pr_object)
 
['tests/unit/test_copr_build.py', 'tests/unit/test_reporting.py', 'packit_service/worker/reporting.py']