Skip to content

refactor(udp-core, udp-server, udp-protocol, tracker-client): consolidate duplicate UDP types (#1966) - #1991

Merged
josecelano merged 3 commits into
torrust:developfrom
josecelano:1966-1669-si-35-consolidate-duplicate-udp-types
Jul 16, 2026
Merged

refactor(udp-core, udp-server, udp-protocol, tracker-client): consolidate duplicate UDP types (#1966)#1991
josecelano merged 3 commits into
torrust:developfrom
josecelano:1966-1669-si-35-consolidate-duplicate-udp-types

Conversation

@josecelano

Copy link
Copy Markdown
Member

Summary

Consolidates duplicate UDP type definitions across the workspace per the issue spec.

Changes

  • ConnectionContext: Consolidated into udp-core (private fields with accessors). Removed duplicate from udp-server — all consumers now import from torrust_tracker_udp_core::event::ConnectionContext.
  • MAX_PACKET_SIZE: Moved to udp-protocol/src/common.rs, imported by both udp-server and tracker-client.
  • PROTOCOL_ID: Removed dead constant from tracker-client (unused, confirmed via grep).
  • adr: comments: Added // adr: docs/adrs/20260527175600_keep_protocol_and_domain_types_decoupled.md to all 5 intentional duplication locations.
  • Linter fixes: Fixed clippy::doc_markdown in primitives/src/announce.rs, removed unused super::RawRequest import in udp-server/src/server/mod.rs.

Verification

  • linter all — exit code 0
  • cargo test --workspace --all-targets — all pass
  • cargo machete — no new unused dependencies
  • Pre-commit and pre-push hooks — all pass
  • No duplicate ConnectionContext or MAX_PACKET_SIZE definitions remain

Closes #1966

Copilot AI review requested due to automatic review settings July 16, 2026 12:13

Copilot AI 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.

Pull request overview

This PR consolidates previously duplicated UDP types/constants across the workspace to reduce drift and keep UDP packages aligned with the intended architecture (protocol vs domain separation), per #1966.

Changes:

  • Consolidated ConnectionContext into udp-core (with private fields + accessors) and updated all udp-server imports accordingly.
  • Moved MAX_PACKET_SIZE into udp-protocol and removed redundant constants from udp-server and tracker-client (and removed dead PROTOCOL_ID).
  • Added ADR cross-references (adr: comments) to the intentionally duplicated boundary types across protocol/domain crates.

Reviewed changes

Copilot reviewed 26 out of 26 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
packages/udp-server/tests/server/contract.rs Switches MAX_PACKET_SIZE import to udp-protocol.
packages/udp-server/src/statistics/event/handler/response_sent.rs Uses udp-core::ConnectionContext instead of udp-server local type.
packages/udp-server/src/statistics/event/handler/request_received.rs Uses udp-core::ConnectionContext instead of udp-server local type.
packages/udp-server/src/statistics/event/handler/request_banned.rs Uses udp-core::ConnectionContext instead of udp-server local type.
packages/udp-server/src/statistics/event/handler/request_accepted.rs Uses udp-core::ConnectionContext instead of udp-server local type.
packages/udp-server/src/statistics/event/handler/request_aborted.rs Uses udp-core::ConnectionContext instead of udp-server local type.
packages/udp-server/src/statistics/event/handler/error.rs Uses udp-core::ConnectionContext instead of udp-server local type.
packages/udp-server/src/server/receiver.rs Imports MAX_PACKET_SIZE from udp-protocol; adjusts RawRequest import.
packages/udp-server/src/server/processor.rs Uses udp-core::ConnectionContext instead of udp-server local type.
packages/udp-server/src/server/mod.rs Removes unused RawRequest import.
packages/udp-server/src/server/launcher.rs Uses udp-core::ConnectionContext instead of udp-server local type.
packages/udp-server/src/lib.rs Removes MAX_PACKET_SIZE constant from udp-server.
packages/udp-server/src/handlers/scrape.rs Uses udp-core::ConnectionContext instead of udp-server local type (incl. tests).
packages/udp-server/src/handlers/error.rs Uses udp-core::ConnectionContext instead of udp-server local type.
packages/udp-server/src/handlers/connect.rs Uses udp-core::ConnectionContext instead of udp-server local type (incl. tests).
packages/udp-server/src/handlers/announce.rs Uses udp-core::ConnectionContext instead of udp-server local type (incl. tests).
packages/udp-server/src/event.rs Removes duplicated ConnectionContext and imports it from udp-core.
packages/udp-protocol/src/common.rs Adds MAX_PACKET_SIZE and adds ADR note for protocol-local duplication.
packages/udp-core/src/event.rs Makes ConnectionContext fields private while keeping the accessor API.
packages/tracker-client/src/udp/mod.rs Removes duplicated MAX_PACKET_SIZE and dead PROTOCOL_ID.
packages/tracker-client/src/udp/client.rs Imports MAX_PACKET_SIZE from udp-protocol instead of local constant.
packages/primitives/src/announce.rs Adds ADR note explaining intentional domain/protocol duplication.
packages/http-protocol/src/v1/responses/scrape/data.rs Adds ADR note explaining intentional domain/protocol duplication.
packages/http-protocol/src/v1/responses/announce/data.rs Adds ADR note explaining intentional domain/protocol duplication.
packages/http-protocol/src/v1/requests/announce.rs Adds ADR note explaining intentional domain/protocol duplication.
docs/issues/open/1966-1669-si-35-consolidate-duplicate-udp-types.md Updates task/spec status and verification checklist to reflect completion/in-review.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread packages/udp-protocol/src/common.rs
josecelano added a commit to josecelano/torrust-tracker that referenced this pull request Jul 16, 2026
Set related-pr in frontmatter after PR creation.
@josecelano josecelano self-assigned this Jul 16, 2026
josecelano added a commit to josecelano/torrust-tracker that referenced this pull request Jul 16, 2026
…orrust#1991)

The comment in udp-protocol/src/common.rs referenced
'bittorrent-primitives::InfoHash' which is a deprecated crate path.
Updated to 'torrust_info_hash::InfoHash' as suggested by Copilot review.

Also adds tracking documentation for the PR review process.
…date duplicate UDP types (torrust#1966)

- Consolidate ConnectionContext into udp-core, import from udp-server
- Move MAX_PACKET_SIZE to udp-protocol, import from consumers
- Remove dead PROTOCOL_ID from tracker-client
- Add adr: comments referencing protocol/domain decoupling ADR
- Update issue spec with completed statuses
Set related-pr in frontmatter after PR creation.
…orrust#1991)

The comment in udp-protocol/src/common.rs referenced
'bittorrent-primitives::InfoHash' which is a deprecated crate path.
Updated to 'torrust_info_hash::InfoHash' as suggested by Copilot review.

Also adds tracking documentation for the PR review process.
@josecelano
josecelano force-pushed the 1966-1669-si-35-consolidate-duplicate-udp-types branch from a4d84f4 to 8265e01 Compare July 16, 2026 13:20
@josecelano

Copy link
Copy Markdown
Member Author

ACK 8265e01

@josecelano
josecelano merged commit 49d8117 into torrust:develop Jul 16, 2026
16 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

EPIC 1669 SI-35: Consolidate duplicate UDP types

2 participants