{ "version": "1.1", "id": "grpc-policy-f04", "title": "동기화가 걸린 곳과 아닌 곳", "question": "어느 쓰기가 동기화로 보호되는가?", "type": "sequence", "direction": "LR", "audience": [ "이 저장소의 구조를 읽는 사람" ], "summary": "GrpcSerializedStreamWriter 는 동기화로 보호되고 완료 조정자의 pending 은 보호 밖이다.", "alt": "쓰기 요청이 직렬화 쓰기로 가면 동기화 안이고 완료 조정자의 pending 으로 가면 보호 밖인 순서.", "long_description": "SSOT 는 이 리프의 동기화 마커가 어디에 걸려 있는지를 센다. GrpcSerializedStreamWriter 만 그 안에 있고 완료 조정자의 pending 은 바깥이다.", "source_context": { "document": "/home/donghyeon/workspace/chat-gpt-container/document-haness/docs/clean-architecture-backend-template/final/document.md", "document_sha256": "8071fe71b3359d9cf60b95909c26c7b50653ce2f22bbc5fcf6988719bb91236d", "anchor": { "kind": "line", "value": 23461, "line": 23461 } }, "composition": { "profile": "sequence", "diagram_only": true, "reference_ids": [ "payment-approval-sequence" ], "rationale": "같은 계열의 두 쓰기 중 한쪽만 보호된다는 것이 순서로 드러난다.", "focus_node": "writer" }, "groups": [], "nodes": [ { "id": "caller", "label": "쓰기 요청", "kind": "service", "role": "participant", "evidence": [ { "start_line": 23461, "end_line": 23490 } ], "assumption": false }, { "id": "writer", "label": "GrpcSerializedStreamWriter", "kind": "service", "role": "participant", "evidence": [ { "start_line": 23461, "end_line": 23490 } ], "assumption": false, "emphasis": "primary", "details": [ "동기화 마커 안" ] }, { "id": "pending", "label": "완료 조정자의 pending", "kind": "service", "role": "participant", "evidence": [ { "start_line": 23461, "end_line": 23499 } ], "assumption": false, "details": [ "보호 밖" ] } ], "edges": [ { "id": "m1", "from": "caller", "to": "writer", "label": "직렬화 쓰기", "kind": "request", "evidence": [ { "start_line": 23461, "end_line": 23490 } ], "assumption": false, "order": 1 }, { "id": "m2", "from": "caller", "to": "pending", "label": "보호 없는 쓰기", "kind": "request", "evidence": [ { "start_line": 23461, "end_line": 23499 } ], "assumption": false, "order": 2, "style": "dashed", "emphasis": "primary" } ], "legend": [], "metadata": {} }