pull/1/head
Oliver Kennedy 2021-04-22 14:10:07 -04:00
parent b5cac681ed
commit d9097cd5a0
Signed by: okennedy
GPG Key ID: 3E5F9B3ABD3FDB60
17 changed files with 8636 additions and 1 deletions

View File

@ -122,12 +122,14 @@ schedule:
slides: slide/2021-04-20-Logging.html
- date: "Apr. 22"
topic: "Distributed Commit"
materials:
slides: slide/2021-04-22-ParallelUpdates.html
- date: "Apr. 26"
due: "Checkpoint 3"
- date: "Apr. 27"
topic: "Indexing Review + Checkpoint 4"
- date: "Apr. 29"
topic: "Distributed Commit (contd.)"
topic: "TBD"
- date: "May 4"
topic: "Review"
- date: "May 6"

View File

@ -0,0 +1,374 @@
---
template: templates/cse4562_2021_slides.erb
title: Distributed Updates
date: April 22, 2021
textbook: Ch. 17.1-17.5
---
<%
def svg(file)
"<svg data-src=\"2021-04-22/#{file}\" />"
end
def img(file)
"<img src=\"2021-04-22/#{file}\" />"
end
%>
<section>
<section>
<dl>
<div>
<dt>Atomicity</dt>
<dd>A transaction is either applied fully (COMMITed) or not at all (ABORTed).</dd>
</div>
<div class="fragment highlight-grey">
<dt>Consistency</dt>
<dd>Constraints are enforced on the final state of the transaction (and the transaction is ABORTed if they fail).</dd>
</div>
<div>
<dt>Isolation</dt>
<dd>Two transactions running in parallel don't interfere with each other</dd>
</div>
<div>
<dt>Durability</dt>
<dd>Once the database returns from a COMMIT successfully, the data is safe from marmots</dd>
</div>
</dl>
</section>
<section>
<p>How do we uphold these guarantees across multiple databases?</p>
</section>
<section>
<h3>Ground Rules</h3>
<ul>
<li class="fragment">Each node can already enforce these properties <b>locally</b>.</li>
<li class="fragment">All nodes play by the rules (no malicious nodes).</li>
<li class="fragment">Messages either arrive in full or not at all.</li>
</ul>
</section>
<section>
<p>Each node has to make local decisions <br/><b>without</b> global state.</p>
</section>
<section>
<%= svg("Out-of-Order.svg") %>
<attribution>OpenClipart.org</attribution>
</section>
<section>
<b>Isolation violation!</b>
<p class="fragment" style="margin-top: 100px">Nodes might see operations in a different order.</p>
</section>
</section>
<section>
<section>
<p><b>Idea 1:</b> Route all requests through one node</p>
</section>
<section>
<%= svg("Route-Through-One.svg") %>
<attribution>OpenClipart.org</attribution>
</section>
<section>
<dl>
<dt>Pros</dt>
<dd class="fragment">Simple</dd>
<dd class="fragment">Guaranteed to be Correct</dd>
<dt>Cons</dt>
<dd class="fragment">The node needs to see all transactions.</dd>
</dl>
</section>
</section>
<section>
<section>
<p><b>Idea 2:</b> Have one node define a serial order</p>
<p class="fragment" style="margin-top: 50px;">Force each node's interactions to obey the order.</p>
</section>
<section>
<%= svg("Timestamp-Server.svg") %>
<attribution>OpenClipart.org</attribution>
</section>
<section>
<dl>
<dt>Pros</dt>
<dd class="fragment">Serving timestamps is fast.</dd>
<dd class="fragment">No other bottlenecks.</dd>
<dt>Cons</dt>
<dd class="fragment">When is a transaction committed?</dd>
</dl>
</section>
<section>
<%= svg("One-Phase-Commit-Problems.svg") %>
<attribution>OpenClipart.org</attribution>
</section>
<section>
<p><b>Node 1</b> commits transaction</p>
<p><b>Node 2</b> commits transaction</p>
<p class="fragment"><b>Client</b>: ???</p>
<div class="fragment">
<hr>
<p><b>Node 1 → Client</b>: Commit</p>
<p><b>Node 2 → Client</b>: Commit</p>
</div>
<div class="fragment">
<hr>
<p><b>Client</b> sees transaction as committed</p>
</div>
</section>
<section>
<p><b>Node 1</b> commits transaction</p>
<p><b>Node 2</b> <b>aborts</b> transaction</p>
<div class="fragment">
<hr>
<p><b>Node 1 → Client</b>: Commit</p>
<p><b>Node 2 → Client</b>: Abort</p>
</div>
<div class="fragment">
<hr>
<p><b>Client</b> sees transaction as <span class="fragment">aborted?</span></p>
</div>
</section>
<section>
<b>Atomicity violation!</b>
<p class="fragment" style="margin-top: 100px">Node 1 committed the transaction.</p>
</section>
<section>
<h3>Idea 3: Have the client report back</h3>
</section>
<section>
<%= svg("Two-Phase-Commit-Commit.svg") %>
<attribution>OpenClipart.org</attribution>
</section>
<section>
<%= svg("Two-Phase-Commit-Abort.svg") %>
<attribution>OpenClipart.org</attribution>
</section>
<section>
<p>(This is called <b>Two-Phase Commit</b>)</p>
</section>
</section>
<section>
<section>
<h3>Failure Analysis</h3>
<p class="fragment" data-fragment-index="1">What kinds of failures can we tolerate?</p>
<ul>
<li class="fragment" data-fragment-index="2"><span class="fragment highlight-blue" data-fragment-index="5">A message is dropped</span></li>
<li class="fragment" data-fragment-index="3">A node crashes</li>
<li class="fragment" data-fragment-index="4">Radioactive marmot attack</li>
</ul>
</section>
<section>
<%= svg("Two-Phase-Commit-Drop-1.svg") %>
<attribution>OpenClipart.org</attribution>
</section>
<section>
<p>Periodically re-send messages</p>
</section>
<section>
<%= svg("Two-Phase-Commit-Drop-2.svg") %>
<attribution>OpenClipart.org</attribution>
</section>
<section>
<p>Pre-commit is idempotent</p>
</section>
<section>
<%= svg("Two-Phase-Commit-Drop-3.svg") %>
<attribution>OpenClipart.org</attribution>
</section>
<section>
<p>Re-receiving a pre-commit doesn't <br>change the commit status.</p>
<p class="fragment" style="margin-top: 50px;">Log commit status in case of repeat requests.</p>
</section>
</section>
<section>
<section>
<h3>Failure Analysis</h3>
<p>What kinds of failures can we tolerate?</p>
<ul>
<li>A message is dropped</li>
<li class="fragment highlight-blue">A node crashes</li>
<li>Radioactive marmot attack</li>
</ul>
</section>
<section>
<h3>Ground Rules</h3>
<ul>
<li class="fragment highlight-blue">Each node can already enforce these properties <b>locally</b>.</li>
<li>All nodes play by the rules (no malicious nodes).</li>
<li>Messages either arrive in full or not at all.</li>
</ul>
<p class="fragment">If the node guarantees <b>Durability</b>,<br> it will come up in the same state.</p>
<p class="fragment">Failure = Dropped Message</p>
</section>
</section>
<section>
<section>
<h3>Failure Analysis</h3>
<p>What kinds of failures can we tolerate?</p>
<ul>
<li>A message is dropped</li>
<li>A node crashes</li>
<li class="fragment highlight-blue">Radioactive marmot attack</li>
</ul>
</section>
<section>
<b>Durability failure</b>
<p class="fragment" style="margin-top: 100px">The node never comes back up.</p>
</section>
<section>
<p>When is the write durable?</p>
<p class="fragment"><b>Never!</b></p>
<p class="fragment">How much durability do you need?</p>
</section>
<section>
<p><b>Idea: </b> Replicate data to multiple nodes/sites/planets...</p>
</section>
<section>
<%= svg("Replica-Manager.svg") %>
<attribution>OpenClipart.org</attribution>
</section>
<section>
<dl>
<dt>Pros</dt>
<dd>A backup node exists to come back up when a node blows up.</dd>
<dt>Cons</dt>
<dd>Have to wait two message round-trips (or more) to commit.</dd>
</dl>
</section>
<section>
<p><b>Idea: </b> Do something like 2-Phase Commit</p>
</section>
<section>
<%= svg("Replica-Out-Of-Order.svg") %>
<attribution>OpenClipart.org</attribution>
</section>
<section>
<b>(Possible) Isolation+Correctness Violation</b>
<p class="fragment" style="margin-top: 100px">Some replicas have T1 then T2.<br/>Some have T2 then T1.</p>
<p class="fragment">Under 2PC, some nodes abort T1 and some abort T2.</p>
</section>
<section>
<p><b>Idea: </b> Majority vote</p>
<p class="fragment" style="margin-top: 100px">$N$ Replicas</p>
<p class="fragment">$> \frac{N}{2}$ votes needed for a commit.</p>
</section>
</section>
<section>
<section>
<h3>When can we consider a replica write successful?</h3>
<p class="fragment" style="margin-top: 100px">What is a success?</p>
<p class="fragment">A "successful" read reads the written value.</p>
<p class="fragment">Can we do better than 2PC?</p>
</section>
<section>
<%= svg("Read-Write-Consistency.svg") %>
<attribution>OpenClipart.org</attribution>
</section>
<section>
<p>We need to ensure that Bob sees at least one copy of Alice's write</p>
</section>
<section>
<h3>Pidgeonhole Principle</h3>
<p>Alice gets confirmation from $A$ nodes</p>
<p>Bob reads from $B$ nodes</p>
<p class="fragment">If $A+B > N$ then Bob must read at least one of Alice's writes</p>
</section>
</section>
<section>
<section>
<h3>Timeouts</h3>
</section>
<section>
<p>What does a node assume when it fails to receive a message?</p>
</section>
<section>
<dl>
<dt>Assume Node Failure and fail over to replica</dt>
<dd>All data remains <u>a</u>vailable....</dd>
<dd>... but if it was only a transient communication failure, there can be in<u>c</u>onsistencies</dd>
<dt>Assume Connection Failure and wait longer</dt>
<dd>All data remains <u>c</u>onsistent....</dd>
<dd>... but un<a>a</a>vailable while we wait</dd>
</dl>
</section>
<section>
<%= svg("CAP-1.svg") %>
</section>
<section>
<%= svg("CAP-2.svg") %>
</section>
</section>
<section>
<h3>Next time</h3>
<b>Checkpoint 4</b>
</section>

