refactor: 문서 개선 중

This commit is contained in:
donghyeon-ka
2026-09-21 14:30:55 +09:00
parent c93cdea150
commit 805a18f486
1497 changed files with 525837 additions and 59152 deletions
@@ -10,15 +10,15 @@ kubectl 이 강제 종료한 Keycloak 노드가 클러스터에서 빠지고,
## Elements and evidence
- **kubectl** (participant): 파드를 정상 종료와 강제 종료로 끊는 쪽. Evidence: L886L888.
- **keycloak-0-60375** (participant): 강제 종료로 끊긴 노드. 자기 행을 지우고 나갈 틈이 없다. Evidence: L898L901.
- **keycloak-1-36736** (participant): 남아 있는 코디네이터. 정리 주체다. Evidence: L914L916.
- **JGROUPS_PING** (participant): 노드 행이 등록되는 발견 테이블. Evidence: L888L888.
- **keycloak-0-16105** (participant): 복구 뒤 올라온 노드. 접두사만 같다. Evidence: L918L920.
- **kubectl** (participant): 파드를 정상 종료와 강제 종료로 끊는 쪽. Evidence: L2957L2959.
- **keycloak-0-60375** (participant): 강제 종료로 끊긴 노드. 자기 행을 지우고 나갈 틈이 없다. Evidence: L2969L2972.
- **keycloak-1-36736** (participant): 남아 있는 코디네이터. 정리 주체다. Evidence: L2985L2987.
- **JGROUPS_PING** (participant): 노드 행이 등록되는 발견 테이블. Evidence: L2959L2959.
- **keycloak-0-16105** (participant): 복구 뒤 올라온 노드. 접두사만 같다. Evidence: L2989L2991.
## Relationships
- **kubectl → keycloak-0-60375:** delete pod --force. Evidence: L886L888.
- **keycloak-0-60375 → keycloak-1-36736:** 이탈 07:40:28. Evidence: L906L907.
- **keycloak-1-36736 → JGROUPS_PING:** 행 삭제 07:40:28. Evidence: L897L898, L914L916.
- **keycloak-0-16105 → keycloak-1-36736:** 합류 07:40:48. Evidence: L908L909.
- **kubectl → keycloak-0-60375:** delete pod --force. Evidence: L2957L2959.
- **keycloak-0-60375 → keycloak-1-36736:** 이탈 07:40:28. Evidence: L2977L2978.
- **keycloak-1-36736 → JGROUPS_PING:** 행 삭제 07:40:28. Evidence: L2968L2969, L2985L2987.
- **keycloak-0-16105 → keycloak-1-36736:** 합류 07:40:48. Evidence: L2979L2980.
@@ -5,19 +5,19 @@
<root>
<mxCell id="0"/>
<mxCell id="1" parent="0"/>
<mxCell id="n_kubectl" value="kubectl" tooltip="파드를 정상 종료와 강제 종료로 끊는 쪽. | Evidence: L886-L888" style="whiteSpace=wrap;html=1;rounded=1;strokeWidth=2;fontSize=14;fontStyle=1;fillColor=#ffffff;strokeColor=#2d4357;verticalAlign=middle;" vertex="1" parent="1">
<mxCell id="n_kubectl" value="kubectl" tooltip="파드를 정상 종료와 강제 종료로 끊는 쪽. | Evidence: L2957-L2959" style="whiteSpace=wrap;html=1;rounded=1;strokeWidth=2;fontSize=14;fontStyle=1;fillColor=#ffffff;strokeColor=#2d4357;verticalAlign=middle;" vertex="1" parent="1">
<mxGeometry x="45.0" y="35.0" width="150.0" height="64.0" as="geometry"/>
</mxCell>
<mxCell id="n_dying" value="keycloak-0-60375&lt;br/&gt;SIGKILL" tooltip="강제 종료로 끊긴 노드. 자기 행을 지우고 나갈 틈이 없다. | Evidence: L898-L901" style="whiteSpace=wrap;html=1;rounded=1;strokeWidth=2;fontSize=14;fontStyle=1;fillColor=#ffffff;strokeColor=#2d4357;verticalAlign=middle;strokeColor=#d97706;fillColor=#fffdf5;" vertex="1" parent="1">
<mxCell id="n_dying" value="keycloak-0-60375&lt;br/&gt;SIGKILL" tooltip="강제 종료로 끊긴 노드. 자기 행을 지우고 나갈 틈이 없다. | Evidence: L2969-L2972" style="whiteSpace=wrap;html=1;rounded=1;strokeWidth=2;fontSize=14;fontStyle=1;fillColor=#ffffff;strokeColor=#2d4357;verticalAlign=middle;strokeColor=#d97706;fillColor=#fffdf5;" vertex="1" parent="1">
<mxGeometry x="255.0" y="35.0" width="150.0" height="71.0" as="geometry"/>
</mxCell>
<mxCell id="n_coordinator" value="keycloak-1-36736&lt;br/&gt;코디네이터" tooltip="남아 있는 코디네이터. 정리 주체다. | Evidence: L914-L916" style="whiteSpace=wrap;html=1;rounded=1;strokeWidth=2;fontSize=14;fontStyle=1;fillColor=#ffffff;strokeColor=#2d4357;verticalAlign=middle;strokeColor=#2563eb;strokeWidth=2;" vertex="1" parent="1">
<mxCell id="n_coordinator" value="keycloak-1-36736&lt;br/&gt;코디네이터" tooltip="남아 있는 코디네이터. 정리 주체다. | Evidence: L2985-L2987" style="whiteSpace=wrap;html=1;rounded=1;strokeWidth=2;fontSize=14;fontStyle=1;fillColor=#ffffff;strokeColor=#2d4357;verticalAlign=middle;strokeColor=#2563eb;strokeWidth=2;" vertex="1" parent="1">
<mxGeometry x="465.0" y="35.0" width="150.0" height="71.0" as="geometry"/>
</mxCell>
<mxCell id="n_pingtable" value="JGROUPS_PING" tooltip="노드 행이 등록되는 발견 테이블. | Evidence: L888-L888" style="whiteSpace=wrap;html=1;rounded=1;strokeWidth=2;fontSize=14;fontStyle=1;fillColor=#ffffff;strokeColor=#2d4357;verticalAlign=middle;" vertex="1" parent="1">
<mxCell id="n_pingtable" value="JGROUPS_PING" tooltip="노드 행이 등록되는 발견 테이블. | Evidence: L2959-L2959" style="whiteSpace=wrap;html=1;rounded=1;strokeWidth=2;fontSize=14;fontStyle=1;fillColor=#ffffff;strokeColor=#2d4357;verticalAlign=middle;" vertex="1" parent="1">
<mxGeometry x="675.0" y="35.0" width="150.0" height="64.0" as="geometry"/>
</mxCell>
<mxCell id="n_rejoined" value="keycloak-0-16105&lt;br/&gt;새 접미사" tooltip="복구 뒤 올라온 노드. 접두사만 같다. | Evidence: L918-L920" style="whiteSpace=wrap;html=1;rounded=1;strokeWidth=2;fontSize=14;fontStyle=1;fillColor=#ffffff;strokeColor=#2d4357;verticalAlign=middle;" vertex="1" parent="1">
<mxCell id="n_rejoined" value="keycloak-0-16105&lt;br/&gt;새 접미사" tooltip="복구 뒤 올라온 노드. 접두사만 같다. | Evidence: L2989-L2991" style="whiteSpace=wrap;html=1;rounded=1;strokeWidth=2;fontSize=14;fontStyle=1;fillColor=#ffffff;strokeColor=#2d4357;verticalAlign=middle;" vertex="1" parent="1">
<mxGeometry x="885.0" y="35.0" width="150.0" height="71.0" as="geometry"/>
</mxCell>
<mxCell id="e_m1" value="delete pod --force" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=2;endArrow=block;endFill=1;" edge="1" parent="1" source="n_kubectl" target="n_dying">
@@ -2,22 +2,22 @@
"harness_version": "0.2.0",
"spec_id": "ghost-row-cleanup-order",
"spec_version": "1.1",
"spec_sha256": "54c91ca2c94de14228b7b09f36c806ecbd99e3ffa7ccbf667658a3b3126d9f75",
"spec_sha256": "68bcd4ab057563af26151fc8fa2416904db9dcb880cf01b326e358ca9e03029c",
"source_context": {
"document": "docs/keycloak-session-store/final/document.md",
"document_sha256": "88a081390dff22cd4171d5f9b534e46a37f6295c3b2652bc4c6fff0b578d5c6b",
"document_sha256": "28aef96a2bbb94fbb10ade26a71238fee62a5a4d9fa6e7749ae98cfd0a65e560",
"anchor": {
"kind": "heading",
"value": "관측 (observed)",
"line": 892
"line": 2963
}
},
"outputs": [
"ghost-row-cleanup-order.svg",
"ghost-row-cleanup-order.drawio",
"ghost-row-cleanup-order.mmd",
"ghost-row-cleanup-order.d2",
"ghost-row-cleanup-order.dot",
"ghost-row-cleanup-order.drawio",
"ghost-row-cleanup-order.excalidraw",
"ghost-row-cleanup-order.alt.md"
],
@@ -2,7 +2,7 @@
<svg xmlns="http://www.w3.org/2000/svg" width="1080" height="418" viewBox="0 0 1080 418" role="img" aria-labelledby="diagram-title diagram-description">
<title id="diagram-title">유령 행을 지운 쪽과 그 시각</title>
<desc id="diagram-description">왼쪽부터 kubectl, keycloak-0-60375, keycloak-1-36736, JGROUPS_PING, keycloak-0-16105 다섯 참여자가 생명선으로 선다. 1번 메시지에서 kubectl 이 keycloak-0-60375 를 --grace-period=0 --force 로 끊는다. 2번에서 07:40:28 에 남은 노드 keycloak-1-36736 의 뷰에서 그 노드가 빠진다. 3번이 이 그림의 중심이다 — 같은 07:40:28 에 JGROUPS_PING 의 행을 지우는 화살표가 keycloak-1-36736 에서 나온다. 강제 종료로 이미 끊긴 keycloak-0-60375 의 생명선에서는 테이블로 가는 화살표가 없다. 4번에서 20초 뒤 07:40:48 에 keycloak-0-16105 가 합류한다. 돌아온 노드의 이름은 접두사 keycloak-0 만 같고 접미사가 다르다.</desc>
<metadata>{&quot;techviz&quot;:{&quot;spec_version&quot;:&quot;1.1&quot;,&quot;id&quot;:&quot;ghost-row-cleanup-order&quot;,&quot;profile&quot;:&quot;sequence&quot;},&quot;source_context&quot;:{&quot;document&quot;:&quot;docs/keycloak-session-store/final/document.md&quot;,&quot;document_sha256&quot;:&quot;88a081390dff22cd4171d5f9b534e46a37f6295c3b2652bc4c6fff0b578d5c6b&quot;,&quot;anchor&quot;:{&quot;kind&quot;:&quot;heading&quot;,&quot;value&quot;:&quot;관측 (observed)&quot;,&quot;line&quot;:892}},&quot;evidence_policy&quot;:&quot;Each factual element cites source lines or is marked assumption.&quot;,&quot;diagram_only&quot;:true}</metadata>
<metadata>{&quot;techviz&quot;:{&quot;spec_version&quot;:&quot;1.1&quot;,&quot;id&quot;:&quot;ghost-row-cleanup-order&quot;,&quot;profile&quot;:&quot;sequence&quot;},&quot;source_context&quot;:{&quot;document&quot;:&quot;docs/keycloak-session-store/final/document.md&quot;,&quot;document_sha256&quot;:&quot;28aef96a2bbb94fbb10ade26a71238fee62a5a4d9fa6e7749ae98cfd0a65e560&quot;,&quot;anchor&quot;:{&quot;kind&quot;:&quot;heading&quot;,&quot;value&quot;:&quot;관측 (observed)&quot;,&quot;line&quot;:2963}},&quot;evidence_policy&quot;:&quot;Each factual element cites source lines or is marked assumption.&quot;,&quot;diagram_only&quot;:true}</metadata>
<defs>
<marker id="arrow" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse">
<path d="M 0 0 L 10 5 L 0 10 z" />
@@ -50,37 +50,37 @@
</style>
</defs>
<rect class="canvas" width="1080" height="418" />
<rect class="node-shape kind-participant emphasis-normal role-participant" data-evidence="886-888" x="45.0" y="35.0" width="150.0" height="64.0" rx="7" />
<rect class="node-shape kind-participant emphasis-normal role-participant" data-evidence="2957-2959" x="45.0" y="35.0" width="150.0" height="64.0" rx="7" />
<text class="node-label" x="120.0" y="65.0">kubectl</text>
<line class="lifeline" x1="120.0" y1="99.0" x2="120.0" y2="388.0" />
<rect class="node-shape kind-participant emphasis-warning role-participant" data-evidence="898-901" x="255.0" y="35.0" width="150.0" height="71.0" rx="7" />
<rect class="node-shape kind-participant emphasis-warning role-participant" data-evidence="2969-2972" x="255.0" y="35.0" width="150.0" height="71.0" rx="7" />
<text class="node-label" x="330.0" y="62.0">keycloak-0-60375</text>
<line class="node-detail-divider" x1="269.0" y1="83.0" x2="391.0" y2="83.0" />
<text class="node-detail" x="271.0" y="100.0">SIGKILL</text>
<line class="lifeline" x1="330.0" y1="106.0" x2="330.0" y2="388.0" />
<rect class="node-shape kind-participant emphasis-primary role-participant" data-evidence="914-916" x="465.0" y="35.0" width="150.0" height="71.0" rx="7" />
<rect class="node-shape kind-participant emphasis-primary role-participant" data-evidence="2985-2987" x="465.0" y="35.0" width="150.0" height="71.0" rx="7" />
<text class="node-label" x="540.0" y="62.0">keycloak-1-36736</text>
<line class="node-detail-divider" x1="479.0" y1="83.0" x2="601.0" y2="83.0" />
<text class="node-detail" x="481.0" y="100.0">코디네이터</text>
<line class="lifeline" x1="540.0" y1="106.0" x2="540.0" y2="388.0" />
<rect class="node-shape kind-participant emphasis-normal role-participant" data-evidence="888-888" x="675.0" y="35.0" width="150.0" height="64.0" rx="7" />
<rect class="node-shape kind-participant emphasis-normal role-participant" data-evidence="2959-2959" x="675.0" y="35.0" width="150.0" height="64.0" rx="7" />
<text class="node-label" x="750.0" y="65.0">JGROUPS_PING</text>
<line class="lifeline" x1="750.0" y1="99.0" x2="750.0" y2="388.0" />
<rect class="node-shape kind-participant emphasis-normal role-participant" data-evidence="918-920" x="885.0" y="35.0" width="150.0" height="71.0" rx="7" />
<rect class="node-shape kind-participant emphasis-normal role-participant" data-evidence="2989-2991" x="885.0" y="35.0" width="150.0" height="71.0" rx="7" />
<text class="node-label" x="960.0" y="62.0">keycloak-0-16105</text>
<line class="node-detail-divider" x1="899.0" y1="83.0" x2="1021.0" y2="83.0" />
<text class="node-detail" x="901.0" y="100.0">새 접미사</text>
<line class="lifeline" x1="960.0" y1="106.0" x2="960.0" y2="388.0" />
<polyline class="edge kind-request style-solid emphasis-normal" points="120.0,140.0 330.0,140.0" data-evidence="886-888" />
<polyline class="edge kind-request style-solid emphasis-normal" points="120.0,140.0 330.0,140.0" data-evidence="2957-2959" />
<rect class="edge-label-bg" x="145.6" y="114.0" width="158.7" height="22" rx="3" />
<text class="edge-label" x="225.0" y="129.0">1. delete pod --force</text>
<polyline class="edge kind-event style-dashed emphasis-normal semantic-dashed" points="330.0,202.0 540.0,202.0" data-evidence="906-907" />
<polyline class="edge kind-event style-dashed emphasis-normal semantic-dashed" points="330.0,202.0 540.0,202.0" data-evidence="2977-2978" />
<rect class="edge-label-bg" x="379.1" y="176.0" width="111.8" height="22" rx="3" />
<text class="edge-label" x="435.0" y="191.0">2. 이탈 07:40:28</text>
<polyline class="edge kind-data style-solid emphasis-primary" points="540.0,264.0 750.0,264.0" data-evidence="897-898,914-916" />
<polyline class="edge kind-data style-solid emphasis-primary" points="540.0,264.0 750.0,264.0" data-evidence="2968-2969,2985-2987" />
<rect class="edge-label-bg" x="582.4" y="238.0" width="125.2" height="22" rx="3" />
<text class="edge-label" x="645.0" y="253.0">3. 행 삭제 07:40:28</text>
<polyline class="edge kind-event style-dashed emphasis-normal semantic-dashed" points="960.0,326.0 540.0,326.0" data-evidence="908-909" />
<polyline class="edge kind-event style-dashed emphasis-normal semantic-dashed" points="960.0,326.0 540.0,326.0" data-evidence="2979-2980" />
<rect class="edge-label-bg" x="694.1" y="300.0" width="111.8" height="22" rx="3" />
<text class="edge-label" x="750.0" y="315.0">4. 합류 07:40:48</text>
</svg>

Before

Width:  |  Height:  |  Size: 7.7 KiB

After

Width:  |  Height:  |  Size: 7.7 KiB