# 검증기가 자기 실행 시점과 이유를 적어 둔 자리 /** * Refuses to start when a declared control is not actually wired. * *
At startup, because the alternative is finding out from an incident. A control that is * configured and not installed behaves exactly like one that is working right up until the moment * it is needed — the rate limiter that never limits, the budget that never bounds, the problem * catalog that nothing consults. This session found the third of those by accident, through a * parity recording; a startup check is what finds the next one on purpose. * *
Fail-closed. A validator that logged a warning would be read by nobody: the deployment starts, * the dashboards are green, and the warning scrolls past in the first thirty seconds of a log * nobody keeps. */ # admin/platform 두 파일의 이름이 자기 파일 밖에 나오는 줄 (시험 클래스 선언 포함) WebPlatformStartupValidator : test · WebPlatformStartupValidatorTest.java:106 test · WebPlatformStartupValidatorTest.java:20 test · WebPlatformStartupValidatorTest.java:30 test · WebPlatformStartupValidatorTest.java:48 test · WebPlatformStartupValidatorTest.java:69 test · WebPlatformStartupValidatorTest.java:83 WebPlatformSnapshot : main · WebPlatformStartupValidator.java:39 test · WebPlatformStartupValidatorTest.java:108 test · WebPlatformStartupValidatorTest.java:129 test · WebPlatformStartupValidatorTest.java:130 # 그 검증기를 가리키는 운영 문서 web/runbook.md:27 - **Check first:** the platform snapshot's `uninstalledControls()`. `WebPlatformStartupValidator` - **Check first:** the platform snapshot's `uninstalledControls()`. `WebPlatformStartupValidator` fails startup on a missing required control, so a running instance with one missing means it was not in the required list. # 원문이 인용한 근거가 실제로 걸린 자리 NginxInternalUriMapper:30: * file. Better to refuse to start. FileserverStartupConfiguration:87: return uriMapper.attestMapping(); # 같은 저장소가 시작 검증기를 실제로 거는 방식 FileserverStartupConfiguration:37: FileserverStartupValidator fileserverStartupValidator() { FileserverStartupConfiguration:38- return new FileserverStartupValidator(); FileserverStartupConfiguration:39- } FileserverStartupConfiguration:40- HttpClientProfileAutoConfiguration:47: HttpClientStartupValidator httpClientStartupValidator(TlsPolicyValidator tlsPolicyValidator) { HttpClientProfileAutoConfiguration:48- // Injected rather than constructed, so a deployment that replaces the TlsPolicyValidator bean HttpClientProfileAutoConfiguration:49- // replaces the one startup validation uses too. HttpClientProfileAutoConfiguration:50- return new HttpClientStartupValidator(tlsPolicyValidator); # 이 리프가 자동설정으로 올리는 것 dev.caskeleton.adapter.inbound.web.mvc.autoconfigure.WebMvcPlatformAutoConfiguration dev.caskeleton.adapter.inbound.web.webflux.autoconfigure.WebFluxPlatformAutoConfiguration 그 목록에서 admin 이라는 문자열을 담은 항목 : 0 검증기 클래스에 스프링 스테레오타입이 붙어 있는가 : 0 # src 에 선언된 *StartupValidator 를 모두 찾아, 자기 파일 밖 main 파일 수를 센다 FileserverStartupValidator main 파일 1 (자바독 언급 포함) GraphQlPlatformStartupValidator main 파일 2 (자바독 언급 포함) GrpcPlatformStartupValidator main 파일 0 (자바독 언급 포함) GrpcServletStartupValidator main 파일 0 (자바독 언급 포함) HttpClientStartupValidator main 파일 2 (자바독 언급 포함) MongoStartupValidator main 파일 2 (자바독 언급 포함) WebPlatformStartupValidator main 파일 0 (자바독 언급 포함) WebSocketPlatformStartupValidator main 파일 0 (자바독 언급 포함) # 런북이 백틱으로 지목한 이름 중, main 에 그 이름의 파일이 있으면서 자기 파일 밖 main 참조가 0 인 것 GrpcAdvancedSupportMatrix main 참조 0 · docs/runbooks/grpc-advanced-capabilities.md GrpcCompletionReconciler main 참조 0 · docs/runbooks/grpc-platform-operations.md GrpcHedgingBudget main 참조 0 · docs/runbooks/grpc-advanced-capabilities.md GrpcHedgingResult main 참조 0 · docs/runbooks/grpc-advanced-capabilities.md GrpcPlatformSnapshotService main 참조 0 · docs/runbooks/grpc-platform-operations.md GrpcServletStartupValidator main 참조 0 · docs/runbooks/grpc-advanced-capabilities.md GrpcWebCompatibilityGate main 참조 0 · docs/runbooks/grpc-advanced-capabilities.md GrpcXdsFailurePolicy main 참조 0 · docs/runbooks/grpc-advanced-capabilities.md GrpcXdsStartupGuard main 참조 0 · docs/runbooks/grpc-advanced-capabilities.md WebCorsPolicyValidator main 참조 0 · docs/web/runbook.md WebPlatformStartupValidator main 참조 0 · docs/web/runbook.md 그중 이 리프 런북이 같은 추론을 거는 자리 : - **Check first:** the platform snapshot's `uninstalledControls()`. `WebPlatformStartupValidator` fails startup on a missing required control, so a running instance with one missing means it was not in the required list. The API answers correctly and the browser refuses the response. Everything below is refused at startup by `WebCorsPolicyValidator`, so a running instance with one of these means the profile was built somewhere that does not validate.