View File

@ -0,0 +1,365 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="svg2"
xml:space="preserve"
width="613.41174"
height="460.05444"
viewBox="0 0 613.41173 460.05443"
sodipodi:docname="CAP-1.svg"
inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)"><metadata
id="metadata8"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
id="defs6"><clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath18"><path
d="M 0,0.028 H 1023.959 V 767.99 H 0 Z"
clip-rule="evenodd"
id="path16" /></clipPath></defs><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1492"
inkscape:window-height="987"
id="namedview4"
showgrid="false"
inkscape:zoom="0.25377435"
inkscape:cx="-197.40021"
inkscape:cy="-349.70141"
inkscape:window-x="960"
inkscape:window-y="398"
inkscape:window-maximized="0"
inkscape:current-layer="g10" /><g
id="g10"
inkscape:groupmode="layer"
inkscape:label="2019-04-19-ParallelUpdates"
transform="matrix(1.3333333,0,0,-1.3333333,0,460.09178)"><g
id="g12"
transform="matrix(0.44929416,0,0,0.44929416,0,0.01541976)"><g
id="g14"
clip-path="url(#clipPath18)"><path
d="M 0,767.99 H 1023.959 V 0.028 H 0 Z"
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
id="path20" /><path
d="M 0,767.99 H 1023.987 V -0.001 H 0 Z"
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
id="path22" /><g
id="g24"><text
transform="matrix(1,0,0,-1,341.603,615.288)"
style="font-variant:normal;font-weight:bold;font-size:79.994px;font-family:'Liberation Sans';-inkscape-font-specification:LiberationSans-Bold;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text28"><tspan
x="0 57.755669 143.50923 198.38512 287.01846"
y="0"
sodipodi:role="line"
id="tspan26">C A P</tspan></text></g><g
id="g30"><text
transform="matrix(1,0,0,-1,359.405,564.094)"
style="font-variant:normal;font-weight:normal;font-size:36px;font-family:'DejaVu Sans';-inkscape-font-specification:DejaVuSans;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text34"><tspan
x="0"
y="0"
id="tspan32">o</tspan></text></g><g
id="g36"><text
transform="matrix(1,0,0,-1,359.093,520.894)"
style="font-variant:normal;font-weight:normal;font-size:36px;font-family:'DejaVu Sans';-inkscape-font-specification:DejaVuSans;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text40"><tspan
x="0"
y="0"
id="tspan38">n</tspan></text></g><g
id="g42"><text
transform="matrix(1,0,0,-1,361.106,477.694)"
style="font-variant:normal;font-weight:normal;font-size:36px;font-family:'DejaVu Sans';-inkscape-font-specification:DejaVuSans;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text46"><tspan
x="0"
y="0"
id="tspan44">s</tspan></text></g><g
id="g48"><text
transform="matrix(1,0,0,-1,365.499,434.494)"
style="font-variant:normal;font-weight:normal;font-size:36px;font-family:'DejaVu Sans';-inkscape-font-specification:DejaVuSans;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text52"><tspan
x="0"
y="0"
id="tspan50">i</tspan></text></g><g
id="g54"><text
transform="matrix(1,0,0,-1,361.106,391.294)"
style="font-variant:normal;font-weight:normal;font-size:36px;font-family:'DejaVu Sans';-inkscape-font-specification:DejaVuSans;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text58"><tspan
x="0"
y="0"
id="tspan56">s</tspan></text></g><g
id="g60"><text
transform="matrix(1,0,0,-1,363.402,348.094)"
style="font-variant:normal;font-weight:normal;font-size:36px;font-family:'DejaVu Sans';-inkscape-font-specification:DejaVuSans;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text64"><tspan
x="0"
y="0"
id="tspan62">t</tspan></text></g><g
id="g66"><text
transform="matrix(1,0,0,-1,359.291,304.894)"
style="font-variant:normal;font-weight:normal;font-size:36px;font-family:'DejaVu Sans';-inkscape-font-specification:DejaVuSans;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text70"><tspan
x="0"
y="0"
id="tspan68">e</tspan></text></g><g
id="g72"><text
transform="matrix(1,0,0,-1,359.093,261.694)"
style="font-variant:normal;font-weight:normal;font-size:36px;font-family:'DejaVu Sans';-inkscape-font-specification:DejaVuSans;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text76"><tspan
x="0"
y="0"
id="tspan74">n</tspan></text></g><g
id="g78"><text
transform="matrix(1,0,0,-1,360.51,218.494)"
style="font-variant:normal;font-weight:normal;font-size:36px;font-family:'DejaVu Sans';-inkscape-font-specification:DejaVuSans;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text82"><tspan
x="0"
y="0"
id="tspan80">c</tspan></text></g><g
id="g84"><text
transform="matrix(1,0,0,-1,359.802,175.294)"
style="font-variant:normal;font-weight:normal;font-size:36px;font-family:'DejaVu Sans';-inkscape-font-specification:DejaVuSans;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text88"><tspan
x="0"
y="0"
id="tspan86">y</tspan></text></g><g
id="g90"><text
transform="matrix(1,0,0,-1,501.307,564.094)"
style="font-variant:normal;font-weight:normal;font-size:36px;font-family:'DejaVu Sans';-inkscape-font-specification:DejaVuSans;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text94"><tspan
x="0"
y="0"
id="tspan92">v</tspan></text></g><g
id="g96"><text
transform="matrix(1,0,0,-1,500.91,520.894)"
style="font-variant:normal;font-weight:normal;font-size:36px;font-family:'DejaVu Sans';-inkscape-font-specification:DejaVuSans;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text100"><tspan
x="0"
y="0"
id="tspan98">a</tspan></text></g><g
id="g102"><text
transform="matrix(1,0,0,-1,507.005,477.694)"
style="font-variant:normal;font-weight:normal;font-size:36px;font-family:'DejaVu Sans';-inkscape-font-specification:DejaVuSans;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text106"><tspan
x="0"
y="0"
id="tspan104">i</tspan></text></g><g
id="g108"><text
transform="matrix(1,0,0,-1,507.005,434.494)"
style="font-variant:normal;font-weight:normal;font-size:36px;font-family:'DejaVu Sans';-inkscape-font-specification:DejaVuSans;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text112"><tspan
x="0"
y="0"
id="tspan110">l</tspan></text></g><g
id="g114"><text
transform="matrix(1,0,0,-1,500.91,391.294)"
style="font-variant:normal;font-weight:normal;font-size:36px;font-family:'DejaVu Sans';-inkscape-font-specification:DejaVuSans;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text118"><tspan
x="0"
y="0"
id="tspan116">a</tspan></text></g><g
id="g120"><text
transform="matrix(1,0,0,-1,500.598,348.094)"
style="font-variant:normal;font-weight:normal;font-size:36px;font-family:'DejaVu Sans';-inkscape-font-specification:DejaVuSans;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text124"><tspan
x="0"
y="0"
id="tspan122">b</tspan></text></g><g
id="g126"><text
transform="matrix(1,0,0,-1,507.005,304.894)"
style="font-variant:normal;font-weight:normal;font-size:36px;font-family:'DejaVu Sans';-inkscape-font-specification:DejaVuSans;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text130"><tspan
x="0"
y="0"
id="tspan128">i</tspan></text></g><g
id="g132"><text
transform="matrix(1,0,0,-1,507.005,261.694)"
style="font-variant:normal;font-weight:normal;font-size:36px;font-family:'DejaVu Sans';-inkscape-font-specification:DejaVuSans;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text136"><tspan
x="0"
y="0"
id="tspan134">l</tspan></text></g><g
id="g138"><text
transform="matrix(1,0,0,-1,507.005,218.494)"
style="font-variant:normal;font-weight:normal;font-size:36px;font-family:'DejaVu Sans';-inkscape-font-specification:DejaVuSans;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text142"><tspan
x="0"
y="0"
id="tspan140">i</tspan></text></g><g
id="g144"><text
transform="matrix(1,0,0,-1,504.907,175.294)"
style="font-variant:normal;font-weight:normal;font-size:36px;font-family:'DejaVu Sans';-inkscape-font-specification:DejaVuSans;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text148"><tspan
x="0"
y="0"
id="tspan146">t</tspan></text></g><g
id="g150"><text
transform="matrix(1,0,0,-1,501.307,132.094)"
style="font-variant:normal;font-weight:normal;font-size:36px;font-family:'DejaVu Sans';-inkscape-font-specification:DejaVuSans;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text154"><tspan
x="0"
y="0"
id="tspan152">y</tspan></text></g><g
id="g156"><text
transform="matrix(1,0,0,-1,425.707,372.982)"
style="font-variant:normal;font-weight:bold;font-size:29.991px;font-family:'Liberation Sans';-inkscape-font-specification:LiberationSans-Bold;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text160"><tspan
x="0 18.354492"
y="0"
sodipodi:role="line"
id="tspan158">or</tspan></text></g><g
id="g162"><text
transform="matrix(1,0,0,-1,568.29,372.982)"
style="font-variant:normal;font-weight:bold;font-size:29.991px;font-family:'Liberation Sans';-inkscape-font-specification:LiberationSans-Bold;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text166"><tspan
x="0 18.29451"
y="0"
sodipodi:role="line"
id="tspan164">or</tspan></text></g><g
id="g168"><text
transform="matrix(1,0,0,-1,643.493,564.094)"
style="font-variant:normal;font-weight:normal;font-size:36px;font-family:'DejaVu Sans';-inkscape-font-specification:DejaVuSans;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text172"><tspan
x="0"
y="0"
id="tspan170">a</tspan></text></g><g
id="g174"><text
transform="matrix(1,0,0,-1,647.093,520.894)"
style="font-variant:normal;font-weight:normal;font-size:36px;font-family:'DejaVu Sans';-inkscape-font-specification:DejaVuSans;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text178"><tspan
x="0"
y="0"
id="tspan176">r</tspan></text></g><g
id="g180"><text
transform="matrix(1,0,0,-1,647.405,477.694)"
style="font-variant:normal;font-weight:normal;font-size:36px;font-family:'DejaVu Sans';-inkscape-font-specification:DejaVuSans;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text184"><tspan
x="0"
y="0"
id="tspan182">t</tspan></text></g><g
id="g186"><text
transform="matrix(1,0,0,-1,649.502,434.494)"
style="font-variant:normal;font-weight:normal;font-size:36px;font-family:'DejaVu Sans';-inkscape-font-specification:DejaVuSans;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text190"><tspan
x="0"
y="0"
id="tspan188">i</tspan></text></g><g
id="g192"><text
transform="matrix(1,0,0,-1,647.405,391.294)"
style="font-variant:normal;font-weight:normal;font-size:36px;font-family:'DejaVu Sans';-inkscape-font-specification:DejaVuSans;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text196"><tspan
x="0"
y="0"
id="tspan194">t</tspan></text></g><g
id="g198"><text
transform="matrix(1,0,0,-1,649.502,348.094)"
style="font-variant:normal;font-weight:normal;font-size:36px;font-family:'DejaVu Sans';-inkscape-font-specification:DejaVuSans;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text202"><tspan
x="0"
y="0"
id="tspan200">i</tspan></text></g><g
id="g204"><text
transform="matrix(1,0,0,-1,643.493,304.894)"
style="font-variant:normal;font-weight:normal;font-size:36px;font-family:'DejaVu Sans';-inkscape-font-specification:DejaVuSans;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text208"><tspan
x="0"
y="0"
id="tspan206">o</tspan></text></g><g
id="g210"><text
transform="matrix(1,0,0,-1,643.096,261.694)"
style="font-variant:normal;font-weight:normal;font-size:36px;font-family:'DejaVu Sans';-inkscape-font-specification:DejaVuSans;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text214"><tspan
x="0"
y="0"
id="tspan212">n</tspan></text></g><g
id="g216"><text
transform="matrix(1,0,0,-1,302.995,66.897)"
style="font-variant:normal;font-weight:bold;font-size:36px;font-family:'Liberation Sans';-inkscape-font-specification:LiberationSans-Bold;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text220"><tspan
x="0 20.087999 34.091999 54.108002 76.068001 86.040001 98.028 107.928 129.888 151.776 171.828 181.8 191.7"
y="0"
sodipodi:role="line"
id="tspan218">Traditionally</tspan></text></g><g
id="g222"><text
transform="matrix(1,0,0,-1,514.913,66.897)"
style="font-variant:normal;font-weight:normal;font-size:36px;font-family:'DejaVu Sans';-inkscape-font-specification:DejaVuSans;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text226"><tspan
x="0 12.168 23.58 44.388 54.360001 74.124001 95.003998 106.416 128.48399 151.272 172.548 183.96001"
y="0"
sodipodi:role="line"
id="tspan224">: Pick any 2</tspan></text></g><g
id="g228"><text
transform="matrix(1,0,0,-1,691.002,440.702)"
style="font-variant:normal;font-weight:normal;font-size:36px;font-family:'DejaVu Sans';-inkscape-font-specification:DejaVuSans;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text232"><tspan
x="0"
y="0"
id="tspan230">T</tspan></text></g><g
id="g234"><text
transform="matrix(1,0,0,-1,690.888,397.502)"
style="font-variant:normal;font-weight:normal;font-size:36px;font-family:'DejaVu Sans';-inkscape-font-specification:DejaVuSans;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text238"><tspan
x="0"
y="0"
id="tspan236">o</tspan></text></g><g
id="g240"><text
transform="matrix(1,0,0,-1,697.011,354.302)"
style="font-variant:normal;font-weight:normal;font-size:36px;font-family:'DejaVu Sans';-inkscape-font-specification:DejaVuSans;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text244"><tspan
x="0"
y="0"
id="tspan242">l</tspan></text></g><g
id="g246"><text
transform="matrix(1,0,0,-1,690.888,311.102)"
style="font-variant:normal;font-weight:normal;font-size:36px;font-family:'DejaVu Sans';-inkscape-font-specification:DejaVuSans;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text250"><tspan
x="0"
y="0"
id="tspan248">e</tspan></text></g><g
id="g252"><text
transform="matrix(1,0,0,-1,694.602,267.902)"
style="font-variant:normal;font-weight:normal;font-size:36px;font-family:'DejaVu Sans';-inkscape-font-specification:DejaVuSans;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text256"><tspan
x="0"
y="0"
id="tspan254">r</tspan></text></g><g
id="g258"><text
transform="matrix(1,0,0,-1,690.888,224.702)"
style="font-variant:normal;font-weight:normal;font-size:36px;font-family:'DejaVu Sans';-inkscape-font-specification:DejaVuSans;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text262"><tspan
x="0"
y="0"
id="tspan260">a</tspan></text></g><g
id="g264"><text
transform="matrix(1,0,0,-1,690.605,181.502)"
style="font-variant:normal;font-weight:normal;font-size:36px;font-family:'DejaVu Sans';-inkscape-font-specification:DejaVuSans;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text268"><tspan
x="0"
y="0"
id="tspan266">n</tspan></text></g><g
id="g270"><text
transform="matrix(1,0,0,-1,692.107,138.302)"
style="font-variant:normal;font-weight:normal;font-size:36px;font-family:'DejaVu Sans';-inkscape-font-specification:DejaVuSans;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text274"><tspan
x="0"
y="0"
id="tspan272">c</tspan></text></g><g
id="g276"><text
transform="matrix(1,0,0,-1,690.888,95.102)"
style="font-variant:normal;font-weight:normal;font-size:36px;font-family:'DejaVu Sans';-inkscape-font-specification:DejaVuSans;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text280"><tspan
x="0"
y="0"
id="tspan278">e</tspan></text></g></g></g></g></svg>

After

Width:  |  Height:  |  Size: 21 KiB

View File

@ -0,0 +1,301 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="svg2"
xml:space="preserve"
width="689.81604"
height="517.35712"
viewBox="0 0 689.81603 517.3571"
sodipodi:docname="CAP-2.svg"
inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)"><metadata
id="metadata8"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
id="defs6"><clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath18"><path
d="M 0,0.028 H 1023.959 V 767.99 H 0 Z"
clip-rule="evenodd"
id="path16" /></clipPath></defs><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1053"
id="namedview4"
showgrid="false"
inkscape:zoom="0.71778225"
inkscape:cx="682.65826"
inkscape:cy="5.4007925"
inkscape:window-x="960"
inkscape:window-y="398"
inkscape:window-maximized="1"
inkscape:current-layer="g10" /><g
id="g10"
inkscape:groupmode="layer"
inkscape:label="2019-04-19-ParallelUpdates"
transform="matrix(1.3333333,0,0,-1.3333333,0,517.39448)"><g
id="g12"
transform="matrix(0.5052566,0,0,0.5052566,0,0.01385282)"><g
id="g14"
clip-path="url(#clipPath18)"><path
d="M 0,767.99 H 1023.959 V 0.028 H 0 Z"
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
id="path20" /><path
d="M 0,767.99 H 1023.987 V -0.001 H 0 Z"
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
id="path22" /><g
id="g24"><text
transform="matrix(1,0,0,-1,341.603,615.288)"
style="font-variant:normal;font-weight:bold;font-size:79.994px;font-family:'Liberation Sans';-inkscape-font-specification:LiberationSans-Bold;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text28"><tspan
x="0 57.755669 143.50923 198.38512 287.01846"
y="0"
sodipodi:role="line"
id="tspan26">C A P</tspan></text></g><g
id="g30"><text
transform="matrix(1,0,0,-1,425.707,372.982)"
style="font-variant:normal;font-weight:bold;font-size:29.991px;font-family:'Liberation Sans';-inkscape-font-specification:LiberationSans-Bold;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text34"><tspan
x="0 18.354492"
y="0"
sodipodi:role="line"
id="tspan32">or</tspan></text></g><g
id="g36"><text
transform="matrix(1,0,0,-1,536.513,372.982)"
style="font-variant:normal;font-weight:bold;font-size:29.991px;font-family:'Liberation Sans';-inkscape-font-specification:LiberationSans-Bold;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text40"><tspan
x="0 18.354492 36.649002 48.25552 56.563026 74.917519"
y="0"
sodipodi:role="line"
id="tspan38">during</tspan></text></g><g
id="g42"><text
transform="matrix(1,0,0,-1,359.405,564.094)"
style="font-variant:normal;font-weight:normal;font-size:36px;font-family:'DejaVu Sans';-inkscape-font-specification:DejaVuSans;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text46"><tspan
x="0"
y="0"
id="tspan44">o</tspan></text></g><g
id="g48"><text
transform="matrix(1,0,0,-1,359.093,520.894)"
style="font-variant:normal;font-weight:normal;font-size:36px;font-family:'DejaVu Sans';-inkscape-font-specification:DejaVuSans;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text52"><tspan
x="0"
y="0"
id="tspan50">n</tspan></text></g><g
id="g54"><text
transform="matrix(1,0,0,-1,361.106,477.694)"
style="font-variant:normal;font-weight:normal;font-size:36px;font-family:'DejaVu Sans';-inkscape-font-specification:DejaVuSans;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text58"><tspan
x="0"
y="0"
id="tspan56">s</tspan></text></g><g
id="g60"><text
transform="matrix(1,0,0,-1,365.499,434.494)"
style="font-variant:normal;font-weight:normal;font-size:36px;font-family:'DejaVu Sans';-inkscape-font-specification:DejaVuSans;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text64"><tspan
x="0"
y="0"
id="tspan62">i</tspan></text></g><g
id="g66"><text
transform="matrix(1,0,0,-1,361.106,391.294)"
style="font-variant:normal;font-weight:normal;font-size:36px;font-family:'DejaVu Sans';-inkscape-font-specification:DejaVuSans;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text70"><tspan
x="0"
y="0"
id="tspan68">s</tspan></text></g><g
id="g72"><text
transform="matrix(1,0,0,-1,363.402,348.094)"
style="font-variant:normal;font-weight:normal;font-size:36px;font-family:'DejaVu Sans';-inkscape-font-specification:DejaVuSans;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text76"><tspan
x="0"
y="0"
id="tspan74">t</tspan></text></g><g
id="g78"><text
transform="matrix(1,0,0,-1,359.291,304.894)"
style="font-variant:normal;font-weight:normal;font-size:36px;font-family:'DejaVu Sans';-inkscape-font-specification:DejaVuSans;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text82"><tspan
x="0"
y="0"
id="tspan80">e</tspan></text></g><g
id="g84"><text
transform="matrix(1,0,0,-1,359.093,261.694)"
style="font-variant:normal;font-weight:normal;font-size:36px;font-family:'DejaVu Sans';-inkscape-font-specification:DejaVuSans;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text88"><tspan
x="0"
y="0"
id="tspan86">n</tspan></text></g><g
id="g90"><text
transform="matrix(1,0,0,-1,360.51,218.494)"
style="font-variant:normal;font-weight:normal;font-size:36px;font-family:'DejaVu Sans';-inkscape-font-specification:DejaVuSans;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text94"><tspan
x="0"
y="0"
id="tspan92">c</tspan></text></g><g
id="g96"><text
transform="matrix(1,0,0,-1,359.802,175.294)"
style="font-variant:normal;font-weight:normal;font-size:36px;font-family:'DejaVu Sans';-inkscape-font-specification:DejaVuSans;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text100"><tspan
x="0"
y="0"
id="tspan98">y</tspan></text></g><g
id="g102"><text
transform="matrix(1,0,0,-1,501.307,564.094)"
style="font-variant:normal;font-weight:normal;font-size:36px;font-family:'DejaVu Sans';-inkscape-font-specification:DejaVuSans;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text106"><tspan
x="0"
y="0"
id="tspan104">v</tspan></text></g><g
id="g108"><text
transform="matrix(1,0,0,-1,500.91,520.894)"
style="font-variant:normal;font-weight:normal;font-size:36px;font-family:'DejaVu Sans';-inkscape-font-specification:DejaVuSans;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text112"><tspan
x="0"
y="0"
id="tspan110">a</tspan></text></g><g
id="g114"><text
transform="matrix(1,0,0,-1,507.005,477.694)"
style="font-variant:normal;font-weight:normal;font-size:36px;font-family:'DejaVu Sans';-inkscape-font-specification:DejaVuSans;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text118"><tspan
x="0"
y="0"
id="tspan116">i</tspan></text></g><g
id="g120"><text
transform="matrix(1,0,0,-1,507.005,434.494)"
style="font-variant:normal;font-weight:normal;font-size:36px;font-family:'DejaVu Sans';-inkscape-font-specification:DejaVuSans;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text124"><tspan
x="0"
y="0"
id="tspan122">l</tspan></text></g><g
id="g126"><text
transform="matrix(1,0,0,-1,500.91,391.294)"
style="font-variant:normal;font-weight:normal;font-size:36px;font-family:'DejaVu Sans';-inkscape-font-specification:DejaVuSans;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text130"><tspan
x="0"
y="0"
id="tspan128">a</tspan></text></g><g
id="g132"><text
transform="matrix(1,0,0,-1,500.598,348.094)"
style="font-variant:normal;font-weight:normal;font-size:36px;font-family:'DejaVu Sans';-inkscape-font-specification:DejaVuSans;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text136"><tspan
x="0"
y="0"
id="tspan134">b</tspan></text></g><g
id="g138"><text
transform="matrix(1,0,0,-1,507.005,304.894)"
style="font-variant:normal;font-weight:normal;font-size:36px;font-family:'DejaVu Sans';-inkscape-font-specification:DejaVuSans;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text142"><tspan
x="0"
y="0"
id="tspan140">i</tspan></text></g><g
id="g144"><text
transform="matrix(1,0,0,-1,507.005,261.694)"
style="font-variant:normal;font-weight:normal;font-size:36px;font-family:'DejaVu Sans';-inkscape-font-specification:DejaVuSans;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text148"><tspan
x="0"
y="0"
id="tspan146">l</tspan></text></g><g
id="g150"><text
transform="matrix(1,0,0,-1,507.005,218.494)"
style="font-variant:normal;font-weight:normal;font-size:36px;font-family:'DejaVu Sans';-inkscape-font-specification:DejaVuSans;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text154"><tspan
x="0"
y="0"
id="tspan152">i</tspan></text></g><g
id="g156"><text
transform="matrix(1,0,0,-1,504.907,175.294)"
style="font-variant:normal;font-weight:normal;font-size:36px;font-family:'DejaVu Sans';-inkscape-font-specification:DejaVuSans;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text160"><tspan
x="0"
y="0"
id="tspan158">t</tspan></text></g><g
id="g162"><text
transform="matrix(1,0,0,-1,501.307,132.094)"
style="font-variant:normal;font-weight:normal;font-size:36px;font-family:'DejaVu Sans';-inkscape-font-specification:DejaVuSans;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text166"><tspan
x="0"
y="0"
id="tspan164">y</tspan></text></g><g
id="g168"><text
transform="matrix(1,0,0,-1,643.493,564.094)"
style="font-variant:normal;font-weight:normal;font-size:36px;font-family:'DejaVu Sans';-inkscape-font-specification:DejaVuSans;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text172"><tspan
x="0"
y="0"
id="tspan170">a</tspan></text></g><g
id="g174"><text
transform="matrix(1,0,0,-1,647.093,520.894)"
style="font-variant:normal;font-weight:normal;font-size:36px;font-family:'DejaVu Sans';-inkscape-font-specification:DejaVuSans;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text178"><tspan
x="0"
y="0"
id="tspan176">r</tspan></text></g><g
id="g180"><text
transform="matrix(1,0,0,-1,647.405,477.694)"
style="font-variant:normal;font-weight:normal;font-size:36px;font-family:'DejaVu Sans';-inkscape-font-specification:DejaVuSans;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text184"><tspan
x="0"
y="0"
id="tspan182">t</tspan></text></g><g
id="g186"><text
transform="matrix(1,0,0,-1,649.502,434.494)"
style="font-variant:normal;font-weight:normal;font-size:36px;font-family:'DejaVu Sans';-inkscape-font-specification:DejaVuSans;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text190"><tspan
x="0"
y="0"
id="tspan188">i</tspan></text></g><g
id="g192"><text
transform="matrix(1,0,0,-1,647.405,391.294)"
style="font-variant:normal;font-weight:normal;font-size:36px;font-family:'DejaVu Sans';-inkscape-font-specification:DejaVuSans;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text196"><tspan
x="0"
y="0"
id="tspan194">t</tspan></text></g><g
id="g198"><text
transform="matrix(1,0,0,-1,649.502,348.094)"
style="font-variant:normal;font-weight:normal;font-size:36px;font-family:'DejaVu Sans';-inkscape-font-specification:DejaVuSans;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text202"><tspan
x="0"
y="0"
id="tspan200">i</tspan></text></g><g
id="g204"><text
transform="matrix(1,0,0,-1,643.493,304.894)"
style="font-variant:normal;font-weight:normal;font-size:36px;font-family:'DejaVu Sans';-inkscape-font-specification:DejaVuSans;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text208"><tspan
x="0"
y="0"
id="tspan206">o</tspan></text></g><g
id="g210"><text
transform="matrix(1,0,0,-1,643.096,261.694)"
style="font-variant:normal;font-weight:normal;font-size:36px;font-family:'DejaVu Sans';-inkscape-font-specification:DejaVuSans;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text214"><tspan
x="0"
y="0"
id="tspan212">n</tspan></text></g><g
id="g216"><text
transform="matrix(1,0,0,-1,645.194,218.494)"
style="font-variant:normal;font-weight:normal;font-size:36px;font-family:'DejaVu Sans';-inkscape-font-specification:DejaVuSans;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text220"><tspan
x="0"
y="0"
id="tspan218">s</tspan></text></g><g
id="g222"><text
transform="matrix(1,0,0,-1,324.595,100.176)"
style="font-variant:normal;font-weight:normal;font-size:36px;font-family:'DejaVu Sans';-inkscape-font-specification:DejaVuSans;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text226"><tspan
x="0 10.584 21.996 44.784 58.787998 80.963997 93.636002 115.812 130.608 142.02 156.132 178.92 188.892 207.576 218.98801 241.776 264.564 279.35999 301.35599 320.112 330.01199 352.79999"
y="0"
sodipodi:role="line"
id="tspan224">I prefer this phrasing</tspan></text></g></g></g></g></svg>

After

Width:  |  Height:  |  Size: 17 KiB

View File

@ -0,0 +1,312 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="202.74734mm"
height="152.55798mm"
viewBox="0 0 202.74735 152.55798"
version="1.1"
id="svg5260"
inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)"
sodipodi:docname="One-Phase-Commit-Problems.svg">
<defs
id="defs5254">
<marker
style="overflow:visible;"
id="marker6632"
refX="0.0"
refY="0.0"
orient="auto"
inkscape:stockid="Arrow1Lend"
inkscape:isstock="true">
<path
transform="scale(0.8) rotate(180) translate(12.5,0)"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
id="path6630" />
</marker>
<marker
style="overflow:visible"
id="marker6083"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow1Lend"
inkscape:isstock="true">
<path
transform="matrix(-0.8,0,0,-0.8,-10,0)"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path6081" />
</marker>
<marker
style="overflow:visible"
id="marker5971"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow1Mend"
inkscape:isstock="true">
<path
transform="matrix(-0.4,0,0,-0.4,-4,0)"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path5969" />
</marker>
<marker
style="overflow:visible"
id="marker5903"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow1Mend"
inkscape:isstock="true"
inkscape:collect="always">
<path
transform="matrix(-0.4,0,0,-0.4,-4,0)"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path5901" />
</marker>
<marker
style="overflow:visible"
id="Arrow1Mend"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow1Mend"
inkscape:isstock="true"
inkscape:collect="always">
<path
transform="matrix(-0.4,0,0,-0.4,-4,0)"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path880" />
</marker>
<marker
style="overflow:visible"
id="Arrow1Lend"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow1Lend"
inkscape:isstock="true"
inkscape:collect="always">
<path
transform="matrix(-0.8,0,0,-0.8,-10,0)"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path874" />
</marker>
<marker
style="overflow:visible"
id="Arrow1Lstart"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow1Lstart"
inkscape:isstock="true">
<path
transform="matrix(0.8,0,0,0.8,10,0)"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path871" />
</marker>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.7"
inkscape:cx="520.17347"
inkscape:cy="263.95091"
inkscape:document-units="mm"
inkscape:current-layer="g6251"
inkscape:document-rotation="0"
showgrid="false"
inkscape:window-width="1920"
inkscape:window-height="1053"
inkscape:window-x="960"
inkscape:window-y="398"
inkscape:window-maximized="1" />
<metadata
id="metadata5257">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:groupmode="layer"
id="layer2"
inkscape:label="Background"
sodipodi:insensitive="true"
style="display:inline">
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
x="21.893898"
y="19.982214"
id="text5825"
transform="translate(-4.3877291,-3.7450665)"><tspan
sodipodi:role="line"
id="tspan5823"
x="21.893898"
y="19.982214"
style="stroke-width:0.264583">Client</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
x="82.215805"
y="19.982214"
id="text5829"
transform="translate(-4.3877291,-3.7450665)"><tspan
sodipodi:role="line"
id="tspan5827"
x="82.215805"
y="19.982214"
style="stroke-width:0.264583">Node 1</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
x="148.89389"
y="19.982214"
id="text5833"
transform="translate(-4.3877291,-3.7450665)"><tspan
sodipodi:role="line"
id="tspan5831"
x="148.89389"
y="19.982214"
style="stroke-width:0.264583">Node 2</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 15.446855,21.141612 H 59.320862"
id="path5835"
sodipodi:nodetypes="cc"
transform="translate(-4.3877291,-3.7450665)" />
<path
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow1Mend)"
d="M 37.383859,27.438754 V 149.04295"
id="path5837"
transform="translate(-4.3877291,-3.7450665)" />
<path
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker5903)"
d="M 101.10606,27.438754 V 149.04295"
id="path5899"
transform="translate(-4.3877291,-3.7450665)" />
<path
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker5971)"
d="M 167.74281,27.438754 V 149.04295"
id="path5967"
transform="translate(-4.3877291,-3.7450665)" />
<path
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 79.169061,21.141612 H 123.04307"
id="path6061"
sodipodi:nodetypes="cc"
transform="translate(-4.3877291,-3.7450665)" />
<path
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 145.8058,21.141612 h 43.87401"
id="path6063"
sodipodi:nodetypes="cc"
transform="translate(-4.3877291,-3.7450665)" />
</g>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-4.3877292,-3.7450664)">
<g
id="g6223"
class="fragment">
<rect
style="fill:#ffffff;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
id="rect6199"
width="5.1640182"
height="11.185114"
x="35.642262"
y="24.191145"
ry="1.358519" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
x="25.500902"
y="33.380928"
id="text6157"><tspan
sodipodi:role="line"
id="tspan6155"
x="25.500902"
y="33.380928"
style="stroke-width:0.264583">Xact</tspan></text>
</g>
<g
id="g6251"
class="fragment">
<path
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker6632)"
d="M 37.38386,35.376259 101.1849,50.198861"
id="path6065" />
<path
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker6083)"
d="M 37.38386,35.376259 167.33073,50.198861"
id="path6079"
sodipodi:nodetypes="cc" />
</g>
<g
id="g6295"
class="fragment">
<rect
style="fill:#ffffff;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
id="rect6199-0"
width="5.1640182"
height="11.185115"
x="98.13755"
y="51.786362"
ry="1.3585191" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
x="77.583023"
y="60.06794"
id="text6153"><tspan
sodipodi:role="line"
id="tspan6151"
x="77.583023"
y="60.06794"
style="stroke-width:0.264583">Commit?</tspan></text>
<rect
style="fill:#ffffff;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
id="rect6218"
width="5.1640182"
height="11.185115"
x="165.34177"
y="51.786362"
ry="1.3585191" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
x="144.21977"
y="60.06794"
id="text6191"><tspan
sodipodi:role="line"
id="tspan6189"
x="144.21977"
y="60.06794"
style="stroke-width:0.264583">Commit?</tspan></text>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 13 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 87 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 247 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 87 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 107 KiB

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 88 KiB

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 114 KiB

