Skip to content

feat(ecosystem): Implement cross-system issue synchronization#14

Open
ShashankFC wants to merge 1 commit into
ecosystem-sync-integration-beforefrom
ecosystem-sync-integration-after
Open

feat(ecosystem): Implement cross-system issue synchronization#14
ShashankFC wants to merge 1 commit into
ecosystem-sync-integration-beforefrom
ecosystem-sync-integration-after

Conversation

@ShashankFC

@ShashankFC ShashankFC commented Jan 22, 2026

Copy link
Copy Markdown
Contributor

Test 7

Summary by CodeRabbit

Release Notes

  • New Features
    • Enhanced assignment synchronization with cycle prevention to ensure reliable bidirectional syncing between Sentry and integrated external issue tracking systems without infinite loops.

✏️ Tip: You can customize this high-level summary in your review settings.


Replicated from ai-code-review-evaluation/sentry-coderabbit#7


Note

Medium Risk
Touches core assignment and integration sync pathways and changes when outbound sync is suppressed, which could lead to missed assignee updates if source detection/propagation is incorrect.

Overview
Adds an AssignmentSource payload that is threaded through group assignment/deassignment and outbound integration sync tasks to track where an assignment change originated.

Updates IssueSyncIntegration.should_sync (and related call sites) to skip outbound assignee sync when the change source matches the target integration, preventing infinite sync loops while still allowing other integrations to propagate changes. Includes new unit tests for AssignmentSource serialization and for the cycle-prevention behavior in GroupAssignee outbound sync.

Written by Cursor Bugbot for commit f9919d7. Configure here.

@ShashankFC

Copy link
Copy Markdown
Contributor Author

bugbot run

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Bugbot Autofix is OFF. To automatically fix reported issues with Cloud Agents, enable Autofix in the Cursor dashboard.

class AssignmentSource:
source_name: str
integration_id: int
queued: datetime = timezone.now()

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Dataclass default timezone.now() evaluated once at import time

High Severity

The queued field default timezone.now() is evaluated once when the module is first imported, not each time an AssignmentSource instance is created. Every instance that doesn't explicitly provide queued (including all calls via from_integration) will share the same stale timestamp from server startup. The fix is to use field(default_factory=timezone.now) from dataclasses.

Fix in Cursor Fix in Web

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants