Files
document-haness/docs/clean-architecture-backend-template/final/evidence/rendered/analysis-finding-a06-f008.svg
T
DongHyeonkaandClaude Opus 5 b2963105a8 docs(keycloak-session-store): import the session-storage lab as a new project
The keycloak project ended with four open questions that design could not
settle. A two-VM lab was built to answer them by measurement, and this is
that material: 26 experiments, 125 raw command outputs, 22 browser captures.

Follows the import procedure in README.md.

  source/     the originating repository verbatim — 78 documents, 28 SVGs,
              8 manifests, plus .source-revision recording the commit
  final/      the SSOT
    document.md   729 lines written from the 29 experiment documents, not
                  concatenated: what was predicted, what was measured, and
                  where the measurement itself was wrong
    evidence/raw    125 outputs, flattened to <experiment>__<file> because
                    the originals collided (01-baseline.txt appeared three
                    times) and the audit only globs the top level
    evidence/meta   one per raw file; command and exitCode are null and the
                    README says why rather than inventing them
    evidence/browser  22 captures
    assets/       three diagrams through techviz
    .techviz/     their VizSpecs

A separate project rather than an addition to keycloak: the B-layer answers
that project's four questions, but the A, C and D layers are about cluster
failure, SSO and operations, and one document.md should hold one subject.
The four question records there can point here through 관계.

Recorded rather than papered over: only three of the 28 diagrams were
remade. The repository forbids hand-drawn SVG and forbids titles inside the
canvas; all 28 originals carry both, so converting them is redrawing, not
reformatting. They stay in source/ and the gap is written into the document.

verify-pipeline.py passes. audit-records.py reports no issues.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-04 22:51:59 +09:00

302 lines
62 KiB
XML

