Skip to content

Commit 784ec6e

Browse files
committed
don't miss audit logs
1 parent f466517 commit 784ec6e

File tree

4 files changed

+19
-36
lines changed

4 files changed

+19
-36
lines changed

src/sentry/integrations/github/tasks/link_all_repos.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
)
1414
from sentry.organizations.services.organization import organization_service
1515
from sentry.plugins.providers.integration_repository import (
16-
RepoExistsError,
1716
RepositoryInputConfig,
1817
get_integration_repository_provider,
1918
)
@@ -40,7 +39,7 @@ def get_repo_config(repo: Mapping[str, Any], integration_id: int) -> RepositoryI
4039
processing_deadline_duration=60,
4140
silo_mode=SiloMode.CONTROL,
4241
)
43-
@retry(exclude=(RepoExistsError, KeyError))
42+
@retry(exclude=(KeyError,))
4443
def link_all_repos(
4544
integration_key: str,
4645
integration_id: int,
@@ -88,14 +87,15 @@ def link_all_repos(
8887
missing_repos.append(repo)
8988
continue
9089

91-
try:
90+
_created_repos, _reactivated_repos, existing_repos = (
9291
integration_repo_provider.create_repositories(
9392
configs=repo_configs, organization=rpc_org
9493
)
95-
except RepoExistsError as e:
94+
)
95+
if existing_repos:
9696
lifecycle.record_halt(
9797
str(LinkAllReposHaltReason.REPOSITORY_NOT_CREATED),
98-
{"missing_repos": e.repos, "integration_id": integration_id},
98+
{"missing_repos": existing_repos, "integration_id": integration_id},
9999
)
100100

101101
if missing_repos:

src/sentry/integrations/github/tasks/sync_repos.py

Lines changed: 4 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -16,18 +16,14 @@
1616
from sentry.constants import ObjectStatus
1717
from sentry.integrations.models.organization_integration import OrganizationIntegration
1818
from sentry.integrations.services.integration import integration_service
19-
from sentry.integrations.services.repository.model import RpcRepository
2019
from sentry.integrations.services.repository.service import repository_service
2120
from sentry.integrations.source_code_management.metrics import (
2221
SCMIntegrationInteractionEvent,
2322
SCMIntegrationInteractionType,
2423
)
2524
from sentry.integrations.source_code_management.repo_audit import log_repo_change
2625
from sentry.organizations.services.organization import organization_service
27-
from sentry.plugins.providers.integration_repository import (
28-
RepoExistsError,
29-
get_integration_repository_provider,
30-
)
26+
from sentry.plugins.providers.integration_repository import get_integration_repository_provider
3127
from sentry.shared_integrations.exceptions import ApiError
3228
from sentry.silo.base import SiloMode
3329
from sentry.tasks.base import instrumented_task, retry
@@ -183,16 +179,9 @@ def sync_repos_for_org(organization_integration_id: int) -> None:
183179
if str(repo["id"]) in new_ids
184180
]
185181
if repo_configs:
186-
created_repos: list[RpcRepository] = []
187-
reactivated_repos: list[RpcRepository] = []
188-
try:
189-
created_repos, reactivated_repos = (
190-
integration_repo_provider.create_repositories(
191-
configs=repo_configs, organization=rpc_org
192-
)
193-
)
194-
except RepoExistsError:
195-
pass
182+
created_repos, reactivated_repos, _ = integration_repo_provider.create_repositories(
183+
configs=repo_configs, organization=rpc_org
184+
)
196185

197186
for repo in created_repos:
198187
log_repo_change(

src/sentry/integrations/github/tasks/sync_repos_on_install_change.py

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
from sentry.integrations.github.webhook_types import GitHubInstallationRepo
99
from sentry.integrations.services.integration import integration_service
1010
from sentry.integrations.services.integration.model import RpcIntegration
11-
from sentry.integrations.services.repository.model import RpcRepository
1211
from sentry.integrations.services.repository.service import repository_service
1312
from sentry.integrations.source_code_management.metrics import (
1413
SCMIntegrationInteractionEvent,
@@ -18,7 +17,6 @@
1817
from sentry.organizations.services.organization import organization_service
1918
from sentry.organizations.services.organization.model import RpcOrganization
2019
from sentry.plugins.providers.integration_repository import (
21-
RepoExistsError,
2220
RepositoryInputConfig,
2321
get_integration_repository_provider,
2422
)
@@ -38,7 +36,7 @@
3836
processing_deadline_duration=120,
3937
silo_mode=SiloMode.CONTROL,
4038
)
41-
@retry(exclude=(RepoExistsError, KeyError))
39+
@retry(exclude=(KeyError,))
4240
def sync_repos_on_install_change(
4341
integration_id: int,
4442
action: str,
@@ -121,14 +119,11 @@ def _sync_repos_for_org(
121119
continue
122120

123121
if repo_configs:
124-
created_repos: list[RpcRepository] = []
125-
reactivated_repos: list[RpcRepository] = []
126-
try:
127-
created_repos, reactivated_repos = integration_repo_provider.create_repositories(
122+
created_repos, reactivated_repos, _missing_repos = (
123+
integration_repo_provider.create_repositories(
128124
configs=repo_configs, organization=rpc_org
129125
)
130-
except RepoExistsError:
131-
pass
126+
)
132127

133128
for created_repo in created_repos:
134129
log_repo_change(

src/sentry/plugins/providers/integration_repository.py

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -240,11 +240,13 @@ def create_repositories(
240240
self,
241241
configs: list[RepositoryInputConfig],
242242
organization: RpcOrganization,
243-
) -> tuple[list[RpcRepository], list[RpcRepository]]:
243+
) -> tuple[list[RpcRepository], list[RpcRepository], list[RepositoryConfig]]:
244244
"""
245245
Create or update repositories from configs.
246-
Returns (created, reactivated) — newly created repos and repos that
247-
were reactivated or updated from a hidden/unlinked state.
246+
Returns (created, reactivated, missing) — newly created repos, repos that
247+
were reactivated or updated from a hidden/unlinked state, and repo configs
248+
that could not be created because a repository with that configuration
249+
already exists.
248250
"""
249251
external_id_to_repo_config: dict[str, RepositoryConfig] = {}
250252
for config in configs:
@@ -306,10 +308,7 @@ def create_repositories(
306308
updates=repos_to_update,
307309
)
308310

309-
if missing_repos:
310-
raise RepoExistsError(repos=missing_repos)
311-
312-
return created_repos, repos_to_update
311+
return created_repos, repos_to_update, missing_repos
313312

314313
def dispatch(self, request: Request, organization, **kwargs):
315314
try:

0 commit comments

Comments
 (0)