Skip to content

[diagnostics-core] 같은 이름의 diagnostics provider 등록이 조용히 덮어써짐 #700

Description

@kang-heewon

Problem

DiagnosticsCollector.registerProvider가 provider name 충돌을 검증하지 않고 Map#set으로 덮어씁니다. 운영 진단 provider가 중복 등록되면 먼저 등록된 provider가 사라지고, report에는 마지막 provider만 남아 원인 파악이 어려워집니다.

Evidence

  • packages/diagnostics-core/src/libs/DiagnosticsCollector.ts:24-30providersMap<string, DiagnosticsProvider>로 관리하고 registerProvider에서 this.providers.set(provider.name, provider)만 호출합니다.
  • packages/diagnostics-core/src/libs/DiagnosticsCollector.ts:40-45Map에 남은 provider만 report 대상으로 사용합니다.
  • 다른 registry들은 duplicate registration을 명시적으로 문제로 다루는 패턴이 있습니다.

Desired Outcome

Diagnostics provider 이름은 유일해야 하며, 충돌 시 조용한 overwrite가 아니라 명시적인 오류 또는 idempotent no-op 규칙으로 처리되어야 합니다.

Suggested Approach

  • 같은 name의 다른 provider 등록 시 Croco Problem 또는 명시 오류를 던집니다.
  • 동일 인스턴스 재등록을 허용할지 여부를 결정하고 테스트로 고정합니다.
  • provider name 규칙을 타입/문서에 명시합니다.

Acceptance Criteria

  • 서로 다른 provider가 같은 name으로 등록되면 기존 provider가 조용히 사라지지 않습니다.
  • 중복 등록 정책이 테스트로 고정됩니다.
  • diagnostics report에 provider 누락이 발생하지 않습니다.

Validation

  • pnpm test --filter=@croco/diagnostics-core
  • duplicate provider regression test

Metadata

Metadata

Assignees

Labels

P2Priority 2 issuebugSomething isn't workingtech-debtTechnical debt

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions