Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
W
wendelin.core
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Labels
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Commits
Open sidebar
Kirill Smelkov
wendelin.core
Commits
b87160d5
Commit
b87160d5
authored
Mar 11, 2019
by
Kirill Smelkov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
.
parent
cd7fce8c
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
161 additions
and
146 deletions
+161
-146
wcfs/todo.dot
wcfs/todo.dot
+17
-15
wcfs/todo.svg
wcfs/todo.svg
+144
-131
No files found.
wcfs/todo.dot
View file @
b87160d5
...
...
@@ -14,11 +14,12 @@ digraph {
// wcfs -> wcfs_simple;
// wcfs -> Sinvtree;
// wcfs -> δR;
wcfs
->
autoexit
;
wcfs
->
liveCacheControl
;
wcfs
->
autoexit
[
color
=
grey
]
;
wcfs
->
wcfsInvProcess
;
wcfs
->
wcfsRead
;
wcfs
->
wcfsGC
;
wcfs
->
wcfsGC
[
color
=
grey
]
;
wcfsInvProcess
->
ZODB_go_inv
;
wcfsInvProcess
->
zconnCacheGet
;
...
...
@@ -30,7 +31,7 @@ digraph {
ZODB_go_inv
->
fs1_go_inv
;
ZODB_go_inv
->
zeo_go_inv
;
ZODB_go_inv
->
neo_go_inv
;
ZODB_go_inv
->
zcache_go_inv
;
ZODB_go_inv
->
zcache_go_inv
[
style
=
dashed
,
color
=
grey
]
;
// wcfs works without raw cache now
wcfsRead
->
blktabGet
;
wcfsRead
->
δ
Ftail
;
...
...
@@ -41,7 +42,7 @@ digraph {
zobj2file
->
zblk2file
;
zobj2file
->
zbtree2file
;
zbtree2file
->
δ
BTree
;
zbtree2file
->
δ
BTree
[
color
=
grey
]
;
// wcfs_simple -> Btree_read;
// wcfs_simple -> ZBlk_read;
...
...
@@ -69,34 +70,34 @@ digraph {
// wcfs_simple [label="wcfs no\ninvalidations", style=filled fillcolor=grey95]
// wcfs_spawn [label="spawn wcfs", style=filled fillcolor=lightyellow]
nowcfs
[
label
=
"!wcfs mode"
]
nowcfs
[
label
=
"!wcfs mode"
,
style
=
filled
fillcolor
=
grey95
]
wcfsInvProcess
[
label
=
"process\nZODB invalidations"
]
zconnCacheGet
[
label
=
"zonn.\n.Cache.Get"
,
style
=
filled
fillcolor
=
grey95
]
zobj2file
[
label
=
"Z* → file/[]#blk"
]
zblk2file
[
label
=
"ZBlk*\n↓\nfile/[]#blk"
,
style
=
filled
fillcolor
=
grey95
]
wcfsInvProcess
[
label
=
"process\nZODB invalidations"
,
style
=
filled
fillcolor
=
grey95
]
zconnCacheGet
[
label
=
"zonn.\n.Cache.Get"
,
style
=
filled
fillcolor
=
lightyellow
]
zobj2file
[
label
=
"Z* → file/[]#blk"
,
style
=
filled
fillcolor
=
grey95
]
zblk2file
[
label
=
"ZBlk*\n↓\nfile/[]#blk"
,
style
=
filled
fillcolor
=
lightyellow
]
zbtree2file
[
label
=
"BTree/Bucket\n↓\nfile/[]#blk"
]
δ
BTree
[
label
=
"δ(BTree)"
]
fuseRetrieveCache
[
label
=
"FUSE:\nretrieve cache"
,
style
=
filled
fillcolor
=
lightyellow
]
_
wcfs_zhead
[
label
=
".wcfs/\nzhead"
,
style
=
filled
fillcolor
=
grey95
]
_
wcfs_zhead
[
label
=
".wcfs/\nzhead"
,
style
=
filled
fillcolor
=
lightyellow
]
wcfsRead
[
label
=
"read(#blk)"
]
blktabGet
[
label
=
"blktab.Get(#blk):\nmanually + → ⌈rev(#blk)⌉"
]
δ
Ftail
[
style
=
filled
fillcolor
=
grey95
]
δ
Ftail
[
style
=
filled
fillcolor
=
lightyellow
]
mappingRegister
[
label
=
"mmappings:\nregister/maint"
]
clientInvHandle
[
label
=
"process\n#blk invalidations"
]
headWatch
[
label
=
"#blk ← head/watch"
]
fileSock
[
label
=
"FileSock"
,
style
=
filled
fillcolor
=
grey95
]
fileSock
[
label
=
"FileSock"
,
style
=
filled
fillcolor
=
lightyellow
]
ZODB_go_inv
[
label
=
"ZODB/go\ninvalidations"
]
fs1_go_inv
[
label
=
"fs1/go\ninvalidations"
,
style
=
filled
fillcolor
=
grey95
]
ZODB_go_inv
[
label
=
"ZODB/go\ninvalidations"
,
style
=
filled
fillcolor
=
grey95
]
fs1_go_inv
[
label
=
"fs1/go\ninvalidations"
,
style
=
filled
fillcolor
=
lightyellow
]
zeo_go_inv
[
label
=
"zeo/go\ninvalidations"
]
neo_go_inv
[
label
=
"neo/go\ninvalidations"
]
zcache_go_inv
[
label
=
"ZCache/go\n←watchq"
]
zcache_go_inv
[
label
=
"ZCache/go\n←watchq"
,
color
=
grey
,
fontcolor
=
grey
]
// Btree_read [label="BTree read", style=filled fillcolor=lightyellow]
// ZBlk_read [label="ZBigFile / ZBlk* read", style=filled fillcolor=lightyellow]
// ZODB_read [label="ZODB deserialize object", style=filled fillcolor=lightyellow]
...
...
@@ -108,5 +109,6 @@ digraph {
// zodburl [label="zstor -> zurl", style=filled fillcolor=grey95]
wcfsGC
[
label
=
"GC\n@rev/"
]
liveCacheControl
[
label
=
"ZODB/go\nLiveCache fix"
]
autoexit
[
label
=
"autoexit\nif !activity"
]
}
wcfs/todo.svg
View file @
b87160d5
...
...
@@ -12,310 +12,323 @@
<!-- wcfs -->
<g
id=
"node1"
class=
"node"
>
<title>
wcfs
</title>
<ellipse
fill=
"none"
stroke=
"#000000"
cx=
"
952
.2046"
cy=
"-389.3036"
rx=
"27.0966"
ry=
"18"
/>
<text
text-anchor=
"middle"
x=
"
952
.2046"
y=
"-385.6036"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
wcfs
</text>
<ellipse
fill=
"none"
stroke=
"#000000"
cx=
"
875
.2046"
cy=
"-389.3036"
rx=
"27.0966"
ry=
"18"
/>
<text
text-anchor=
"middle"
x=
"
875
.2046"
y=
"-385.6036"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
wcfs
</text>
</g>
<!-- invProto -->
<g
id=
"node2"
class=
"node"
>
<title>
invProto
</title>
<ellipse
fill=
"#f2f2f2"
stroke=
"#000000"
cx=
"1
131
.2046"
cy=
"-389.3036"
rx=
"78.4777"
ry=
"26.7407"
/>
<text
text-anchor=
"middle"
x=
"1
131
.2046"
y=
"-393.1036"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
open/invalidation
</text>
<text
text-anchor=
"middle"
x=
"1
131
.2046"
y=
"-378.1036"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
protocol
</text>
<ellipse
fill=
"#f2f2f2"
stroke=
"#000000"
cx=
"1
070
.2046"
cy=
"-389.3036"
rx=
"78.4777"
ry=
"26.7407"
/>
<text
text-anchor=
"middle"
x=
"1
070
.2046"
y=
"-393.1036"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
open/invalidation
</text>
<text
text-anchor=
"middle"
x=
"1
070
.2046"
y=
"-378.1036"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
protocol
</text>
</g>
<!-- wcfs->invProto -->
<g
id=
"edge1"
class=
"edge"
>
<title>
wcfs
->
invProto
</title>
<path
fill=
"none"
stroke=
"#000000"
d=
"M9
79.8237,-389.3036C1000.6589,-389.3036 1021.4941,-389.3036 1042.3293
,-389.3036"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"
1042.5575,-392.8037 1052.5575,-389.3036 1042.5575,-385.8037 1042.5575
,-392.8037"
/>
<path
fill=
"none"
stroke=
"#000000"
d=
"M9
02.6265,-389.3036C928.9401,-389.3036 955.2537,-389.3036 981.5674
,-389.3036"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"
981.6524,-392.8037 991.6523,-389.3036 981.6523,-385.8037 981.6524
,-392.8037"
/>
</g>
<!--
autoexit
-->
<!--
liveCacheControl
-->
<g
id=
"node4"
class=
"node"
>
<title>
liveCacheControl
</title>
<ellipse
fill=
"none"
stroke=
"#000000"
cx=
"506.2046"
cy=
"-299.5635"
rx=
"66.4361"
ry=
"26.7407"
/>
<text
text-anchor=
"middle"
x=
"506.2046"
y=
"-303.3635"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
ZODB/go
</text>
<text
text-anchor=
"middle"
x=
"506.2046"
y=
"-288.3635"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
LiveCache fix
</text>
</g>
<!-- wcfs->liveCacheControl -->
<g
id=
"edge3"
class=
"edge"
>
<title>
wcfs
->
liveCacheControl
</title>
<path
fill=
"none"
stroke=
"#000000"
d=
"M848.6614,-384.7899C796.9026,-375.7292 679.0756,-353.8286 582.2046,-326.4335 576.5107,-324.8233 570.6245,-323.012 564.7648,-321.11"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"565.5607,-317.686 554.9671,-317.8428 563.3463,-324.3265 565.5607,-317.686"
/>
</g>
<!-- autoexit -->
<g
id=
"node5"
class=
"node"
>
<title>
autoexit
</title>
<ellipse
fill=
"none"
stroke=
"#000000"
cx=
"6
0
3.2046"
cy=
"-299.5635"
rx=
"52.1524"
ry=
"26.7407"
/>
<text
text-anchor=
"middle"
x=
"6
0
3.2046"
y=
"-303.3635"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
autoexit
</text>
<text
text-anchor=
"middle"
x=
"6
0
3.2046"
y=
"-288.3635"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
if !activity
</text>
<ellipse
fill=
"none"
stroke=
"#000000"
cx=
"6
4
3.2046"
cy=
"-299.5635"
rx=
"52.1524"
ry=
"26.7407"
/>
<text
text-anchor=
"middle"
x=
"6
4
3.2046"
y=
"-303.3635"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
autoexit
</text>
<text
text-anchor=
"middle"
x=
"6
4
3.2046"
y=
"-288.3635"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
if !activity
</text>
</g>
<!-- wcfs->autoexit -->
<g
id=
"edge
3
"
class=
"edge"
>
<g
id=
"edge
4
"
class=
"edge"
>
<title>
wcfs
->
autoexit
</title>
<path
fill=
"none"
stroke=
"#
000000"
d=
"M925.5266,-385.3135C874.1202,-377.2254 758.1195,-357.0277 664.2046,-326.4335 659.9426,-325.0451 655.5739,-323.4617 651.2282,-321.774
1"
/>
<polygon
fill=
"#
000000"
stroke=
"#000000"
points=
"652.3843,-318.4661 641.8021,-317.9484 649.7518,-324.9523 652.3843,-318.4661
"
/>
<path
fill=
"none"
stroke=
"#
c0c0c0"
d=
"M850.9517,-380.9253C817.6426,-369.2964 755.9745,-347.3287 704.2046,-326.4335 700.281,-324.8499 696.2339,-323.1706 692.1786,-321.455
1"
/>
<polygon
fill=
"#
c0c0c0"
stroke=
"#c0c0c0"
points=
"693.3256,-318.1388 682.7555,-317.4149 690.5671,-324.5724 693.3256,-318.1388
"
/>
</g>
<!-- wcfsInvProcess -->
<g
id=
"node
5
"
class=
"node"
>
<g
id=
"node
6
"
class=
"node"
>
<title>
wcfsInvProcess
</title>
<ellipse
fill=
"
none"
stroke=
"#000000"
cx=
"76
3.2046"
cy=
"-299.5635"
rx=
"89.6056"
ry=
"26.7407"
/>
<text
text-anchor=
"middle"
x=
"
76
3.2046"
y=
"-303.3635"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
process
</text>
<text
text-anchor=
"middle"
x=
"
76
3.2046"
y=
"-288.3635"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
ZODB invalidations
</text>
<ellipse
fill=
"
#f2f2f2"
stroke=
"#000000"
cx=
"80
3.2046"
cy=
"-299.5635"
rx=
"89.6056"
ry=
"26.7407"
/>
<text
text-anchor=
"middle"
x=
"
80
3.2046"
y=
"-303.3635"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
process
</text>
<text
text-anchor=
"middle"
x=
"
80
3.2046"
y=
"-288.3635"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
ZODB invalidations
</text>
</g>
<!-- wcfs->wcfsInvProcess -->
<g
id=
"edge
4
"
class=
"edge"
>
<g
id=
"edge
5
"
class=
"edge"
>
<title>
wcfs
->
wcfsInvProcess
</title>
<path
fill=
"none"
stroke=
"#000000"
d=
"M
929.7816,-378.6568C903.0093,-365.9449 857.2349,-344.2105 820.4374,-326.7385
"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"8
21.8272,-323.524 811.2926,-322.3964 818.8248,-329.8474 821.8272,-323.524
"
/>
<path
fill=
"none"
stroke=
"#000000"
d=
"M
862.3324,-373.2599C853.6233,-362.4049 841.7825,-347.6467 830.9842,-334.1877
"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"8
33.4207,-331.6316 824.4327,-326.022 827.9607,-336.0122 833.4207,-331.6316
"
/>
</g>
<!-- wcfsRead -->
<g
id=
"node
6
"
class=
"node"
>
<g
id=
"node
7
"
class=
"node"
>
<title>
wcfsRead
</title>
<ellipse
fill=
"none"
stroke=
"#000000"
cx=
"11
38
.2046"
cy=
"-299.5635"
rx=
"47.3916"
ry=
"18"
/>
<text
text-anchor=
"middle"
x=
"11
38
.2046"
y=
"-295.8635"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
read(#blk)
</text>
<ellipse
fill=
"none"
stroke=
"#000000"
cx=
"11
05
.2046"
cy=
"-299.5635"
rx=
"47.3916"
ry=
"18"
/>
<text
text-anchor=
"middle"
x=
"11
05
.2046"
y=
"-295.8635"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
read(#blk)
</text>
</g>
<!-- wcfs->wcfsRead -->
<g
id=
"edge
5
"
class=
"edge"
>
<g
id=
"edge
6
"
class=
"edge"
>
<title>
wcfs
->
wcfsRead
</title>
<path
fill=
"none"
stroke=
"#000000"
d=
"M
974.2716,-378.6568C1005.1432,-363.7621 1061.6893,-336.4801 1099.6147,-318.1821
"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"1
101.3429,-321.2344 1108.8286,-313.7367 1098.3011,-314.9298 1101.3429,-321.2344
"
/>
<path
fill=
"none"
stroke=
"#000000"
d=
"M
898.9523,-380.0378C937.5007,-364.9973 1014.2273,-335.0605 1062.4563,-316.2428
"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"1
063.9529,-319.4159 1071.9967,-312.5204 1061.4084,-312.8947 1063.9529,-319.4159
"
/>
</g>
<!-- wcfsGC -->
<g
id=
"node
7
"
class=
"node"
>
<g
id=
"node
8
"
class=
"node"
>
<title>
wcfsGC
</title>
<ellipse
fill=
"none"
stroke=
"#000000"
cx=
"9
52
.2046"
cy=
"-299.5635"
rx=
"35.2113"
ry=
"26.7407"
/>
<text
text-anchor=
"middle"
x=
"9
52
.2046"
y=
"-303.3635"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
GC
</text>
<text
text-anchor=
"middle"
x=
"9
52
.2046"
y=
"-288.3635"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
@rev/
</text>
<ellipse
fill=
"none"
stroke=
"#000000"
cx=
"9
46
.2046"
cy=
"-299.5635"
rx=
"35.2113"
ry=
"26.7407"
/>
<text
text-anchor=
"middle"
x=
"9
46
.2046"
y=
"-303.3635"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
GC
</text>
<text
text-anchor=
"middle"
x=
"9
46
.2046"
y=
"-288.3635"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
@rev/
</text>
</g>
<!-- wcfs->wcfsGC -->
<g
id=
"edge
6
"
class=
"edge"
>
<g
id=
"edge
7
"
class=
"edge"
>
<title>
wcfs
->
wcfsGC
</title>
<path
fill=
"none"
stroke=
"#
000000"
d=
"M952.2046,-371.1434C952.2046,-361.2404 952.2046,-348.6082 952.2046,-336.7207
"
/>
<polygon
fill=
"#
000000"
stroke=
"#000000"
points=
"955.7047,-336.5531 952.2046,-326.5531 948.7047,-336.5532 955.7047,-336.5531
"
/>
<path
fill=
"none"
stroke=
"#
c0c0c0"
d=
"M887.898,-373.2599C897.1673,-361.5439 910.0342,-345.2809 921.3232,-331.0122
"
/>
<polygon
fill=
"#
c0c0c0"
stroke=
"#c0c0c0"
points=
"924.2887,-332.9049 927.7485,-322.8909 918.799,-328.5617 924.2887,-332.9049
"
/>
</g>
<!-- client -->
<g
id=
"node3"
class=
"node"
>
<title>
client
</title>
<ellipse
fill=
"none"
stroke=
"#000000"
cx=
"12
86
.2046"
cy=
"-389.3036"
rx=
"30.5947"
ry=
"18"
/>
<text
text-anchor=
"middle"
x=
"12
86
.2046"
y=
"-385.6036"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
client
</text>
<ellipse
fill=
"none"
stroke=
"#000000"
cx=
"12
51
.2046"
cy=
"-389.3036"
rx=
"30.5947"
ry=
"18"
/>
<text
text-anchor=
"middle"
x=
"12
51
.2046"
y=
"-385.6036"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
client
</text>
</g>
<!-- invProto->client -->
<g
id=
"edge2"
class=
"edge"
>
<title>
invProto
->
client
</title>
<path
fill=
"none"
stroke=
"#000000"
d=
"M1
220.2456,-389.3036C1232.0004,-389.3036 1243.7553,-389.3036 1255.5102
,-389.3036"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"1
219.9156,-385.8037 1209.9155,-389.3036 1219.9155,-392.8037 1219.915
6,-385.8037"
/>
<path
fill=
"none"
stroke=
"#000000"
d=
"M1
159.0843,-389.3036C1179.5479,-389.3036 1200.0114,-389.3036 1220.475
,-389.3036"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"1
159.0386,-385.8037 1149.0386,-389.3036 1159.0385,-392.8037 1159.038
6,-385.8037"
/>
</g>
<!-- client->wcfsRead -->
<g
id=
"edge2
4
"
class=
"edge"
>
<g
id=
"edge2
5
"
class=
"edge"
>
<title>
client
->
wcfsRead
</title>
<path
fill=
"none"
stroke=
"#000000"
d=
"M12
64.6841,-376.2546C1240.4497,-361.56 1200.7439,-337.4844 1172.2829
,-320.227"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"11
73.8369,-317.0761 1163.4713,-314.884 1170.2075,-323.0617 1173.8369,-317.0761
"
/>
<path
fill=
"none"
stroke=
"#000000"
d=
"M12
29.9749,-376.2546C1206.068,-361.56 1166.8988,-337.4844 1138.8224
,-320.227"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"11
40.482,-317.1388 1130.1299,-314.884 1136.8164,-323.1023 1140.482,-317.1388
"
/>
</g>
<!-- mappingRegister -->
<g
id=
"node
19
"
class=
"node"
>
<g
id=
"node
20
"
class=
"node"
>
<title>
mappingRegister
</title>
<ellipse
fill=
"none"
stroke=
"#000000"
cx=
"1483.2046"
cy=
"-209.8234"
rx=
"65.1077"
ry=
"26.7407"
/>
<text
text-anchor=
"middle"
x=
"1483.2046"
y=
"-213.6234"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
mmappings:
</text>
<text
text-anchor=
"middle"
x=
"1483.2046"
y=
"-198.6234"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
register/maint
</text>
</g>
<!-- client->mappingRegister -->
<g
id=
"edge2
5
"
class=
"edge"
>
<g
id=
"edge2
6
"
class=
"edge"
>
<title>
client
->
mappingRegister
</title>
<path
fill=
"none"
stroke=
"#000000"
d=
"M1
308.5249,-376.7197C1327.784,-365.1945 1355.6605,-346.8604 1376.2046,-326.4335 1396.9483,-305.8082 1394.8355,-294.6147 1414.2046,-272.6934 1423.9619,-261.6504 1435.493,-250.5204 1446.3067,-240.7583
"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"14
48.8634,-243.1688 1454.0184,-233.9126 1444.2163,-237.9339 1448.8634,-243.1688
"
/>
<path
fill=
"none"
stroke=
"#000000"
d=
"M1
280.7168,-384.5439C1333.2703,-375.4553 1439.8519,-354.0516 1464.2046,-326.4335 1483.1625,-304.9336 1487.0846,-272.1581 1486.7372,-246.824
"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"14
90.2349,-246.6935 1486.3786,-236.8254 1483.2394,-246.9444 1490.2349,-246.6935
"
/>
</g>
<!-- clientInvHandle -->
<g
id=
"node2
4
"
class=
"node"
>
<g
id=
"node2
5
"
class=
"node"
>
<title>
clientInvHandle
</title>
<ellipse
fill=
"none"
stroke=
"#000000"
cx=
"12
86
.2046"
cy=
"-299.5635"
rx=
"80.7205"
ry=
"26.7407"
/>
<text
text-anchor=
"middle"
x=
"12
86
.2046"
y=
"-303.3635"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
process
</text>
<text
text-anchor=
"middle"
x=
"12
86
.2046"
y=
"-288.3635"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
#blk invalidations
</text>
<ellipse
fill=
"none"
stroke=
"#000000"
cx=
"12
51
.2046"
cy=
"-299.5635"
rx=
"80.7205"
ry=
"26.7407"
/>
<text
text-anchor=
"middle"
x=
"12
51
.2046"
y=
"-303.3635"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
process
</text>
<text
text-anchor=
"middle"
x=
"12
51
.2046"
y=
"-288.3635"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
#blk invalidations
</text>
</g>
<!-- client->clientInvHandle -->
<g
id=
"edge2
6
"
class=
"edge"
>
<g
id=
"edge2
7
"
class=
"edge"
>
<title>
client
->
clientInvHandle
</title>
<path
fill=
"none"
stroke=
"#000000"
d=
"M12
86.2046,-371.1434C1286.2046,-361.2404 1286.2046,-348.6082 1286
.2046,-336.7207"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"12
89.7047,-336.5531 1286.2046,-326.5531 1282.7047,-336.5532 1289
.7047,-336.5531"
/>
<path
fill=
"none"
stroke=
"#000000"
d=
"M12
51.2046,-371.1434C1251.2046,-361.2404 1251.2046,-348.6082 1251
.2046,-336.7207"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"12
54.7047,-336.5531 1251.2046,-326.5531 1247.7047,-336.5532 1254
.7047,-336.5531"
/>
</g>
<!-- nowcfs -->
<g
id=
"node2
5
"
class=
"node"
>
<g
id=
"node2
6
"
class=
"node"
>
<title>
nowcfs
</title>
<ellipse
fill=
"
none"
stroke=
"#000000"
cx=
"1476
.2046"
cy=
"-299.5635"
rx=
"52.7911"
ry=
"18"
/>
<text
text-anchor=
"middle"
x=
"14
76
.2046"
y=
"-295.8635"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
!wcfs mode
</text>
<ellipse
fill=
"
#f2f2f2"
stroke=
"#000000"
cx=
"1402
.2046"
cy=
"-299.5635"
rx=
"52.7911"
ry=
"18"
/>
<text
text-anchor=
"middle"
x=
"14
02
.2046"
y=
"-295.8635"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
!wcfs mode
</text>
</g>
<!-- client->nowcfs -->
<g
id=
"edge2
7
"
class=
"edge"
>
<g
id=
"edge2
8
"
class=
"edge"
>
<title>
client
->
nowcfs
</title>
<path
fill=
"none"
stroke=
"#000000"
d=
"M1
310.2682,-377.938C1341.843,-363.0247 1397.7075,-336.639 1435.8168,-318.6393
"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"1
437.5501,-321.6915 1445.0975,-314.2559 1434.5605,-315.3619 1437.5501,-321.6915
"
/>
<path
fill=
"none"
stroke=
"#000000"
d=
"M1
272.8392,-376.446C1297.449,-361.8203 1337.991,-337.726 1367.1341,-320.4061
"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"1
368.974,-323.3841 1375.7823,-315.2664 1365.3977,-317.3666 1368.974,-323.3841
"
/>
</g>
<!-- ZODB_go_inv -->
<g
id=
"node
8
"
class=
"node"
>
<g
id=
"node
9
"
class=
"node"
>
<title>
ZODB_go_inv
</title>
<ellipse
fill=
"
none
"
stroke=
"#000000"
cx=
"467.2046"
cy=
"-209.8234"
rx=
"60.623"
ry=
"26.7407"
/>
<ellipse
fill=
"
#f2f2f2
"
stroke=
"#000000"
cx=
"467.2046"
cy=
"-209.8234"
rx=
"60.623"
ry=
"26.7407"
/>
<text
text-anchor=
"middle"
x=
"467.2046"
y=
"-213.6234"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
ZODB/go
</text>
<text
text-anchor=
"middle"
x=
"467.2046"
y=
"-198.6234"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
invalidations
</text>
</g>
<!-- wcfsInvProcess->ZODB_go_inv -->
<g
id=
"edge
7
"
class=
"edge"
>
<g
id=
"edge
8
"
class=
"edge"
>
<title>
wcfsInvProcess
->
ZODB_go_inv
</title>
<path
fill=
"none"
stroke=
"#000000"
d=
"M
696.7857,-281.4322C635.7728,-264.7202 552.5527,-241.7612 537.2046,-236.6934 532.3085,-235.0768 527.2517,-233.3172 522.2012,-231.4975
"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"52
3.1339,-228.1114 512.5403,-227.9459 520.7185,-234.6815 523.1339,-228.1114
"
/>
<path
fill=
"none"
stroke=
"#000000"
d=
"M
737.563,-281.2265C726.4551,-278.2731 715.0199,-275.3249 704.2046,-272.6934 630.4298,-254.7431 609.974,-258.3626 537.2046,-236.6934 532.0582,-235.161 526.7529,-233.4247 521.4735,-231.5901
"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"52
2.6329,-228.2877 512.0384,-228.2045 520.2686,-234.8764 522.6329,-228.2877
"
/>
</g>
<!-- zconnCacheGet -->
<g
id=
"node
9
"
class=
"node"
>
<g
id=
"node
10
"
class=
"node"
>
<title>
zconnCacheGet
</title>
<ellipse
fill=
"#f
2f2f2
"
stroke=
"#000000"
cx=
"749.2046"
cy=
"-209.8234"
rx=
"54.3945"
ry=
"26.7407"
/>
<ellipse
fill=
"#f
fffe0
"
stroke=
"#000000"
cx=
"749.2046"
cy=
"-209.8234"
rx=
"54.3945"
ry=
"26.7407"
/>
<text
text-anchor=
"middle"
x=
"749.2046"
y=
"-213.6234"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
zonn.
</text>
<text
text-anchor=
"middle"
x=
"749.2046"
y=
"-198.6234"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
.Cache.Get
</text>
</g>
<!-- wcfsInvProcess->zconnCacheGet -->
<g
id=
"edge
8
"
class=
"edge"
>
<g
id=
"edge
9
"
class=
"edge"
>
<title>
wcfsInvProcess
->
zconnCacheGet
</title>
<path
fill=
"none"
stroke=
"#000000"
d=
"M7
59.0041,-272.6385C757.7305,-264.4748 756.3089,-255.3623 754.9522,-246.6657
"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"7
58.4017,-246.0703 753.4021,-236.7294 751.4854,-247.1494 758.4017,-246.0703
"
/>
<path
fill=
"none"
stroke=
"#000000"
d=
"M7
87.0028,-272.6385C781.6822,-263.7964 775.6918,-253.8412 770.075,-244.5069
"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"7
72.9932,-242.5682 764.8383,-235.8044 766.9954,-246.1774 772.9932,-242.5682
"
/>
</g>
<!-- zobj2file -->
<g
id=
"node1
0
"
class=
"node"
>
<g
id=
"node1
1
"
class=
"node"
>
<title>
zobj2file
</title>
<ellipse
fill=
"
none
"
stroke=
"#000000"
cx=
"183.2046"
cy=
"-209.8234"
rx=
"70.3881"
ry=
"18"
/>
<ellipse
fill=
"
#f2f2f2
"
stroke=
"#000000"
cx=
"183.2046"
cy=
"-209.8234"
rx=
"70.3881"
ry=
"18"
/>
<text
text-anchor=
"middle"
x=
"183.2046"
y=
"-206.1234"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
Z* → file/[]#blk
</text>
</g>
<!-- wcfsInvProcess->zobj2file -->
<g
id=
"edge
9
"
class=
"edge"
>
<g
id=
"edge
10
"
class=
"edge"
>
<title>
wcfsInvProcess
->
zobj2file
</title>
<path
fill=
"none"
stroke=
"#000000"
d=
"M
698.8001,-280.7349C687.3407,-277.7713 675.4683,-274.9474 664.2046,-272.6934 644.4808,-268.7465 386.2372,-235.6668 256.5187,-219.1419
"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"256.
632,-215.6282 246.2699,-217.8367 255.7476,-222.5721 256.632,-215.628
2"
/>
<path
fill=
"none"
stroke=
"#000000"
d=
"M
739.0912,-280.6782C727.5469,-277.7029 715.5704,-274.8897 704.2046,-272.6934 569.3204,-246.6294 533.5825,-253.2511 397.2046,-236.6934 350.3303,-231.0024 297.7099,-224.3982 256.3779,-219.1614
"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"256.
7549,-215.6812 246.394,-217.8952 255.8741,-222.6256 256.7549,-215.681
2"
/>
</g>
<!-- δFtail -->
<g
id=
"node1
1
"
class=
"node"
>
<g
id=
"node1
2
"
class=
"node"
>
<title>
δFtail
</title>
<ellipse
fill=
"#f
2f2f2
"
stroke=
"#000000"
cx=
"942.2046"
cy=
"-209.8234"
rx=
"31.6951"
ry=
"18"
/>
<ellipse
fill=
"#f
fffe0
"
stroke=
"#000000"
cx=
"942.2046"
cy=
"-209.8234"
rx=
"31.6951"
ry=
"18"
/>
<text
text-anchor=
"middle"
x=
"942.2046"
y=
"-206.1234"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
δFtail
</text>
</g>
<!-- wcfsInvProcess->δFtail -->
<g
id=
"edge1
0
"
class=
"edge"
>
<g
id=
"edge1
1
"
class=
"edge"
>
<title>
wcfsInvProcess
->
δFtail
</title>
<path
fill=
"none"
stroke=
"#000000"
d=
"M8
16.2263,-277.6703C842.2862,-266.3437 873.8829,-251.7549 901.2046,-236.6934 905.2548,-234.4607 909.4331,-231.965 913.5025,-229.41
87"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"91
5.6376,-232.2065 922.1452,-223.8458 911.8442,-226.3235 915.6376,-232.206
5"
/>
<path
fill=
"none"
stroke=
"#000000"
d=
"M8
41.423,-275.1669C859.5643,-263.5554 881.5304,-249.4507 901.2046,-236.6934 905.0025,-234.2307 908.9921,-231.6315 912.9298,-229.05
87"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"91
4.9226,-231.9375 921.3725,-223.5322 911.0887,-226.0807 914.9226,-231.937
5"
/>
</g>
<!-- fuseRetrieveCache -->
<g
id=
"node1
2
"
class=
"node"
>
<g
id=
"node1
3
"
class=
"node"
>
<title>
fuseRetrieveCache
</title>
<ellipse
fill=
"#ffffe0"
stroke=
"#000000"
cx=
"611.2046"
cy=
"-209.8234"
rx=
"65.1077"
ry=
"26.7407"
/>
<text
text-anchor=
"middle"
x=
"611.2046"
y=
"-213.6234"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
FUSE:
</text>
<text
text-anchor=
"middle"
x=
"611.2046"
y=
"-198.6234"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
retrieve cache
</text>
</g>
<!-- wcfsInvProcess->fuseRetrieveCache -->
<g
id=
"edge1
1
"
class=
"edge"
>
<g
id=
"edge1
2
"
class=
"edge"
>
<title>
wcfsInvProcess
->
fuseRetrieveCache
</title>
<path
fill=
"none"
stroke=
"#000000"
d=
"M7
22.4714,-275.5148C702.3885,-263.658 678.0842,-249.3088 657.3199,-237.0497
"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"6
59.0509,-234.0072 648.6603,-231.9371 655.4921,-240.035 659.0509,-234.0072
"
/>
<path
fill=
"none"
stroke=
"#000000"
d=
"M7
54.7549,-276.9183C727.0082,-263.9496 692.1716,-247.6671 663.7652,-234.39
"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"6
64.9391,-231.0753 654.3978,-230.0117 661.9751,-237.4168 664.9391,-231.0753
"
/>
</g>
<!-- _wcfs_zhead -->
<g
id=
"node1
3
"
class=
"node"
>
<g
id=
"node1
4
"
class=
"node"
>
<title>
_wcfs_zhead
</title>
<ellipse
fill=
"#f
2f2f2
"
stroke=
"#000000"
cx=
"857.2046"
cy=
"-209.8234"
rx=
"35.2113"
ry=
"26.7407"
/>
<ellipse
fill=
"#f
fffe0
"
stroke=
"#000000"
cx=
"857.2046"
cy=
"-209.8234"
rx=
"35.2113"
ry=
"26.7407"
/>
<text
text-anchor=
"middle"
x=
"857.2046"
y=
"-213.6234"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
.wcfs/
</text>
<text
text-anchor=
"middle"
x=
"857.2046"
y=
"-198.6234"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
zhead
</text>
</g>
<!-- wcfsInvProcess->_wcfs_zhead -->
<g
id=
"edge1
2
"
class=
"edge"
>
<g
id=
"edge1
3
"
class=
"edge"
>
<title>
wcfsInvProcess
->
_wcfs_zhead
</title>
<path
fill=
"none"
stroke=
"#000000"
d=
"M
790.1412,-273.8476C801.8011,-262.7161 815.489,-249.6485 827.4478,-238.2316
"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"8
30.2019,-240.4413 835.0181,-231.0044 825.3682,-235.3781 830.2019,-240.4413
"
/>
<path
fill=
"none"
stroke=
"#000000"
d=
"M
819.4064,-272.6385C825.0197,-263.31 831.3785,-252.7425 837.2576,-242.9723
"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"8
40.3297,-244.6552 842.4867,-234.2823 834.3319,-241.0461 840.3297,-244.6552
"
/>
</g>
<!-- wcfsRead->δFtail -->
<g
id=
"edge1
8
"
class=
"edge"
>
<g
id=
"edge1
9
"
class=
"edge"
>
<title>
wcfsRead
->
δFtail
</title>
<path
fill=
"none"
stroke=
"#000000"
d=
"M1
102.5668,-287.6028C1070.3202,-276.2239 1021.9382,-257.7497 982.2046,-236.6934 978.3792,-234.6662 974.4659,-232.3606 970.6564,-229.972
"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"972.
3312,-226.8852 962.0466,-224.3397 968.4991,-232.7431 972.3312,-226.885
2"
/>
<path
fill=
"none"
stroke=
"#000000"
d=
"M1
075.3491,-285.5388C1050.106,-273.3899 1013.2056,-254.9415 982.2046,-236.6934 978.4736,-234.4973 974.6165,-232.091 970.8368,-229.6493
"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"972.
5244,-226.5692 962.2533,-223.9699 968.6617,-232.407 972.5244,-226.569
2"
/>
</g>
<!-- blktabGet -->
<g
id=
"node1
8
"
class=
"node"
>
<g
id=
"node1
9
"
class=
"node"
>
<title>
blktabGet
</title>
<ellipse
fill=
"none"
stroke=
"#000000"
cx=
"1106.2046"
cy=
"-209.8234"
rx=
"114.6026"
ry=
"26.7407"
/>
<text
text-anchor=
"middle"
x=
"1106.2046"
y=
"-213.6234"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
blktab.Get(#blk):
</text>
<text
text-anchor=
"middle"
x=
"1106.2046"
y=
"-198.6234"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
manually + → ⌈rev(#blk)⌉
</text>
</g>
<!-- wcfsRead->blktabGet -->
<g
id=
"edge1
7
"
class=
"edge"
>
<g
id=
"edge1
8
"
class=
"edge"
>
<title>
wcfsRead
->
blktabGet
</title>
<path
fill=
"none"
stroke=
"#000000"
d=
"M11
31.7289,-281.4032C1128.1263,-271.3002 1123.5108,-258.3566 1119.1977,-246.2611
"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"11
22.4841,-245.0565 1115.8287,-236.813 1115.8908,-247.4077 1122.4841,-245.0565
"
/>
<path
fill=
"none"
stroke=
"#000000"
d=
"M11
05.4069,-281.4032C1105.5173,-271.5002 1105.6581,-258.8681 1105.7905,-246.9806
"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"11
09.2921,-246.8514 1105.9038,-236.813 1102.2925,-246.7734 1109.2921,-246.8514
"
/>
</g>
<!-- wcfsRead->mappingRegister -->
<g
id=
"edge
19
"
class=
"edge"
>
<g
id=
"edge
20
"
class=
"edge"
>
<title>
wcfsRead
->
mappingRegister
</title>
<path
fill=
"none"
stroke=
"#000000"
d=
"M11
65.9282,-284.8924C1175.3286,-280.4156 1186.0288,-275.8483 1196.2046,-272.6934 1287.9077,-244.2624 1316.3698,-261.1777 1409.2046,-236.6934 1414.7925,-235.2197 1420.5532,-233.4998 1426.2771,-231.6552
"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"1427.
4666,-234.948 1435.8385,-228.4548 1425.2446,-228.31 1427.4666,-234.948
"
/>
<path
fill=
"none"
stroke=
"#000000"
d=
"M11
32.165,-284.591C1141.1669,-280.1495 1151.4051,-275.6794 1161.2046,-272.6934 1267.746,-240.2301 1301.1865,-263.8416 1409.2046,-236.6934 1414.8942,-235.2635 1420.7561,-233.5577 1426.5727,-231.7087
"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"1427.
8927,-234.9584 1436.2802,-228.4854 1425.6867,-228.315 1427.8927,-234.9584
"
/>
</g>
<!-- headWatch -->
<g
id=
"node2
0
"
class=
"node"
>
<g
id=
"node2
1
"
class=
"node"
>
<title>
headWatch
</title>
<ellipse
fill=
"none"
stroke=
"#000000"
cx=
"1319.2046"
cy=
"-209.8234"
rx=
"80.6858"
ry=
"18"
/>
<text
text-anchor=
"middle"
x=
"1319.2046"
y=
"-206.1234"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
#blk ← head/watch
</text>
</g>
<!-- wcfsRead->headWatch -->
<g
id=
"edge2
0
"
class=
"edge"
>
<g
id=
"edge2
1
"
class=
"edge"
>
<title>
wcfsRead
->
headWatch
</title>
<path
fill=
"none"
stroke=
"#000000"
d=
"M11
67.2854,-285.1452C1196.8805,-270.4719 1243.0675,-247.5723 1276.75,-230.8724
"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"12
78.4898,-233.9164 1285.8944,-226.3386 1275.3804,-227.645 1278.4898,-233.9164
"
/>
<path
fill=
"none"
stroke=
"#000000"
d=
"M11
34.0944,-285.2354C1142.7553,-281.0666 1152.3156,-276.589 1161.2046,-272.6934 1196.7364,-257.1216 1237.4211,-240.9708 1268.6067,-228.9383
"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"12
69.8855,-232.1965 1277.9638,-225.3415 1267.3738,-225.6626 1269.8855,-232.1965
"
/>
</g>
<!-- fs1_go_inv -->
<g
id=
"node1
4
"
class=
"node"
>
<g
id=
"node1
5
"
class=
"node"
>
<title>
fs1_go_inv
</title>
<ellipse
fill=
"#f
2f2f2
"
stroke=
"#000000"
cx=
"733.2046"
cy=
"-109.4767"
rx=
"60.623"
ry=
"26.7407"
/>
<ellipse
fill=
"#f
fffe0
"
stroke=
"#000000"
cx=
"733.2046"
cy=
"-109.4767"
rx=
"60.623"
ry=
"26.7407"
/>
<text
text-anchor=
"middle"
x=
"733.2046"
y=
"-113.2767"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
fs1/go
</text>
<text
text-anchor=
"middle"
x=
"733.2046"
y=
"-98.2767"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
invalidations
</text>
</g>
<!-- ZODB_go_inv->fs1_go_inv -->
<g
id=
"edge1
3
"
class=
"edge"
>
<g
id=
"edge1
4
"
class=
"edge"
>
<title>
ZODB_go_inv
->
fs1_go_inv
</title>
<path
fill=
"none"
stroke=
"#000000"
d=
"M512.5558,-191.7476C520.7165,-188.6861 529.1793,-185.6343 537.2046,-182.9533 592.4446,-164.4997 609.2254,-168.8222 663.2046,-146.9533 671.1937,-143.7167 679.4564,-139.8252 687.3824,-135.7919"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"689.2584,-138.7605 696.4956,-131.0227 686.0127,-132.5584 689.2584,-138.7605"
/>
</g>
<!-- zeo_go_inv -->
<g
id=
"node1
5
"
class=
"node"
>
<g
id=
"node1
6
"
class=
"node"
>
<title>
zeo_go_inv
</title>
<ellipse
fill=
"none"
stroke=
"#000000"
cx=
"327.2046"
cy=
"-109.4767"
rx=
"60.623"
ry=
"26.7407"
/>
<text
text-anchor=
"middle"
x=
"327.2046"
y=
"-113.2767"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
zeo/go
</text>
<text
text-anchor=
"middle"
x=
"327.2046"
y=
"-98.2767"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
invalidations
</text>
</g>
<!-- ZODB_go_inv->zeo_go_inv -->
<g
id=
"edge1
4
"
class=
"edge"
>
<g
id=
"edge1
5
"
class=
"edge"
>
<title>
ZODB_go_inv
->
zeo_go_inv
</title>
<path
fill=
"none"
stroke=
"#000000"
d=
"M435.0858,-186.8018C414.9882,-172.3967 388.9291,-153.7185 367.4574,-138.3284"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"369.3408,-135.3721 359.174,-132.3911 365.2628,-141.0616 369.3408,-135.3721"
/>
</g>
<!-- neo_go_inv -->
<g
id=
"node1
6
"
class=
"node"
>
<g
id=
"node1
7
"
class=
"node"
>
<title>
neo_go_inv
</title>
<ellipse
fill=
"none"
stroke=
"#000000"
cx=
"467.2046"
cy=
"-109.4767"
rx=
"60.623"
ry=
"26.7407"
/>
<text
text-anchor=
"middle"
x=
"467.2046"
y=
"-113.2767"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
neo/go
</text>
<text
text-anchor=
"middle"
x=
"467.2046"
y=
"-98.2767"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
invalidations
</text>
</g>
<!-- ZODB_go_inv->neo_go_inv -->
<g
id=
"edge1
5
"
class=
"edge"
>
<g
id=
"edge1
6
"
class=
"edge"
>
<title>
ZODB_go_inv
->
neo_go_inv
</title>
<path
fill=
"none"
stroke=
"#000000"
d=
"M467.2046,-182.9323C467.2046,-171.7967 467.2046,-158.6951 467.2046,-146.6635"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"470.7047,-146.4419 467.2046,-136.442 463.7047,-146.442 470.7047,-146.4419"
/>
</g>
<!-- zcache_go_inv -->
<g
id=
"node1
7
"
class=
"node"
>
<g
id=
"node1
8
"
class=
"node"
>
<title>
zcache_go_inv
</title>
<ellipse
fill=
"none"
stroke=
"#
00000
0"
cx=
"600.2046"
cy=
"-109.4767"
rx=
"53.9813"
ry=
"26.7407"
/>
<text
text-anchor=
"middle"
x=
"600.2046"
y=
"-113.2767"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#
00000
0"
>
ZCache/go
</text>
<text
text-anchor=
"middle"
x=
"600.2046"
y=
"-98.2767"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#
00000
0"
>
←watchq
</text>
<ellipse
fill=
"none"
stroke=
"#
c0c0c
0"
cx=
"600.2046"
cy=
"-109.4767"
rx=
"53.9813"
ry=
"26.7407"
/>
<text
text-anchor=
"middle"
x=
"600.2046"
y=
"-113.2767"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#
c0c0c
0"
>
ZCache/go
</text>
<text
text-anchor=
"middle"
x=
"600.2046"
y=
"-98.2767"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#
c0c0c
0"
>
←watchq
</text>
</g>
<!-- ZODB_go_inv->zcache_go_inv -->
<g
id=
"edge1
6
"
class=
"edge"
>
<g
id=
"edge1
7
"
class=
"edge"
>
<title>
ZODB_go_inv
->
zcache_go_inv
</title>
<path
fill=
"none"
stroke=
"#
000000
"
d=
"M498.0517,-186.5496C517.2061,-172.0979 541.9634,-153.4189 562.308,-138.0691"
/>
<polygon
fill=
"#
000000"
stroke=
"#00000
0"
points=
"564.5648,-140.7509 570.4396,-131.9339 560.3488,-135.1629 564.5648,-140.7509"
/>
<path
fill=
"none"
stroke=
"#
c0c0c0"
stroke-dasharray=
"5,2
"
d=
"M498.0517,-186.5496C517.2061,-172.0979 541.9634,-153.4189 562.308,-138.0691"
/>
<polygon
fill=
"#
c0c0c0"
stroke=
"#c0c0c
0"
points=
"564.5648,-140.7509 570.4396,-131.9339 560.3488,-135.1629 564.5648,-140.7509"
/>
</g>
<!-- zblk2file -->
<g
id=
"node2
1
"
class=
"node"
>
<g
id=
"node2
2
"
class=
"node"
>
<title>
zblk2file
</title>
<ellipse
fill=
"#f
2f2f2
"
stroke=
"#000000"
cx=
"50.2046"
cy=
"-109.4767"
rx=
"50.41"
ry=
"37.4533"
/>
<ellipse
fill=
"#f
fffe0
"
stroke=
"#000000"
cx=
"50.2046"
cy=
"-109.4767"
rx=
"50.41"
ry=
"37.4533"
/>
<text
text-anchor=
"middle"
x=
"50.2046"
y=
"-120.7767"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
ZBlk*
</text>
<text
text-anchor=
"middle"
x=
"50.2046"
y=
"-105.7767"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
↓
</text>
<text
text-anchor=
"middle"
x=
"50.2046"
y=
"-90.7767"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
file/[]#blk
</text>
</g>
<!-- zobj2file->zblk2file -->
<g
id=
"edge2
1
"
class=
"edge"
>
<g
id=
"edge2
2
"
class=
"edge"
>
<title>
zobj2file
->
zblk2file
</title>
<path
fill=
"none"
stroke=
"#000000"
d=
"M160.3411,-192.5732C142.0844,-178.7987 115.9716,-159.097 93.7543,-142.3343"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"95.8578,-139.5369 85.7669,-136.308 91.6417,-145.1249 95.8578,-139.5369"
/>
</g>
<!-- zbtree2file -->
<g
id=
"node2
2
"
class=
"node"
>
<g
id=
"node2
3
"
class=
"node"
>
<title>
zbtree2file
</title>
<ellipse
fill=
"none"
stroke=
"#000000"
cx=
"183.2046"
cy=
"-109.4767"
rx=
"65.1077"
ry=
"37.4533"
/>
<text
text-anchor=
"middle"
x=
"183.2046"
y=
"-120.7767"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
BTree/Bucket
</text>
...
...
@@ -323,46 +336,46 @@
<text
text-anchor=
"middle"
x=
"183.2046"
y=
"-90.7767"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
file/[]#blk
</text>
</g>
<!-- zobj2file->zbtree2file -->
<g
id=
"edge2
2
"
class=
"edge"
>
<g
id=
"edge2
3
"
class=
"edge"
>
<title>
zobj2file
->
zbtree2file
</title>
<path
fill=
"none"
stroke=
"#000000"
d=
"M183.2046,-191.4182C183.2046,-181.7819 183.2046,-169.4895 183.2046,-157.3745"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"186.7047,-157.3017 183.2046,-147.3017 179.7047,-157.3018 186.7047,-157.3017"
/>
</g>
<!-- fileSock -->
<g
id=
"node2
6
"
class=
"node"
>
<g
id=
"node2
7
"
class=
"node"
>
<title>
fileSock
</title>
<ellipse
fill=
"#f
2f2f2
"
stroke=
"#000000"
cx=
"1088.2046"
cy=
"-109.4767"
rx=
"42.4939"
ry=
"18"
/>
<ellipse
fill=
"#f
fffe0
"
stroke=
"#000000"
cx=
"1088.2046"
cy=
"-109.4767"
rx=
"42.4939"
ry=
"18"
/>
<text
text-anchor=
"middle"
x=
"1088.2046"
y=
"-105.7767"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
FileSock
</text>
</g>
<!-- _wcfs_zhead->fileSock -->
<g
id=
"edge3
0
"
class=
"edge"
>
<g
id=
"edge3
1
"
class=
"edge"
>
<title>
_wcfs_zhead
->
fileSock
</title>
<path
fill=
"none"
stroke=
"#000000"
d=
"M884.249,-192.2985C889.762,-189.015 895.5941,-185.7422 901.2046,-182.9533 948.9451,-159.2221 1006.3368,-137.6367 1044.8381,-124.0939"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"1046.3966,-127.2573 1054.6869,-120.6602 1044.092,-120.6475 1046.3966,-127.2573"
/>
</g>
<!-- headWatch->fileSock -->
<g
id=
"edge
29
"
class=
"edge"
>
<g
id=
"edge
30
"
class=
"edge"
>
<title>
headWatch
->
fileSock
</title>
<path
fill=
"none"
stroke=
"#000000"
d=
"M1282.3465,-193.8122C1239.9515,-175.3957 1170.6358,-145.2849 1127.3142,-126.4659"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"1128.5204,-123.174 1117.9539,-122.3998 1125.7314,-129.5944 1128.5204,-123.174"
/>
</g>
<!-- δBTree -->
<g
id=
"node2
3
"
class=
"node"
>
<g
id=
"node2
4
"
class=
"node"
>
<title>
δBTree
</title>
<ellipse
fill=
"none"
stroke=
"#000000"
cx=
"183.2046"
cy=
"-18"
rx=
"43.5923"
ry=
"18"
/>
<text
text-anchor=
"middle"
x=
"183.2046"
y=
"-14.3"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
δ(BTree)
</text>
</g>
<!-- zbtree2file->δBTree -->
<g
id=
"edge2
3
"
class=
"edge"
>
<g
id=
"edge2
4
"
class=
"edge"
>
<title>
zbtree2file
->
δBTree
</title>
<path
fill=
"none"
stroke=
"#
00000
0"
d=
"M183.2046,-71.7415C183.2046,-63.3502 183.2046,-54.5881 183.2046,-46.6326"
/>
<polygon
fill=
"#
000000"
stroke=
"#00000
0"
points=
"186.7047,-46.3947 183.2046,-36.3948 179.7047,-46.3948 186.7047,-46.3947"
/>
<path
fill=
"none"
stroke=
"#
c0c0c
0"
d=
"M183.2046,-71.7415C183.2046,-63.3502 183.2046,-54.5881 183.2046,-46.6326"
/>
<polygon
fill=
"#
c0c0c0"
stroke=
"#c0c0c
0"
points=
"186.7047,-46.3947 183.2046,-36.3948 179.7047,-46.3948 186.7047,-46.3947"
/>
</g>
<!-- clientInvHandle->headWatch -->
<g
id=
"edge2
8
"
class=
"edge"
>
<g
id=
"edge2
9
"
class=
"edge"
>
<title>
clientInvHandle
->
headWatch
</title>
<path
fill=
"none"
stroke=
"#000000"
d=
"M12
96.1057,-272.6385C1300.1756,-261.5708 1304.8868,-248.759 1308.9889,-237.60
4"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"13
12.3824,-238.5164 1312.5489,-227.9229 1305.8125,-236.1004 1312.3824,-238.5164
"
/>
<path
fill=
"none"
stroke=
"#000000"
d=
"M12
71.239,-273.1239C1280.129,-261.3917 1290.5608,-247.6248 1299.4214,-235.931
4"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"13
02.3012,-237.9261 1305.5511,-227.842 1296.722,-233.6985 1302.3012,-237.9261
"
/>
</g>
</g>
</svg>
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment