# 사슬의 나머지가 사라진 지점 2f5d2fc2 feat: jpa, messaging, notification, mongo, graphql 어댑터터 구현체 추가 0e61f86e feat(jpa): implement the JPA relational persistence platform .../transaction/RetryableJpaTransaction.java | 44 - .../RetryableJpaTransactionInterceptor.java | 109 -- .../RetryableJpaTransactionInterceptorTest.java | 211 --- 909 files changed, 62488 insertions(+), 6332 deletions(-) # 그 클래스가 지금 main 에 남긴 줄: 0 # 삭제되기 직전, 그 인터셉터가 레지스트리를 어떻게 썼는가 30: public static final int DEFAULT_ORDER = Ordered.HIGHEST_PRECEDENCE + 100; 41: private final TransactionProfileRegistry profiles; 45: FullTransactionRetryCoordinator coordinator, TransactionProfileRegistry profiles) { 50: FullTransactionRetryCoordinator coordinator, TransactionProfileRegistry profiles, int order) { 66: TransactionProfile profile = profiles.require(policy.profile()); 69: return coordinator.execute(operation, profile, () -> proceed(invocation), transactionKey); # 같은 커밋이 레지스트리 javadoc 에서 애너테이션 이름만 지웠다 - * default would mean a typo in {@code @RetryableJpaTransaction(profile = "order-wrtie")} silently - * runs with someone else's isolation, timeout, and retry budget. + * default would mean a typo in a profile name of {@code "order-wrtie"} silently runs with someone + * else's isolation, timeout, and retry budget. # 문자열 이름을 fail-closed 로 찾는 형제는 하나뿐이다 77: public SafeSortField require(String publicName) { 65: SafeSortField field = registry.require(parts[0].trim()); # 다른 둘은 키 타입이 달라 오타가 들어올 자리가 없다 61- */ 62: public GrpcChannelRuntime require(GrpcChannelProfileName profileName) { 150- /** The descriptor for a profile; every enum constant is always present. */ 151: public MongoConsistencyDescriptor require(MongoConsistencyProfile profile) { # ADR 은 결정 절과 강제 절 양쪽에서 사라진 것을 전제한다 16:retry advice is ordered outside Spring's transaction advice so each attempt begins a new 37:`FullTransactionRetryCoordinatorTest`; `RetryableJpaTransactionInterceptor.DEFAULT_ORDER`. # DEFAULT_ORDER 가 소스 전체에 있는 줄: 0 # JPA 리프 main 에 MethodInterceptor 나 Advisor 가 있는 줄: 0 # 레지스트리를 지키는 유일한 테스트가 고정하는 것 11:/** Plan Task 9 — profile lookup is fail-closed (design §9.2). */ 20: @DisplayName("a registered profile resolves") 27: @DisplayName("a mistyped profile name fails rather than falling back to a default") 35: @DisplayName("a duplicate registration is rejected")