Skip to content

Commit 20d697c

Browse files
committed
Update add_watcher method
1 parent 39a9b8d commit 20d697c

File tree

1 file changed

+15
-4
lines changed

1 file changed

+15
-4
lines changed

src/clusterfuzz/_internal/issue_management/jira/issue_tracker_manager.py

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -75,16 +75,27 @@ def _transition_issue_status_if_updated(self, issue):
7575
if not isinstance(issue.status, jira.resources.Resource):
7676
self.client.transition_issue(issue.jira_issue, transition=issue.status)
7777

78-
def _add_watchers(self, issue):
78+
def _add_watchers(self, issue, update_if_different=False):
7979
"""Add watchers to the ticket. Jira has a separate endpoint to
8080
add watchers."""
8181

82+
# return if issue was not created yet
83+
if issue.id == -1:
84+
return
85+
8286
# Get watchers from LabelStore.
83-
watchers = list(issue.ccs)
87+
watchers = set(issue.ccs)
88+
89+
if update_if_different:
90+
# Only add the missing watchers
91+
watchers = watchers - set(self.get_watchers(issue))
8492

8593
# Jira weirdness, update watchers this way.
8694
for watcher in watchers:
87-
self.client.add_watcher(issue.jira_issue, watcher)
95+
try:
96+
self.client.add_watcher(issue.jira_issue, watcher)
97+
except Exception as e:
98+
logs.error(f'Error adding watcher {watcher} to issue {issue.id}')
8899

89100
def _get_issue_fields(self, issue):
90101
"""Get issue fields to populate the ticket"""
@@ -128,7 +139,7 @@ def _update(self, issue):
128139

129140
update_fields = self._get_issue_fields(issue)
130141
self._transition_issue_status_if_updated(issue)
131-
self._add_watchers(issue)
142+
self._add_watchers(issue, update_if_different=True)
132143
issue.jira_issue.update(fields=update_fields)
133144

134145
def get_watchers(self, issue):

0 commit comments

Comments
 (0)