<svg xmlns="http://www.w3.org/2000/svg" width="1200" height="6266" viewBox="0 0 1200 6266" role="img">
<title>terminal evidence</title>
<desc>Terminal-style rendering generated from retained command output. Sensitive-looking values are redacted in the visual asset.</desc>
<rect x="1" y="1" width="1198" height="6264" rx="14" fill="#0d1117" stroke="#30363d"/>
<rect x="1" y="1" width="1198" height="44" rx="14" fill="#161b22"/>
<rect x="1" y="30" width="1198" height="14" fill="#161b22"/>
<circle cx="24" cy="22" r="6" fill="#ff5f57"/>
<circle cx="44" cy="22" r="6" fill="#febc2e"/>
<circle cx="64" cy="22" r="6" fill="#28c840"/>
<text x="92" y="27" fill="#8b949e" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace">terminal evidence</text>
<text x="24" y="68" fill="#c9d1d9" font-size="15" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0">$ #!/bin/bash
set -euo pipefail
cd /shared/codebase/clean-architecture-backend-template
. /tmp/lib.sh
M=src/adapter/outb</tspan><tspan x="24" dy="22">ound/persistence-mongo/src/main/java/dev/caskeleton/adapter/outbound/mongo
B=$M/imperative/BoundScopedOperations.java
A=</tspan><tspan x="24" dy="22">$M/imperative/MongoPlatformCollectionAccess.java
C=$M/imperative/MongoCollectionAccess.java
E=$M/imperative/DefaultMongo</tspan><tspan x="24" dy="22">ImperativeExecutor.java
G=$M/aggregation/PolicyAwareMongoAggregationExecutor.java
Q=$M/query/PolicyAwareMongoQueryBuilde</tspan><tspan x="24" dy="22">r.java
for f in &quot;$B&quot; &quot;$A&quot; &quot;$C&quot; &quot;$E&quot; &quot;$G&quot; &quot;$Q&quot;; do test -f &quot;$f&quot;; done
echo &quot;# 이 타입이 존재하는 이유&quot;
at &quot;$B&quot; 12 27 Bou</tspan><tspan x="24" dy="22">ndScopedOperations.java
echo &quot; 그 데드라인이 실제로 붙는 자리 :&quot;
hits &#x27;maxTimeMsec|maxTimeMS|maxTime\(&#x27; &quot;$B&quot; | sed -E &#x27;</tspan><tspan x="24" dy="22">s#^.*/([A-Za-z0-9_]+\.java):([0-9]+): *# \1:\2 #&#x27;
echo
at &quot;$B&quot; 48 56 BoundScopedOperations.java
echo
at &quot;$B&quot; 92 102 </tspan><tspan x="24" dy="22">BoundScopedOperations.java
echo
echo &quot;# 그 타입에 닿는 유일한 문&quot;
at &quot;$C&quot; 24 33 MongoCollectionAccess.java
echo
at &quot;$A&quot;</tspan><tspan x="24" dy="22"> 5 20 MongoPlatformCollectionAccess.java
echo
echo &quot;# 두 접근자를 부르는 자리 전수&quot;
printf &#x27; 저장소 전체에서 scoped() </tspan><tspan x="24" dy="22">를 부르는 줄 : %s 개\n&#x27; &quot;$(lines &#x27;\.scoped\(\)&#x27; &#x27;src/**/*.java&#x27;)&quot;
printf &#x27; 저장소 전체에서 rawOperations() 를 부르는 줄</tspan><tspan x="24" dy="22"> : %s 개\n&#x27; &quot;$(lines &#x27;\.rawOperations\(\)&#x27; &#x27;src/**/*.java&#x27;)&quot;
echo &quot; 두 이름이 나오는 자리 전부 (선언 포함) :&quot;
hits &#x27;sco</tspan><tspan x="24" dy="22">ped\(\)|rawOperations\(\)&#x27; &#x27;src/**/*.java&#x27; \
| sed -E &#x27;s#^src/(.*)/src/([a-zA-Z]+)/java/.*/([A-Za-z0-9_$]+\.java):([0-</tspan><tspan x="24" dy="22">9]+): *# \2 · \3:\4 #&#x27;
printf &#x27; [대조] 그 검색이 훑은 파일 : %s 개\n&#x27; &quot;$(git ls-files -- &#x27;src/**/*.java&#x27; | grep -c</tspan><tspan x="24" dy="22"> .)&quot;
echo
echo &quot;# rawOperations 가 무엇을 돌려주는가&quot;
at &quot;$E&quot; 180 196 DefaultMongoImperativeExecutor.java
echo
echo &quot;#</tspan><tspan x="24" dy="22"> 서버에 데드라인을 실제로 붙이는 다른 경로들&quot;
at &quot;$G&quot; 88 108 PolicyAwareMongoAggregationExecutor.java
echo &quot; maxTimeMil</tspan><tspan x="24" dy="22">lis 를 부르는 자리 전부 (에러 메시지 포함) :&quot;
hits &#x27;maxTimeMillis\(\)&#x27; &#x27;src/adapter/outbound/persistence-mongo/src/main/</tspan><tspan x="24" dy="22">**/*.java&#x27; \
| sed -E &#x27;s#^.*/([A-Za-z0-9_]+\.java):([0-9]+): *# \1:\2 #&#x27;
echo &quot; context.timeout() 이나 narrowedTo</tspan><tspan x="24" dy="22"> 가 나오는 자리 전부 :&quot;
hits &#x27;narrowedTo|context\.timeout\(\)&#x27; &#x27;src/adapter/outbound/persistence-mongo/src/main/**/*.jav</tspan><tspan x="24" dy="22">a&#x27; \
| sed -E &#x27;s#^.*/([A-Za-z0-9_]+\.java):([0-9]+): *# \1:\2 #&#x27;
echo
echo &quot;# 그 다섯 자리를 가진 세 실행기가 조</tspan><tspan x="24" dy="22">립되는가&quot;
hits &#x27;MongoAtomicOperationsTemplate\(|MongoBulkExecutor\(|SpringMongoGeospatialOperations\(&#x27; &#x27;src/**/src/main/</tspan><tspan x="24" dy="22">**/*.java&#x27; \
| sed -E &#x27;s#^.*/([A-Za-z0-9_]+\.java):([0-9]+): *# \1:\2 #&#x27;
echo &quot; 그 셋이 자기 안에서 데드라인을 따</tspan><tspan x="24" dy="22">로 거는가 :&quot;
for t in geo/SpringMongoGeospatialOperations imperative/atomic/MongoAtomicOperationsTemplate imperative/bul</tspan><tspan x="24" dy="22">k/MongoBulkExecutor; do
printf &#x27; %-34s maxTime 이나 timeout 이 나오는 줄 : %s 개\n&#x27; &quot;$(basename &quot;$t&quot;).java&quot; \
&quot;</tspan><tspan x="24" dy="22">$(lines &#x27;maxTime|[Tt]imeout&#x27; &quot;$M/$t.java&quot;)&quot;
done
printf &#x27; [대조] 같은 검색을 BoundScopedOperations 에 걸면 : %s 줄\n&#x27;</tspan><tspan x="24" dy="22"> &quot;$(lines &#x27;maxTime|[Tt]imeout&#x27; &quot;$B&quot;)&quot;
echo
echo &quot;# 저장소가 그 손잡이를 어떻게 지키는가&quot;
X=src/app-bootstrap/src/test/j</tspan><tspan x="24" dy="22">ava/dev/caskeleton/bootstrap/architecture/MongoRawAccessBoundaryTest.java
test -f &quot;$X&quot;
at &quot;$X&quot; 15 32 MongoRawAccessBound</tspan><tspan x="24" dy="22">aryTest.java
at &quot;$X&quot; 35 41 MongoRawAccessBoundaryTest.java
echo
echo &quot;# 세 실행기가 대신 하는 것&quot;
at &quot;$E&quot; 85 106 Defaul</tspan><tspan x="24" dy="22">tMongoImperativeExecutor.java
</tspan></text>
<text x="24" y="684" fill="#8b949e" font-size="13" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0">cwd: /shared/codebase/clean-architecture-backend-template</tspan></text>
<text x="24" y="706" fill="#8b949e" font-size="13" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0">time: 2026-09-04T07:52:57+00:00 · exit 0</tspan></text>
<line x1="24" y1="720" x2="1176" y2="720" stroke="#30363d"/>
<text x="24" y="760" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"># 이 타입이 존재하는 이유</tspan></text>
<text x="24" y="782" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> BoundScopedOperations.java:12 /**</tspan></text>
<text x="24" y="804" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> BoundScopedOperations.java:13 * {@link ScopedMongoOperations} over one physical collection.</tspan></text>
<text x="24" y="826" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> BoundScopedOperations.java:14 *</tspan></text>
<text x="24" y="848" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> BoundScopedOperations.java:15 * &lt;p&gt;Every method passes the collection this scope was built with. That is the whole implementa</tspan><tspan x="24" dy="22">tion</tspan></text>
<text x="24" y="892" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> BoundScopedOperations.java:16 * and the whole point: a caller cannot supply a different one, so the registered collection pro</tspan><tspan x="24" dy="22">file</tspan></text>
<text x="24" y="936" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> BoundScopedOperations.java:17 * and any tenant boundary derived from it hold without the caller having to cooperate.</tspan></text>
<text x="24" y="958" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> BoundScopedOperations.java:18 *</tspan></text>
<text x="24" y="980" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> BoundScopedOperations.java:19 * &lt;p&gt;Every query-shaped method also carries the operation&#x27;s deadline as {@code maxTimeMS}, and </tspan><tspan x="24" dy="22">that</tspan></text>
<text x="24" y="1024" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> BoundScopedOperations.java:20 * is the difference between a deadline and a report about one. The blocking executor could only</tspan></text>
<text x="24" y="1046" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> BoundScopedOperations.java:21 * measure elapsed time after the callback returned — a Java callback cannot be interrupted mid</tspan></text>
<text x="24" y="1068" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> BoundScopedOperations.java:22 * driver call — so an operation that ran past its budget was detected, never stopped. Sent to </tspan><tspan x="24" dy="22">the</tspan></text>
<text x="24" y="1112" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> BoundScopedOperations.java:23 * server, the same number ends the work.</tspan></text>
<text x="24" y="1134" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> BoundScopedOperations.java:24 *</tspan></text>
<text x="24" y="1156" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> BoundScopedOperations.java:25 * &lt;p&gt;It applies to the methods that take a {@link Query} or an {@link Aggregation}, because tho</tspan><tspan x="24" dy="22">se</tspan></text>
<text x="24" y="1200" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> BoundScopedOperations.java:26 * are the ones the server can cut short. {@code insert} carries no query to attach it to.</tspan></text>
<text x="24" y="1222" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> BoundScopedOperations.java:27 */</tspan></text>
<text x="24" y="1244" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> 그 데드라인이 실제로 붙는 자리 :</tspan></text>
<text x="24" y="1266" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> BoundScopedOperations.java:19 * &lt;p&gt;Every query-shaped method also carries the operation&#x27;s deadline as {@code maxTimeMS}, an</tspan><tspan x="24" dy="22">d that</tspan></text>
<text x="24" y="1310" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> BoundScopedOperations.java:53 return query.maxTimeMsec(timeout.toMillis());</tspan></text>
<text x="24" y="1332" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> BoundScopedOperations.java:98 .maxTime(timeout)</tspan></text>
<text x="24" y="1354" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"></tspan></text>
<text x="24" y="1376" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> BoundScopedOperations.java:48 * &lt;p&gt;Mutates the caller&#x27;s query rather than copying it, which is what Spring Data&#x27;s own fluen</tspan><tspan x="24" dy="22">t</tspan></text>
<text x="24" y="1420" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> BoundScopedOperations.java:49 * API does; a copy would silently drop any hint, collation or read preference the caller set.</tspan></text>
<text x="24" y="1442" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> BoundScopedOperations.java:50 */</tspan></text>
<text x="24" y="1464" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> BoundScopedOperations.java:51 private Query bounded(Query query) {</tspan></text>
<text x="24" y="1486" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> BoundScopedOperations.java:52 Objects.requireNonNull(query, &quot;query&quot;);</tspan></text>
<text x="24" y="1508" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> BoundScopedOperations.java:53 return query.maxTimeMsec(timeout.toMillis());</tspan></text>
<text x="24" y="1530" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> BoundScopedOperations.java:54 }</tspan></text>
<text x="24" y="1552" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> BoundScopedOperations.java:55 </tspan></text>
<text x="24" y="1574" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> BoundScopedOperations.java:56 @Override</tspan></text>
<text x="24" y="1596" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"></tspan></text>
<text x="24" y="1618" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> BoundScopedOperations.java:92 </tspan></text>
<text x="24" y="1640" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> BoundScopedOperations.java:93 @Override</tspan></text>
<text x="24" y="1662" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> BoundScopedOperations.java:94 public &lt;T&gt; List&lt;T&gt; aggregate(Aggregation aggregation, Class&lt;T&gt; resultType) {</tspan></text>
<text x="24" y="1684" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> BoundScopedOperations.java:95 Aggregation bounded =</tspan></text>
<text x="24" y="1706" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> BoundScopedOperations.java:96 aggregation.withOptions(</tspan></text>
<text x="24" y="1728" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> BoundScopedOperations.java:97 org.springframework.data.mongodb.core.aggregation.AggregationOptions.builder()</tspan></text>
<text x="24" y="1750" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> BoundScopedOperations.java:98 .maxTime(timeout)</tspan></text>
<text x="24" y="1772" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> BoundScopedOperations.java:99 .build());</tspan></text>
<text x="24" y="1794" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> BoundScopedOperations.java:100 return operations.aggregate(bounded, collection, resultType).getMappedResults();</tspan></text>
<text x="24" y="1816" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> BoundScopedOperations.java:101 }</tspan></text>
<text x="24" y="1838" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> BoundScopedOperations.java:102 }</tspan></text>
<text x="24" y="1860" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"></tspan></text>
<text x="24" y="1882" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"># 그 타입에 닿는 유일한 문</tspan></text>
<text x="24" y="1904" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> MongoCollectionAccess.java:24 </tspan></text>
<text x="24" y="1926" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> MongoCollectionAccess.java:25 /**</tspan></text>
<text x="24" y="1948" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> MongoCollectionAccess.java:26 * The operations this callback may perform.</tspan></text>
<text x="24" y="1970" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> MongoCollectionAccess.java:27 *</tspan></text>
<text x="24" y="1992" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> MongoCollectionAccess.java:28 * &lt;p&gt;Scoped: no method takes a collection name, so the check {@link #collection(String)} perf</tspan><tspan x="24" dy="22">orms</tspan></text>
<text x="24" y="2036" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> MongoCollectionAccess.java:29 * cannot be bypassed by not calling it. The previous {@code MongoOperations} accessor could r</tspan><tspan x="24" dy="22">each</tspan></text>
<text x="24" y="2080" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> MongoCollectionAccess.java:30 * any collection in the database.</tspan></text>
<text x="24" y="2102" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> MongoCollectionAccess.java:31 */</tspan></text>
<text x="24" y="2124" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> MongoCollectionAccess.java:32 ScopedMongoOperations scoped();</tspan></text>
<text x="24" y="2146" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> MongoCollectionAccess.java:33 }</tspan></text>
<text x="24" y="2168" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"></tspan></text>
<text x="24" y="2190" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> MongoPlatformCollectionAccess.java:5 /**</tspan></text>
<text x="24" y="2212" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> MongoPlatformCollectionAccess.java:6 * Raw access, for the platform&#x27;s own executors only.</tspan></text>
<text x="24" y="2234" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> MongoPlatformCollectionAccess.java:7 *</tspan></text>
<text x="24" y="2256" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> MongoPlatformCollectionAccess.java:8 * &lt;p&gt;The bulk, atomic, aggregation and geospatial executors build driver-level commands </tspan><tspan x="24" dy="22">and need</tspan></text>
<text x="24" y="2300" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> MongoPlatformCollectionAccess.java:9 * the unrestricted template. They are inside the platform and are the code that installs</tspan><tspan x="24" dy="22"> the</tspan></text>
<text x="24" y="2344" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> MongoPlatformCollectionAccess.java:10 * guardrails, which is a different position from a caller&#x27;s callback — so the raw hand</tspan><tspan x="24" dy="22">le is a type</tspan></text>
<text x="24" y="2388" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> MongoPlatformCollectionAccess.java:11 * they ask for by name rather than something every callback receives.</tspan></text>
<text x="24" y="2410" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> MongoPlatformCollectionAccess.java:12 *</tspan></text>
<text x="24" y="2432" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> MongoPlatformCollectionAccess.java:13 * &lt;p&gt;Keeping it out of {@link MongoCollectionAccess} is the point. An interface that of</tspan><tspan x="24" dy="22">fers both a</tspan></text>
<text x="24" y="2476" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> MongoPlatformCollectionAccess.java:14 * scoped API and an escape hatch offers an escape hatch.</tspan></text>
<text x="24" y="2498" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> MongoPlatformCollectionAccess.java:15 */</tspan></text>
<text x="24" y="2520" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> MongoPlatformCollectionAccess.java:16 public interface MongoPlatformCollectionAccess extends MongoCollectionAccess {</tspan></text>
<text x="24" y="2542" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> MongoPlatformCollectionAccess.java:17 </tspan></text>
<text x="24" y="2564" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> MongoPlatformCollectionAccess.java:18 /** The template bound to the operation&#x27;s consistency profile, with no collection scop</tspan><tspan x="24" dy="22">ing. */</tspan></text>
<text x="24" y="2608" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> MongoPlatformCollectionAccess.java:19 MongoOperations rawOperations();</tspan></text>
<text x="24" y="2630" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> MongoPlatformCollectionAccess.java:20 }</tspan></text>
<text x="24" y="2652" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"></tspan></text>
<text x="24" y="2674" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"># 두 접근자를 부르는 자리 전수</tspan></text>
<text x="24" y="2696" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> 저장소 전체에서 scoped() 를 부르는 줄 : 0 개</tspan></text>
<text x="24" y="2718" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> 저장소 전체에서 rawOperations() 를 부르는 줄 : 7 개</tspan></text>
<text x="24" y="2740" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> 두 이름이 나오는 자리 전부 (선언 포함) :</tspan></text>
<text x="24" y="2762" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> main · SpringMongoGeospatialOperations.java:58 return access.rawOperations().find(near, documentType, access.collection())</tspan><tspan x="24" dy="22">;</tspan></text>
<text x="24" y="2806" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> main · SpringMongoGeospatialOperations.java:82 return access.rawOperations().find(within, documentType, access.collection(</tspan><tspan x="24" dy="22">));</tspan></text>
<text x="24" y="2850" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> main · DefaultMongoImperativeExecutor.java:184 public ScopedMongoOperations scoped() {</tspan></text>
<text x="24" y="2872" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> main · DefaultMongoImperativeExecutor.java:192 public MongoOperations rawOperations() {</tspan></text>
<text x="24" y="2894" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> main · MongoCollectionAccess.java:32 ScopedMongoOperations scoped();</tspan></text>
<text x="24" y="2916" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> main · MongoPlatformCollectionAccess.java:19 MongoOperations rawOperations();</tspan></text>
<text x="24" y="2938" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> main · MongoAtomicOperationsTemplate.java:84 access.rawOperations(),</tspan></text>
<text x="24" y="2960" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> main · MongoAtomicOperationsTemplate.java:92 access.rawOperations(),</tspan></text>
<text x="24" y="2982" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> main · MongoBulkExecutor.java:69 access.rawOperations().bulkOps(plan.mode().toSpringMode(), access.collection());</tspan></text>
<text x="24" y="3004" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> main · DefaultReactiveMongoExecutor.java:218 public ReactiveScopedMongoOperations scoped() {</tspan></text>
<text x="24" y="3026" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> main · ReactiveMongoCollectionAccess.java:31 ReactiveScopedMongoOperations scoped();</tspan></text>
<text x="24" y="3048" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> test · MongoRawAccessBoundaryTest.java:18 * &lt;p&gt;{@code MongoPlatformCollectionAccess.rawOperations()} and {@code</tspan></text>
<text x="24" y="3070" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> test · MongoRawAccessBoundaryTest.java:37 List.of(&quot;.rawOperations()&quot;, &quot;.executeInternal(&quot;);</tspan></text>
<text x="24" y="3092" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> [대조] 그 검색이 훑은 파일 : 6444 개</tspan></text>
<text x="24" y="3114" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"></tspan></text>
<text x="24" y="3136" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"># rawOperations 가 무엇을 돌려주는가</tspan></text>
<text x="24" y="3158" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> DefaultMongoImperativeExecutor.java:180 return physicalCollection;</tspan></text>
<text x="24" y="3180" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> DefaultMongoImperativeExecutor.java:181 }</tspan></text>
<text x="24" y="3202" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> DefaultMongoImperativeExecutor.java:182 </tspan></text>
<text x="24" y="3224" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> DefaultMongoImperativeExecutor.java:183 @Override</tspan></text>
<text x="24" y="3246" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> DefaultMongoImperativeExecutor.java:184 public ScopedMongoOperations scoped() {</tspan></text>
<text x="24" y="3268" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> DefaultMongoImperativeExecutor.java:185 // The deadline travels with the scope. The executor can only measure elapsed ti</tspan><tspan x="24" dy="22">me after the</tspan></text>
<text x="24" y="3312" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> DefaultMongoImperativeExecutor.java:186 // callback returns; the scoped operations send the same number to the server as</tspan><tspan x="24" dy="22"> maxTimeMS,</tspan></text>
<text x="24" y="3356" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> DefaultMongoImperativeExecutor.java:187 // where it actually ends the work.</tspan></text>
<text x="24" y="3378" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> DefaultMongoImperativeExecutor.java:188 return new BoundScopedOperations(physicalCollection, operations, timeout);</tspan></text>
<text x="24" y="3400" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> DefaultMongoImperativeExecutor.java:189 }</tspan></text>
<text x="24" y="3422" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> DefaultMongoImperativeExecutor.java:190 </tspan></text>
<text x="24" y="3444" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> DefaultMongoImperativeExecutor.java:191 @Override</tspan></text>
<text x="24" y="3466" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> DefaultMongoImperativeExecutor.java:192 public MongoOperations rawOperations() {</tspan></text>
<text x="24" y="3488" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> DefaultMongoImperativeExecutor.java:193 return operations;</tspan></text>
<text x="24" y="3510" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> DefaultMongoImperativeExecutor.java:194 }</tspan></text>
<text x="24" y="3532" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> DefaultMongoImperativeExecutor.java:195 }</tspan></text>
<text x="24" y="3554" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> DefaultMongoImperativeExecutor.java:196 }</tspan></text>
<text x="24" y="3576" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"></tspan></text>
<text x="24" y="3598" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"># 서버에 데드라인을 실제로 붙이는 다른 경로들</tspan></text>
<text x="24" y="3620" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PolicyAwareMongoAggregationExecutor.java:88 </tspan></text>
<text x="24" y="3642" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PolicyAwareMongoAggregationExecutor.java:89 private static MongoOperationBudget budgetFor(</tspan></text>
<text x="24" y="3664" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PolicyAwareMongoAggregationExecutor.java:90 MongoOperationContext context, MongoOperationBudget registered) {</tspan></text>
<text x="24" y="3686" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PolicyAwareMongoAggregationExecutor.java:91 // The context&#x27;s timeout is the caller&#x27;s deadline; it may tighten maxTimeMS bu</tspan><tspan x="24" dy="22">t never extend it.</tspan></text>
<text x="24" y="3730" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PolicyAwareMongoAggregationExecutor.java:92 long contextMillis = Math.max(1L, context.timeout().toMillis());</tspan></text>
<text x="24" y="3752" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PolicyAwareMongoAggregationExecutor.java:93 return new MongoOperationBudget(</tspan></text>
<text x="24" y="3774" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PolicyAwareMongoAggregationExecutor.java:94 registered.maxResults(),</tspan></text>
<text x="24" y="3796" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PolicyAwareMongoAggregationExecutor.java:95 registered.maxResultBytes(),</tspan></text>
<text x="24" y="3818" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PolicyAwareMongoAggregationExecutor.java:96 Math.min(registered.maxTimeMillis(), contextMillis),</tspan></text>
<text x="24" y="3840" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PolicyAwareMongoAggregationExecutor.java:97 registered.cursorBatchSize());</tspan></text>
<text x="24" y="3862" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PolicyAwareMongoAggregationExecutor.java:98 }</tspan></text>
<text x="24" y="3884" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PolicyAwareMongoAggregationExecutor.java:99 </tspan></text>
<text x="24" y="3906" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PolicyAwareMongoAggregationExecutor.java:100 private static AggregationOptions optionsFor(</tspan></text>
<text x="24" y="3928" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PolicyAwareMongoAggregationExecutor.java:101 MongoAggregationProfile profile, MongoOperationBudget budget) {</tspan></text>
<text x="24" y="3950" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PolicyAwareMongoAggregationExecutor.java:102 AggregationOptions.Builder options =</tspan></text>
<text x="24" y="3972" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PolicyAwareMongoAggregationExecutor.java:103 AggregationOptions.builder()</tspan></text>
<text x="24" y="3994" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PolicyAwareMongoAggregationExecutor.java:104 .allowDiskUse(profile.allowDiskUse())</tspan></text>
<text x="24" y="4016" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PolicyAwareMongoAggregationExecutor.java:105 .cursorBatchSize(budget.cursorBatchSize())</tspan></text>
<text x="24" y="4038" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PolicyAwareMongoAggregationExecutor.java:106 .maxTime(Duration.ofMillis(budget.maxTimeMillis()));</tspan></text>
<text x="24" y="4060" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PolicyAwareMongoAggregationExecutor.java:107 return profile.strictMapping() ? options.strictMapping().build() : options.bu</tspan><tspan x="24" dy="22">ild();</tspan></text>
<text x="24" y="4104" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PolicyAwareMongoAggregationExecutor.java:108 }</tspan></text>
<text x="24" y="4126" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> maxTimeMillis 를 부르는 자리 전부 (에러 메시지 포함) :</tspan></text>
<text x="24" y="4148" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PolicyAwareMongoAggregationExecutor.java:96 Math.min(registered.maxTimeMillis(), contextMillis),</tspan></text>
<text x="24" y="4170" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PolicyAwareMongoAggregationExecutor.java:106 .maxTime(Duration.ofMillis(budget.maxTimeMillis()));</tspan></text>
<text x="24" y="4192" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PolicyAwareMongoQueryBuilder.java:200 query.maxTimeMsec(budget.maxTimeMillis());</tspan></text>
<text x="24" y="4214" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> MongoBudgetEnforcer.java:36 + requested.maxTimeMillis()</tspan></text>
<text x="24" y="4236" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> MongoBudgetEnforcer.java:44 + registered.maxTimeMillis()</tspan></text>
<text x="24" y="4258" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> MongoReactiveCursorPublisher.java:58 .maxTimeMsec(budget.maxTimeMillis())</tspan></text>
<text x="24" y="4280" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> context.timeout() 이나 narrowedTo 가 나오는 자리 전부 :</tspan></text>
<text x="24" y="4302" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PolicyAwareMongoAggregationExecutor.java:72 enforcer.narrow(budget, budget.narrowedTo(budgetFor(context, budget)));</tspan></text>
<text x="24" y="4324" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PolicyAwareMongoAggregationExecutor.java:92 long contextMillis = Math.max(1L, context.timeout().toMillis());</tspan></text>
<text x="24" y="4346" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> DefaultMongoImperativeExecutor.java:83 ScopedAccess access = new ScopedAccess(physicalCollection, operations, context.timeo</tspan><tspan x="24" dy="22">ut());</tspan></text>
<text x="24" y="4390" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> DefaultMongoImperativeExecutor.java:93 if (elapsed.compareTo(context.timeout()) &gt; 0) {</tspan></text>
<text x="24" y="4412" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> DefaultMongoImperativeExecutor.java:103 + context.timeout().toMillis()</tspan></text>
<text x="24" y="4434" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> MongoBudgetEnforcer.java:57 return registered.narrowedTo(requested);</tspan></text>
<text x="24" y="4456" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> MongoOperationBudget.java:43 public MongoOperationBudget narrowedTo(MongoOperationBudget other) {</tspan></text>
<text x="24" y="4478" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> DefaultReactiveMongoExecutor.java:76 .timeout(context.timeout())</tspan></text>
<text x="24" y="4500" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> DefaultReactiveMongoExecutor.java:108 .timeout(context.timeout())</tspan></text>
<text x="24" y="4522" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> DefaultReactiveMongoExecutor.java:154 context.operationName(), operationType, context.timeout()),</tspan></text>
<text x="24" y="4544" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"></tspan></text>
<text x="24" y="4566" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"># 그 다섯 자리를 가진 세 실행기가 조립되는가</tspan></text>
<text x="24" y="4588" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> MongoPlatformAutoConfiguration.java:154 .MongoAtomicOperationsTemplate(executor, policies);</tspan></text>
<text x="24" y="4610" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> MongoPlatformAutoConfiguration.java:169 return new dev.caskeleton.adapter.outbound.mongo.imperative.bulk.MongoBulkExecutor(</tspan></text>
<text x="24" y="4632" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> SpringMongoGeospatialOperations.java:31 public SpringMongoGeospatialOperations(</tspan></text>
<text x="24" y="4654" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> MongoAtomicOperationsTemplate.java:27 public MongoAtomicOperationsTemplate(</tspan></text>
<text x="24" y="4676" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> MongoBulkExecutor.java:43 public MongoBulkExecutor(</tspan></text>
<text x="24" y="4698" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> 그 셋이 자기 안에서 데드라인을 따로 거는가 :</tspan></text>
<text x="24" y="4720" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> SpringMongoGeospatialOperations.java maxTime 이나 timeout 이 나오는 줄 : 0 개</tspan></text>
<text x="24" y="4742" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> MongoAtomicOperationsTemplate.java maxTime 이나 timeout 이 나오는 줄 : 0 개</tspan></text>
<text x="24" y="4764" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> MongoBulkExecutor.java maxTime 이나 timeout 이 나오는 줄 : 0 개</tspan></text>
<text x="24" y="4786" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> [대조] 같은 검색을 BoundScopedOperations 에 걸면 : 8 줄</tspan></text>
<text x="24" y="4808" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"></tspan></text>
<text x="24" y="4830" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"># 저장소가 그 손잡이를 어떻게 지키는가</tspan></text>
<text x="24" y="4852" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> MongoRawAccessBoundaryTest.java:15 /**</tspan></text>
<text x="24" y="4874" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> MongoRawAccessBoundaryTest.java:16 * The Mongo platform&#x27;s raw escape hatches stay inside the platform.</tspan></text>
<text x="24" y="4896" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> MongoRawAccessBoundaryTest.java:17 *</tspan></text>
<text x="24" y="4918" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> MongoRawAccessBoundaryTest.java:18 * &lt;p&gt;{@code MongoPlatformCollectionAccess.rawOperations()} and {@code</tspan></text>
<text x="24" y="4940" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> MongoRawAccessBoundaryTest.java:19 * DefaultMongoImperativeExecutor.executeInternal(...)} hand out Spring Data&#x27;s unbounded {@</tspan><tspan x="24" dy="22">code</tspan></text>
<text x="24" y="4984" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> MongoRawAccessBoundaryTest.java:20 * MongoOperations} — no collection binding, no consistency template, no deadline, no resu</tspan><tspan x="24" dy="22">lt budget.</tspan></text>
<text x="24" y="5028" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> MongoRawAccessBoundaryTest.java:21 * The scoped API exists precisely so a caller cannot reach those, and the only thing stopp</tspan><tspan x="24" dy="22">ing one</tspan></text>
<text x="24" y="5072" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> MongoRawAccessBoundaryTest.java:22 * was a javadoc sentence saying &quot;not public API for callers&quot;.</tspan></text>
<text x="24" y="5094" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> MongoRawAccessBoundaryTest.java:23 *</tspan></text>
<text x="24" y="5116" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> MongoRawAccessBoundaryTest.java:24 * &lt;p&gt;Both are genuinely needed *inside* the platform: the geospatial, atomic and bulk oper</tspan><tspan x="24" dy="22">ations</tspan></text>
<text x="24" y="5160" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> MongoRawAccessBoundaryTest.java:25 * are built on them. So the rule is not &quot;delete them&quot; but &quot;nobody outside may call them&quot;, </tspan><tspan x="24" dy="22">which is</tspan></text>
<text x="24" y="5204" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> MongoRawAccessBoundaryTest.java:26 * a boundary rather than a visibility problem — the callers live in sibling packages, so </tspan><tspan x="24" dy="22">Java&#x27;s</tspan></text>
<text x="24" y="5248" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> MongoRawAccessBoundaryTest.java:27 * package-private cannot express it.</tspan></text>
<text x="24" y="5270" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> MongoRawAccessBoundaryTest.java:28 *</tspan></text>
<text x="24" y="5292" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> MongoRawAccessBoundaryTest.java:29 * &lt;p&gt;Checked from the composition root because that is the only place that sees both the p</tspan><tspan x="24" dy="22">latform</tspan></text>
<text x="24" y="5336" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> MongoRawAccessBoundaryTest.java:30 * and everything that consumes it. A rule living inside the Mongo leaf could only ever pro</tspan><tspan x="24" dy="22">ve the</tspan></text>
<text x="24" y="5380" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> MongoRawAccessBoundaryTest.java:31 * leaf does not violate itself.</tspan></text>
<text x="24" y="5402" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> MongoRawAccessBoundaryTest.java:32 */</tspan></text>
<text x="24" y="5424" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> MongoRawAccessBoundaryTest.java:35 /** The escape hatches, by the text a caller would have to write to use one. */</tspan></text>
<text x="24" y="5446" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> MongoRawAccessBoundaryTest.java:36 private static final List&lt;String&gt; ESCAPE_HATCHES =</tspan></text>
<text x="24" y="5468" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> MongoRawAccessBoundaryTest.java:37 List.of(&quot;.rawOperations()&quot;, &quot;.executeInternal(&quot;);</tspan></text>
<text x="24" y="5490" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> MongoRawAccessBoundaryTest.java:38 </tspan></text>
<text x="24" y="5512" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> MongoRawAccessBoundaryTest.java:39 /** Where they may be used: the Mongo adapter&#x27;s own production sources. */</tspan></text>
<text x="24" y="5534" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> MongoRawAccessBoundaryTest.java:40 private static final String PLATFORM_SOURCE =</tspan></text>
<text x="24" y="5556" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> MongoRawAccessBoundaryTest.java:41 &quot;/src/adapter/outbound/persistence-mongo/src/main/java/&quot;;</tspan></text>
<text x="24" y="5578" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"></tspan></text>
<text x="24" y="5600" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"># 세 실행기가 대신 하는 것</tspan></text>
<text x="24" y="5622" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> DefaultMongoImperativeExecutor.java:85 long startedAt = System.nanoTime();</tspan></text>
<text x="24" y="5644" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> DefaultMongoImperativeExecutor.java:86 try (MongoOperationObservation observation = observer.start(context, operationType)</tspan><tspan x="24" dy="22">) {</tspan></text>
<text x="24" y="5688" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> DefaultMongoImperativeExecutor.java:87 try {</tspan></text>
<text x="24" y="5710" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> DefaultMongoImperativeExecutor.java:88 T value = callback.doInMongo(access);</tspan></text>
<text x="24" y="5732" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> DefaultMongoImperativeExecutor.java:89 Duration elapsed = Duration.ofNanos(System.nanoTime() - startedAt);</tspan></text>
<text x="24" y="5754" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> DefaultMongoImperativeExecutor.java:90 // A read is not a confirmed write. Recording every successful FIND as WRITE_CO</tspan><tspan x="24" dy="22">NFIRMED made</tspan></text>
<text x="24" y="5798" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> DefaultMongoImperativeExecutor.java:91 // the metric that answers &quot;are writes being acknowledged&quot; count reads as well.</tspan></text>
<text x="24" y="5820" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> DefaultMongoImperativeExecutor.java:92 MongoExecutionOutcome outcome = MongoCompletion.successOutcomeFor(operationType</tspan><tspan x="24" dy="22">);</tspan></text>
<text x="24" y="5864" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> DefaultMongoImperativeExecutor.java:93 if (elapsed.compareTo(context.timeout()) &gt; 0) {</tspan></text>
<text x="24" y="5886" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> DefaultMongoImperativeExecutor.java:94 // The context declares a deadline on every operation and nothing compared an</tspan><tspan x="24" dy="22">ything to it.</tspan></text>
<text x="24" y="5930" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> DefaultMongoImperativeExecutor.java:95 // A callback cannot be interrupted mid-driver-call, so this cannot cut the w</tspan><tspan x="24" dy="22">ork short —</tspan></text>
<text x="24" y="5974" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> DefaultMongoImperativeExecutor.java:96 // but reporting a breach beats reporting success for work that ran past its </tspan><tspan x="24" dy="22">budget.</tspan></text>
<text x="24" y="6018" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> DefaultMongoImperativeExecutor.java:97 observation.success(outcome);</tspan></text>
<text x="24" y="6040" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> DefaultMongoImperativeExecutor.java:98 throw MongoOperationRejectedException.of(</tspan></text>
<text x="24" y="6062" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> DefaultMongoImperativeExecutor.java:99 context.operationName().value(),</tspan></text>
<text x="24" y="6084" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> DefaultMongoImperativeExecutor.java:100 &quot;the operation ran for &quot;</tspan></text>
<text x="24" y="6106" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> DefaultMongoImperativeExecutor.java:101 + elapsed.toMillis()</tspan></text>
<text x="24" y="6128" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> DefaultMongoImperativeExecutor.java:102 + &quot;ms against a declared timeout of &quot;</tspan></text>
<text x="24" y="6150" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> DefaultMongoImperativeExecutor.java:103 + context.timeout().toMillis()</tspan></text>
<text x="24" y="6172" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> DefaultMongoImperativeExecutor.java:104 + &quot;ms&quot;);</tspan></text>
<text x="24" y="6194" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> DefaultMongoImperativeExecutor.java:105 }</tspan></text>
<text x="24" y="6216" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> DefaultMongoImperativeExecutor.java:106 observation.success(outcome);</tspan></text>
</svg>