[P2][refactor] LeaseRegistry 책임 분리 및 port/runtime mutation transaction화 #36

Closed
opened 2026-05-02 04:34:09 +00:00 by boxqkrtm · 1 comment

문제

crates/portal-relay/src/relay/leases.rsLeaseRegistry가 challenge 발급/검증, SIWE 연계, lease register/renew/unregister, token verify, UDP/TCP runtime 생성, port allocator, hop route, public/admin view, policy 확인, stream admission 등을 모두 담당합니다.

영향

  • 파일/타입 규모가 커져 변경 위험 증가
  • port allocation/runtime start/state mutation rollback이 어려움
  • 테스트 단위가 커지고 mocking이 어려움
  • security policy 적용 지점이 흩어질 수 있음

제안 구조

lease/
  challenge_store.rs
  lease_store.rs
  lease_service.rs
  token_service.rs
  port_allocator.rs
  hop_route_store.rs
  admission.rs

특히 port allocation과 runtime start는 lease state mutation과 분리해 transaction/rollback을 명확히 하는 것이 좋습니다.

완료 기준

  • challenge/lease/token/port/hop route 책임이 별도 타입으로 분리
  • register/renew 실패 시 state rollback 경로가 명확
  • 각 store/service 단위 테스트 추가 가능

검토 기준: 업로드된 Rust portal-relay 코드 정적 리뷰. 리뷰 환경에서는 cargo check/test/clippy를 실행하지 못했습니다.

## 문제 `crates/portal-relay/src/relay/leases.rs`의 `LeaseRegistry`가 challenge 발급/검증, SIWE 연계, lease register/renew/unregister, token verify, UDP/TCP runtime 생성, port allocator, hop route, public/admin view, policy 확인, stream admission 등을 모두 담당합니다. ## 영향 - 파일/타입 규모가 커져 변경 위험 증가 - port allocation/runtime start/state mutation rollback이 어려움 - 테스트 단위가 커지고 mocking이 어려움 - security policy 적용 지점이 흩어질 수 있음 ## 제안 구조 ```text lease/ challenge_store.rs lease_store.rs lease_service.rs token_service.rs port_allocator.rs hop_route_store.rs admission.rs ``` 특히 port allocation과 runtime start는 lease state mutation과 분리해 transaction/rollback을 명확히 하는 것이 좋습니다. ## 완료 기준 - challenge/lease/token/port/hop route 책임이 별도 타입으로 분리 - register/renew 실패 시 state rollback 경로가 명확 - 각 store/service 단위 테스트 추가 가능 --- 검토 기준: 업로드된 Rust `portal-relay` 코드 정적 리뷰. 리뷰 환경에서는 `cargo check/test/clippy`를 실행하지 못했습니다.
Owner

검토했지만 이번 범위에서는 수용하지 않습니다. LeaseRegistry 분리는 장기 유지보수 과제이지만, 즉시 필요한 결함인 TTL cap, hop policy, queue/port 재등록 문제는 PR #62에서 좁게 수정했습니다. 대형 transaction/refactor는 호환성 회귀 위험이 커서 별도 로드맵 전까지 닫습니다.

검토했지만 이번 범위에서는 수용하지 않습니다. LeaseRegistry 분리는 장기 유지보수 과제이지만, 즉시 필요한 결함인 TTL cap, hop policy, queue/port 재등록 문제는 PR #62에서 좁게 수정했습니다. 대형 transaction/refactor는 호환성 회귀 위험이 커서 별도 로드맵 전까지 닫습니다.
gofix closed this issue 2026-05-03 18:58:41 +00:00
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
gofix/portal-tunnel-rs#36
No description provided.