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
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Joshua
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
Hide 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