View File

@ -0,0 +1,439 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="202.74734mm"
height="152.55798mm"
viewBox="0 0 202.74735 152.55798"
version="1.1"
id="svg5260"
inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)"
sodipodi:docname="Two-Phase-Commit-Abort.svg">
<defs
id="defs5254">
<marker
style="overflow:visible;"
id="marker2464"
refX="0.0"
refY="0.0"
orient="auto"
inkscape:stockid="Arrow1Lend"
inkscape:isstock="true">
<path
transform="scale(0.8) rotate(180) translate(12.5,0)"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
id="path2462" />
</marker>
<marker
style="overflow:visible;"
id="marker2426"
refX="0.0"
refY="0.0"
orient="auto"
inkscape:stockid="Arrow1Lend"
inkscape:isstock="true">
<path
transform="scale(0.8) rotate(180) translate(12.5,0)"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
id="path2424" />
</marker>
<marker
style="overflow:visible;"
id="Arrow1Lend"
refX="0.0"
refY="0.0"
orient="auto"
inkscape:stockid="Arrow1Lend"
inkscape:isstock="true">
<path
transform="scale(0.8) rotate(180) translate(12.5,0)"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
id="path1923" />
</marker>
<marker
style="overflow:visible;"
id="marker6976"
refX="0.0"
refY="0.0"
orient="auto"
inkscape:stockid="Arrow1Lend"
inkscape:isstock="true">
<path
transform="scale(0.8) rotate(180) translate(12.5,0)"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
id="path6974" />
</marker>
<marker
style="overflow:visible"
id="marker6966"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow1Lend"
inkscape:isstock="true">
<path
transform="matrix(-0.8,0,0,-0.8,-10,0)"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path6964" />
</marker>
<marker
style="overflow:visible"
id="marker6778"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow1Lend"
inkscape:isstock="true">
<path
transform="matrix(-0.8,0,0,-0.8,-10,0)"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path6776" />
</marker>
<marker
style="overflow:visible;"
id="marker6768"
refX="0.0"
refY="0.0"
orient="auto"
inkscape:stockid="Arrow1Lend"
inkscape:isstock="true">
<path
transform="scale(0.8) rotate(180) translate(12.5,0)"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
id="path6766" />
</marker>
<marker
style="overflow:visible"
id="marker5971"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow1Mend"
inkscape:isstock="true">
<path
transform="matrix(-0.4,0,0,-0.4,-4,0)"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path5969" />
</marker>
<marker
style="overflow:visible"
id="marker5903"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow1Mend"
inkscape:isstock="true"
inkscape:collect="always">
<path
transform="matrix(-0.4,0,0,-0.4,-4,0)"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path5901" />
</marker>
<marker
style="overflow:visible"
id="Arrow1Mend"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow1Mend"
inkscape:isstock="true"
inkscape:collect="always">
<path
transform="matrix(-0.4,0,0,-0.4,-4,0)"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path880" />
</marker>
<marker
style="overflow:visible"
id="Arrow1Lstart"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow1Lstart"
inkscape:isstock="true">
<path
transform="matrix(0.8,0,0,0.8,10,0)"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path871" />
</marker>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1"
inkscape:cx="520.17347"
inkscape:cy="263.95091"
inkscape:document-units="mm"
inkscape:current-layer="g7159"
inkscape:document-rotation="0"
showgrid="false"
inkscape:window-width="1920"
inkscape:window-height="1053"
inkscape:window-x="960"
inkscape:window-y="398"
inkscape:window-maximized="1" />
<metadata
id="metadata5257">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:groupmode="layer"
id="layer2"
inkscape:label="Background"
sodipodi:insensitive="true"
style="display:inline">
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
x="21.893898"
y="19.982214"
id="text5825"
transform="translate(-4.3877291,-3.7450665)"><tspan
sodipodi:role="line"
id="tspan5823"
x="21.893898"
y="19.982214"
style="stroke-width:0.264583">Client</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
x="82.215805"
y="19.982214"
id="text5829"
transform="translate(-4.3877291,-3.7450665)"><tspan
sodipodi:role="line"
id="tspan5827"
x="82.215805"
y="19.982214"
style="stroke-width:0.264583">Node 1</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
x="148.89389"
y="19.982214"
id="text5833"
transform="translate(-4.3877291,-3.7450665)"><tspan
sodipodi:role="line"
id="tspan5831"
x="148.89389"
y="19.982214"
style="stroke-width:0.264583">Node 2</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 15.446855,21.141612 H 59.320862"
id="path5835"
sodipodi:nodetypes="cc"
transform="translate(-4.3877291,-3.7450665)" />
<path
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow1Mend)"
d="M 37.383859,27.438754 V 149.04295"
id="path5837"
transform="translate(-4.3877291,-3.7450665)" />
<path
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker5903)"
d="M 101.10606,27.438754 V 149.04295"
id="path5899"
transform="translate(-4.3877291,-3.7450665)" />
<path
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker5971)"
d="M 167.74281,27.438754 V 149.04295"
id="path5967"
transform="translate(-4.3877291,-3.7450665)" />
<path
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 79.169061,21.141612 H 123.04307"
id="path6061"
sodipodi:nodetypes="cc"
transform="translate(-4.3877291,-3.7450665)" />
<path
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 145.8058,21.141612 h 43.87401"
id="path6063"
sodipodi:nodetypes="cc"
transform="translate(-4.3877291,-3.7450665)" />
</g>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-4.3877292,-3.7450664)">
<g
id="g6223">
<rect
style="fill:#ffffff;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
id="rect6199"
width="5.1640182"
height="11.185114"
x="35.642262"
y="24.191145"
ry="1.358519" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
x="25.500902"
y="33.380928"
id="text6157"><tspan
sodipodi:role="line"
id="tspan6155"
x="25.500902"
y="33.380928"
style="stroke-width:0.264583">Xact</tspan></text>
</g>
<g
id="g7159"
class="fragment">
<path
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker2426)"
d="M 37.38386,35.376259 101.1849,50.198861"
id="path6065" />
<path
style="fill:none;stroke:#000000;stroke-width:0.265;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker2464);stroke-miterlimit:4;stroke-dasharray:none"
d="M 37.38386,35.376259 167.33073,50.198861"
id="path6079"
sodipodi:nodetypes="cc" />
</g>
<g
id="g7143"
class="fragment">
<rect
style="fill:#ffffff;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
id="rect6199-0"
width="5.1640182"
height="11.185115"
x="98.13755"
y="51.786362"
ry="1.3585191" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
x="100.06273"
y="60.06794"
id="text6153"><tspan
sodipodi:role="line"
id="tspan6151"
x="100.06273"
y="60.06794"
style="text-align:center;text-anchor:middle;stroke-width:0.264583">Pre-Commit</tspan></text>
<rect
style="fill:#ffffff;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
id="rect6218"
width="5.1640182"
height="11.185115"
x="165.34177"
y="51.786362"
ry="1.3585191" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
x="166.17029"
y="60.06794"
id="text6191"><tspan
sodipodi:role="line"
id="tspan6189"
x="166.17029"
y="60.06794"
style="text-align:center;text-anchor:middle;stroke-width:0.264583">Abort</tspan></text>
</g>
<g
id="g6764"
class="fragment"
transform="translate(0,28.045832)">
<path
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker6768)"
d="M 101.65529,35.376259 37.854249,50.198861"
id="path6760" />
<path
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker6778)"
d="M 167.82608,35.376259 37.879209,50.198861"
id="path6762"
sodipodi:nodetypes="cc" />
</g>
<g
id="g7119"
class="fragment">
<rect
style="fill:#ffffff;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
id="rect6936"
width="5.1640182"
height="11.185115"
x="34.679245"
y="79.832191"
ry="1.3585191" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
x="36.60442"
y="88.11377"
id="text6940"><tspan
sodipodi:role="line"
id="tspan6938"
x="36.60442"
y="88.11377"
style="text-align:center;text-anchor:middle;stroke-width:0.264583">Abort</tspan></text>
</g>
<g
id="g7090"
transform="translate(0,56.091668)"
class="fragment">
<path
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker6976)"
d="M 37.38386,35.376259 101.1849,50.198861"
id="path6960" />
</g>
<g
id="g7265"
class="fragment">
<g
id="g7127"
transform="translate(63.458306,28.045839)">
<rect
style="fill:#ffffff;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
id="rect7121"
width="5.1640182"
height="11.185115"
x="34.679245"
y="79.832191"
ry="1.3585191" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
x="36.60442"
y="88.11377"
id="text7125"><tspan
sodipodi:role="line"
id="tspan7123"
x="36.60442"
y="88.11377"
style="text-align:center;text-anchor:middle;stroke-width:0.264583">Abort</tspan></text>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 18 KiB

View File

@ -0,0 +1,467 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="202.74734mm"
height="152.55798mm"
viewBox="0 0 202.74735 152.55798"
version="1.1"
id="svg5260"
inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)"
sodipodi:docname="Two-Phase-Commit-Commit.svg">
<defs
id="defs5254">
<marker
style="overflow:visible;"
id="marker2302"
refX="0.0"
refY="0.0"
orient="auto"
inkscape:stockid="Arrow1Lend"
inkscape:isstock="true">
<path
transform="scale(0.8) rotate(180) translate(12.5,0)"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
id="path2300" />
</marker>
<marker
style="overflow:visible;"
id="marker2264"
refX="0.0"
refY="0.0"
orient="auto"
inkscape:stockid="Arrow1Lend"
inkscape:isstock="true">
<path
transform="scale(0.8) rotate(180) translate(12.5,0)"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
id="path2262" />
</marker>
<marker
style="overflow:visible;"
id="Arrow1Lend"
refX="0.0"
refY="0.0"
orient="auto"
inkscape:stockid="Arrow1Lend"
inkscape:isstock="true">
<path
transform="scale(0.8) rotate(180) translate(12.5,0)"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
id="path1923" />
</marker>
<marker
style="overflow:visible;"
id="marker6976"
refX="0.0"
refY="0.0"
orient="auto"
inkscape:stockid="Arrow1Lend"
inkscape:isstock="true">
<path
transform="scale(0.8) rotate(180) translate(12.5,0)"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
id="path6974" />
</marker>
<marker
style="overflow:visible"
id="marker6966"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow1Lend"
inkscape:isstock="true">
<path
transform="matrix(-0.8,0,0,-0.8,-10,0)"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path6964" />
</marker>
<marker
style="overflow:visible"
id="marker6778"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow1Lend"
inkscape:isstock="true">
<path
transform="matrix(-0.8,0,0,-0.8,-10,0)"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path6776" />
</marker>
<marker
style="overflow:visible;"
id="marker6768"
refX="0.0"
refY="0.0"
orient="auto"
inkscape:stockid="Arrow1Lend"
inkscape:isstock="true">
<path
transform="scale(0.8) rotate(180) translate(12.5,0)"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
id="path6766" />
</marker>
<marker
style="overflow:visible"
id="marker5971"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow1Mend"
inkscape:isstock="true">
<path
transform="matrix(-0.4,0,0,-0.4,-4,0)"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path5969" />
</marker>
<marker
style="overflow:visible"
id="marker5903"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow1Mend"
inkscape:isstock="true"
inkscape:collect="always">
<path
transform="matrix(-0.4,0,0,-0.4,-4,0)"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path5901" />
</marker>
<marker
style="overflow:visible"
id="Arrow1Mend"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow1Mend"
inkscape:isstock="true"
inkscape:collect="always">
<path
transform="matrix(-0.4,0,0,-0.4,-4,0)"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path880" />
</marker>
<marker
style="overflow:visible"
id="Arrow1Lstart"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow1Lstart"
inkscape:isstock="true">
<path
transform="matrix(0.8,0,0,0.8,10,0)"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path871" />
</marker>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1"
inkscape:cx="520.17347"
inkscape:cy="263.95091"
inkscape:document-units="mm"
inkscape:current-layer="g7159"
inkscape:document-rotation="0"
showgrid="false"
inkscape:window-width="1920"
inkscape:window-height="1053"
inkscape:window-x="960"
inkscape:window-y="398"
inkscape:window-maximized="1" />
<metadata
id="metadata5257">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:groupmode="layer"
id="layer2"
inkscape:label="Background"
sodipodi:insensitive="true"
style="display:inline">
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
x="21.893898"
y="19.982214"
id="text5825"
transform="translate(-4.3877291,-3.7450665)"><tspan
sodipodi:role="line"
id="tspan5823"
x="21.893898"
y="19.982214"
style="stroke-width:0.264583">Client</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
x="82.215805"
y="19.982214"
id="text5829"
transform="translate(-4.3877291,-3.7450665)"><tspan
sodipodi:role="line"
id="tspan5827"
x="82.215805"
y="19.982214"
style="stroke-width:0.264583">Node 1</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
x="148.89389"
y="19.982214"
id="text5833"
transform="translate(-4.3877291,-3.7450665)"><tspan
sodipodi:role="line"
id="tspan5831"
x="148.89389"
y="19.982214"
style="stroke-width:0.264583">Node 2</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 15.446855,21.141612 H 59.320862"
id="path5835"
sodipodi:nodetypes="cc"
transform="translate(-4.3877291,-3.7450665)" />
<path
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow1Mend)"
d="M 37.383859,27.438754 V 149.04295"
id="path5837"
transform="translate(-4.3877291,-3.7450665)" />
<path
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker5903)"
d="M 101.10606,27.438754 V 149.04295"
id="path5899"
transform="translate(-4.3877291,-3.7450665)" />
<path
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker5971)"
d="M 167.74281,27.438754 V 149.04295"
id="path5967"
transform="translate(-4.3877291,-3.7450665)" />
<path
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 79.169061,21.141612 H 123.04307"
id="path6061"
sodipodi:nodetypes="cc"
transform="translate(-4.3877291,-3.7450665)" />
<path
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 145.8058,21.141612 h 43.87401"
id="path6063"
sodipodi:nodetypes="cc"
transform="translate(-4.3877291,-3.7450665)" />
</g>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-4.3877292,-3.7450664)">
<g
id="g6223">
<rect
style="fill:#ffffff;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
id="rect6199"
width="5.1640182"
height="11.185114"
x="35.642262"
y="24.191145"
ry="1.358519" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
x="25.500902"
y="33.380928"
id="text6157"><tspan
sodipodi:role="line"
id="tspan6155"
x="25.500902"
y="33.380928"
style="stroke-width:0.264583">Xact</tspan></text>
</g>
<g
id="g7159"
class="fragment">
<path
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker2264)"
d="M 37.38386,35.376259 101.1849,50.198861"
id="path6065" />
<path
style="fill:none;stroke:#000000;stroke-width:0.265;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker2302);stroke-miterlimit:4;stroke-dasharray:none"
d="M 37.38386,35.376259 167.33073,50.198861"
id="path6079"
sodipodi:nodetypes="cc" />
</g>
<g
id="g7143"
class="fragment">
<rect
style="fill:#ffffff;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
id="rect6199-0"
width="5.1640182"
height="11.185115"
x="98.13755"
y="51.786362"
ry="1.3585191" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
x="100.06273"
y="60.06794"
id="text6153"><tspan
sodipodi:role="line"
id="tspan6151"
x="100.06273"
y="60.06794"
style="text-align:center;text-anchor:middle;stroke-width:0.264583">Pre-Commit</tspan></text>
<rect
style="fill:#ffffff;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
id="rect6218"
width="5.1640182"
height="11.185115"
x="165.34177"
y="51.786362"
ry="1.3585191" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
x="166.17029"
y="60.06794"
id="text6191"><tspan
sodipodi:role="line"
id="tspan6189"
x="166.17029"
y="60.06794"
style="text-align:center;text-anchor:middle;stroke-width:0.264583">Pre-Commit</tspan></text>
</g>
<g
id="g6764"
class="fragment"
transform="translate(0,28.045832)">
<path
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker6768)"
d="M 101.65529,35.376259 37.854249,50.198861"
id="path6760" />
<path
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker6778)"
d="M 167.82608,35.376259 37.879209,50.198861"
id="path6762"
sodipodi:nodetypes="cc" />
</g>
<g
id="g7119"
class="fragment">
<rect
style="fill:#ffffff;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
id="rect6936"
width="5.1640182"
height="11.185115"
x="34.679245"
y="79.832191"
ry="1.3585191" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
x="16.241386"
y="88.11377"
id="text6940"><tspan
sodipodi:role="line"
id="tspan6938"
x="16.241386"
y="88.11377"
style="stroke-width:0.264583">Commit</tspan></text>
</g>
<g
id="g7090"
transform="translate(0,56.091668)"
class="fragment">
<path
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker6976)"
d="M 37.38386,35.376259 101.1849,50.198861"
id="path6960" />
<path
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker6966)"
d="M 37.38386,35.376259 167.33073,50.198861"
id="path6962"
sodipodi:nodetypes="cc" />
</g>
<g
id="g7265"
class="fragment">
<g
id="g7127"
transform="translate(63.458306,28.045839)">
<rect
style="fill:#ffffff;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
id="rect7121"
width="5.1640182"
height="11.185115"
x="34.679245"
y="79.832191"
ry="1.3585191" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
x="16.241386"
y="88.11377"
id="text7125"><tspan
sodipodi:role="line"
id="tspan7123"
x="16.241386"
y="88.11377"
style="stroke-width:0.264583">Commit</tspan></text>
</g>
<g
id="g7135"
transform="translate(131.72082,28.045839)">
<rect
style="fill:#ffffff;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
id="rect7129"
width="5.1640182"
height="11.185115"
x="34.679245"
y="79.832191"
ry="1.3585191" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
x="16.241386"
y="88.11377"
id="text7133"><tspan
sodipodi:role="line"
id="tspan7131"
x="16.241386"
y="88.11377"
style="stroke-width:0.264583">Commit</tspan></text>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 19 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 63 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 60 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 62 KiB

View File

@ -59,6 +59,7 @@ class_name = "CSE-4/562 Spring 2021"
<% end %>
</section>
<%= body %>
</div></div>