From cbc5260e939e7e290f2f80a450c766adc200d41b Mon Sep 17 00:00:00 2001 From: Scott Lystig Fritchie Date: Fri, 31 Oct 2014 16:21:22 +0900 Subject: [PATCH] WIP: Chain manager projection store flowchart goop draft 2 --- prototype/poc-machi/docs/machi/Diagram1.eps | 1031 +++++++++++++++++ .../poc-machi/src/machi_chain_manager1.erl | 74 -- 2 files changed, 1031 insertions(+), 74 deletions(-) create mode 100644 prototype/poc-machi/docs/machi/Diagram1.eps diff --git a/prototype/poc-machi/docs/machi/Diagram1.eps b/prototype/poc-machi/docs/machi/Diagram1.eps new file mode 100644 index 0000000..58ca367 --- /dev/null +++ b/prototype/poc-machi/docs/machi/Diagram1.eps @@ -0,0 +1,1031 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: /Users/fritchie/b/src/corfurl/docs/machi/Diagram1.dia +%%Creator: Dia v0.97.3 +%%CreationDate: Fri Oct 31 16:19:34 2014 +%%For: fritchie +%%Orientation: Portrait +%%Magnification: 1.0000 +%%BoundingBox: 0 0 513 416 +%%BeginSetup +%%EndSetup +%%EndComments +%%BeginProlog +[ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright +/parenleft /parenright /asterisk /plus /comma /hyphen /period /slash /zero /one +/two /three /four /five /six /seven /eight /nine /colon /semicolon +/less /equal /greater /question /at /A /B /C /D /E +/F /G /H /I /J /K /L /M /N /O +/P /Q /R /S /T /U /V /W /X /Y +/Z /bracketleft /backslash /bracketright /asciicircum /underscore /quoteleft /a /b /c +/d /e /f /g /h /i /j /k /l /m +/n /o /p /q /r /s /t /u /v /w +/x /y /z /braceleft /bar /braceright /asciitilde /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/space /exclamdown /cent /sterling /currency /yen /brokenbar /section /dieresis /copyright +/ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron /degree /plusminus /twosuperior /threesuperior +/acute /mu /paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf +/threequarters /questiondown /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla +/Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Eth /Ntilde +/Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex +/Udieresis /Yacute /Thorn /germandbls /agrave /aacute /acircumflex /atilde /adieresis /aring +/ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis +/eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave +/uacute /ucircumflex /udieresis /yacute /thorn /ydieresis] /isolatin1encoding exch def +/cp {closepath} bind def +/c {curveto} bind def +/f {fill} bind def +/a {arc} bind def +/ef {eofill} bind def +/ex {exch} bind def +/gr {grestore} bind def +/gs {gsave} bind def +/sa {save} bind def +/rs {restore} bind def +/l {lineto} bind def +/m {moveto} bind def +/rm {rmoveto} bind def +/n {newpath} bind def +/s {stroke} bind def +/sh {show} bind def +/slc {setlinecap} bind def +/slj {setlinejoin} bind def +/slw {setlinewidth} bind def +/srgb {setrgbcolor} bind def +/rot {rotate} bind def +/sc {scale} bind def +/sd {setdash} bind def +/ff {findfont} bind def +/sf {setfont} bind def +/scf {scalefont} bind def +/sw {stringwidth pop} bind def +/tr {translate} bind def + +/ellipsedict 8 dict def +ellipsedict /mtrx matrix put +/ellipse +{ ellipsedict begin + /endangle exch def + /startangle exch def + /yrad exch def + /xrad exch def + /y exch def + /x exch def /savematrix mtrx currentmatrix def + x y tr xrad yrad sc + 0 0 1 startangle endangle arc + savematrix setmatrix + end +} def + +/mergeprocs { +dup length +3 -1 roll +dup +length +dup +5 1 roll +3 -1 roll +add +array cvx +dup +3 -1 roll +0 exch +putinterval +dup +4 2 roll +putinterval +} bind def +/Times-Roman-latin1 + /Times-Roman findfont + dup length dict begin + {1 index /FID ne {def} {pop pop} ifelse} forall + /Encoding isolatin1encoding def + currentdict end +definefont pop +/Times-Italic-latin1 + /Times-Italic findfont + dup length dict begin + {1 index /FID ne {def} {pop pop} ifelse} forall + /Encoding isolatin1encoding def + currentdict end +definefont pop +/Times-Bold-latin1 + /Times-Bold findfont + dup length dict begin + {1 index /FID ne {def} {pop pop} ifelse} forall + /Encoding isolatin1encoding def + currentdict end +definefont pop +/Times-BoldItalic-latin1 + /Times-BoldItalic findfont + dup length dict begin + {1 index /FID ne {def} {pop pop} ifelse} forall + /Encoding isolatin1encoding def + currentdict end +definefont pop +/AvantGarde-Gothic-latin1 + /AvantGarde-Gothic findfont + dup length dict begin + {1 index /FID ne {def} {pop pop} ifelse} forall + /Encoding isolatin1encoding def + currentdict end +definefont pop +/AvantGarde-BookOblique-latin1 + /AvantGarde-BookOblique findfont + dup length dict begin + {1 index /FID ne {def} {pop pop} ifelse} forall + /Encoding isolatin1encoding def + currentdict end +definefont pop +/AvantGarde-Demi-latin1 + /AvantGarde-Demi findfont + dup length dict begin + {1 index /FID ne {def} {pop pop} ifelse} forall + /Encoding isolatin1encoding def + currentdict end +definefont pop +/AvantGarde-DemiOblique-latin1 + /AvantGarde-DemiOblique findfont + dup length dict begin + {1 index /FID ne {def} {pop pop} ifelse} forall + /Encoding isolatin1encoding def + currentdict end +definefont pop +/Bookman-Light-latin1 + /Bookman-Light findfont + dup length dict begin + {1 index /FID ne {def} {pop pop} ifelse} forall + /Encoding isolatin1encoding def + currentdict end +definefont pop +/Bookman-LightItalic-latin1 + /Bookman-LightItalic findfont + dup length dict begin + {1 index /FID ne {def} {pop pop} ifelse} forall + /Encoding isolatin1encoding def + currentdict end +definefont pop +/Bookman-Demi-latin1 + /Bookman-Demi findfont + dup length dict begin + {1 index /FID ne {def} {pop pop} ifelse} forall + /Encoding isolatin1encoding def + currentdict end +definefont pop +/Bookman-DemiItalic-latin1 + /Bookman-DemiItalic findfont + dup length dict begin + {1 index /FID ne {def} {pop pop} ifelse} forall + /Encoding isolatin1encoding def + currentdict end +definefont pop +/Courier-latin1 + /Courier findfont + dup length dict begin + {1 index /FID ne {def} {pop pop} ifelse} forall + /Encoding isolatin1encoding def + currentdict end +definefont pop +/Courier-Oblique-latin1 + /Courier-Oblique findfont + dup length dict begin + {1 index /FID ne {def} {pop pop} ifelse} forall + /Encoding isolatin1encoding def + currentdict end +definefont pop +/Courier-Bold-latin1 + /Courier-Bold findfont + dup length dict begin + {1 index /FID ne {def} {pop pop} ifelse} forall + /Encoding isolatin1encoding def + currentdict end +definefont pop +/Courier-BoldOblique-latin1 + /Courier-BoldOblique findfont + dup length dict begin + {1 index /FID ne {def} {pop pop} ifelse} forall + /Encoding isolatin1encoding def + currentdict end +definefont pop +/Helvetica-latin1 + /Helvetica findfont + dup length dict begin + {1 index /FID ne {def} {pop pop} ifelse} forall + /Encoding isolatin1encoding def + currentdict end +definefont pop +/Helvetica-Oblique-latin1 + /Helvetica-Oblique findfont + dup length dict begin + {1 index /FID ne {def} {pop pop} ifelse} forall + /Encoding isolatin1encoding def + currentdict end +definefont pop +/Helvetica-Bold-latin1 + /Helvetica-Bold findfont + dup length dict begin + {1 index /FID ne {def} {pop pop} ifelse} forall + /Encoding isolatin1encoding def + currentdict end +definefont pop +/Helvetica-BoldOblique-latin1 + /Helvetica-BoldOblique findfont + dup length dict begin + {1 index /FID ne {def} {pop pop} ifelse} forall + /Encoding isolatin1encoding def + currentdict end +definefont pop +/Helvetica-Narrow-latin1 + /Helvetica-Narrow findfont + dup length dict begin + {1 index /FID ne {def} {pop pop} ifelse} forall + /Encoding isolatin1encoding def + currentdict end +definefont pop +/Helvetica-Narrow-Oblique-latin1 + /Helvetica-Narrow-Oblique findfont + dup length dict begin + {1 index /FID ne {def} {pop pop} ifelse} forall + /Encoding isolatin1encoding def + currentdict end +definefont pop +/Helvetica-Narrow-Bold-latin1 + /Helvetica-Narrow-Bold findfont + dup length dict begin + {1 index /FID ne {def} {pop pop} ifelse} forall + /Encoding isolatin1encoding def + currentdict end +definefont pop +/Helvetica-Narrow-BoldOblique-latin1 + /Helvetica-Narrow-BoldOblique findfont + dup length dict begin + {1 index /FID ne {def} {pop pop} ifelse} forall + /Encoding isolatin1encoding def + currentdict end +definefont pop +/NewCenturySchlbk-Roman-latin1 + /NewCenturySchlbk-Roman findfont + dup length dict begin + {1 index /FID ne {def} {pop pop} ifelse} forall + /Encoding isolatin1encoding def + currentdict end +definefont pop +/NewCenturySchlbk-Italic-latin1 + /NewCenturySchlbk-Italic findfont + dup length dict begin + {1 index /FID ne {def} {pop pop} ifelse} forall + /Encoding isolatin1encoding def + currentdict end +definefont pop +/NewCenturySchlbk-Bold-latin1 + /NewCenturySchlbk-Bold findfont + dup length dict begin + {1 index /FID ne {def} {pop pop} ifelse} forall + /Encoding isolatin1encoding def + currentdict end +definefont pop +/NewCenturySchlbk-BoldItalic-latin1 + /NewCenturySchlbk-BoldItalic findfont + dup length dict begin + {1 index /FID ne {def} {pop pop} ifelse} forall + /Encoding isolatin1encoding def + currentdict end +definefont pop +/Palatino-Roman-latin1 + /Palatino-Roman findfont + dup length dict begin + {1 index /FID ne {def} {pop pop} ifelse} forall + /Encoding isolatin1encoding def + currentdict end +definefont pop +/Palatino-Italic-latin1 + /Palatino-Italic findfont + dup length dict begin + {1 index /FID ne {def} {pop pop} ifelse} forall + /Encoding isolatin1encoding def + currentdict end +definefont pop +/Palatino-Bold-latin1 + /Palatino-Bold findfont + dup length dict begin + {1 index /FID ne {def} {pop pop} ifelse} forall + /Encoding isolatin1encoding def + currentdict end +definefont pop +/Palatino-BoldItalic-latin1 + /Palatino-BoldItalic findfont + dup length dict begin + {1 index /FID ne {def} {pop pop} ifelse} forall + /Encoding isolatin1encoding def + currentdict end +definefont pop +/Symbol-latin1 + /Symbol findfont +definefont pop +/ZapfChancery-MediumItalic-latin1 + /ZapfChancery-MediumItalic findfont + dup length dict begin + {1 index /FID ne {def} {pop pop} ifelse} forall + /Encoding isolatin1encoding def + currentdict end +definefont pop +/ZapfDingbats-latin1 + /ZapfDingbats findfont + dup length dict begin + {1 index /FID ne {def} {pop pop} ifelse} forall + /Encoding isolatin1encoding def + currentdict end +definefont pop +8.503800 -8.503800 scale +-5.849889 -50.250097 translate +%%EndProlog + + +1.000000 1.000000 1.000000 srgb +n 13.329200 3.000000 m 13.329200 5.000000 l 21.334200 5.000000 l 21.334200 3.000000 l f +0.200000 slw +[] 0 sd +[] 0 sd +0 slj +0.000000 0.000000 0.000000 srgb +n 13.329200 3.000000 m 13.329200 5.000000 l 21.334200 5.000000 l 21.334200 3.000000 l cp s +/Helvetica-latin1 ff 0.560000 scf sf +(Set retry counter = 0) dup sw 2 div 17.331700 ex sub 4.035000 m + gs 1 -1 sc sh gr +0.200000 slw +[] 0 sd +[] 0 sd +0 slc +n 21.934187 4.003895 m 23.629200 4.014900 l s +0 slj +n 21.935810 3.753901 m 21.434198 4.000649 l 21.932564 4.253890 l ef +0.200000 slw +[] 0 sd +0 slj +n 21.935810 3.753901 m 21.434198 4.000649 l 21.932564 4.253890 l cp s +1.000000 1.000000 1.000000 srgb +n 11.629200 6.250000 m 11.629200 9.850000 l 23.191700 9.850000 l 23.191700 6.250000 l f +0.200000 slw +[] 0 sd +[] 0 sd +0 slj +0.000000 0.000000 0.000000 srgb +n 11.629200 6.250000 m 11.629200 9.850000 l 23.191700 9.850000 l 23.191700 6.250000 l cp s +/Helvetica-latin1 ff 0.560000 scf sf +(\(A\)) dup sw 2 div 17.410450 ex sub 7.285000 m + gs 1 -1 sc sh gr +(Create P_newprop @ epoch E+1) dup sw 2 div 17.410450 ex sub 8.085000 m + gs 1 -1 sc sh gr +(based on P_current @ epoch E) dup sw 2 div 17.410450 ex sub 8.885000 m + gs 1 -1 sc sh gr +1.000000 1.000000 1.000000 srgb +n 17.431070 15.800000 m 26.882980 20.525955 l 17.431070 25.251910 l 7.979160 20.525955 l ef +0.200000 slw +[] 0 sd +[] 0 sd +0 slj +0.000000 0.000000 0.000000 srgb +n 17.431070 15.800000 m 26.882980 20.525955 l 17.431070 25.251910 l 7.979160 20.525955 l cp s +/Helvetica-latin1 ff 0.560000 scf sf +(Epoch\(P_latest\) > Epoch\(P_current\)) dup sw 2 div 17.431070 ex sub 19.760955 m + gs 1 -1 sc sh gr +(orelse) dup sw 2 div 17.431070 ex sub 20.560955 m + gs 1 -1 sc sh gr +(P_latest was not unanimous) dup sw 2 div 17.431070 ex sub 21.360955 m + gs 1 -1 sc sh gr +0.200000 slw +[] 0 sd +[] 0 sd +0 slc +n 17.372751 5.651189 m 17.331700 5.000000 l s +0 slj +n 17.123246 5.666917 m 17.404208 6.150198 l 17.622256 5.635460 l ef +0.200000 slw +[] 0 sd +0 slj +n 17.123246 5.666917 m 17.404208 6.150198 l 17.622256 5.635460 l cp s +0.200000 slw +[] 0 sd +[] 0 sd +0 slc +n 17.382821 10.450636 m 17.410500 9.850000 l s +0 slj +n 17.133086 10.439127 m 17.359803 10.950106 l 17.632556 10.462145 l ef +0.200000 slw +[] 0 sd +0 slj +n 17.133086 10.439127 m 17.359803 10.950106 l 17.632556 10.462145 l cp s +0.200000 slw +[] 0 sd +[] 0 sd +0 slc +n 17.468608 15.201174 m 17.500000 14.700000 l s +0 slj +n 17.219097 15.185545 m 17.437351 15.700196 l 17.718119 15.216802 l ef +0.200000 slw +[] 0 sd +0 slj +n 17.219097 15.185545 m 17.437351 15.700196 l 17.718119 15.216802 l cp s +0.200000 slw +[] 0 sd +[] 0 sd +0 slc +n 17.418846 26.154455 m 17.431100 25.251900 l s +0 slj +n 17.168869 26.151061 m 17.412058 26.654409 l 17.668823 26.157849 l ef +0.200000 slw +[] 0 sd +0 slj +n 17.168869 26.151061 m 17.412058 26.654409 l 17.668823 26.157849 l cp s +0.200000 slw +[] 0 sd +[] 0 sd +0 slc +n 17.410700 37.824400 m 17.410700 37.006300 l s +0 slj +n 17.160700 37.824400 m 17.410700 38.324400 l 17.660700 37.824400 l ef +0.200000 slw +[] 0 sd +0 slj +n 17.160700 37.824400 m 17.410700 38.324400 l 17.660700 37.824400 l cp s +/Helvetica-Bold-latin1 ff 0.592667 scf sf +1.000000 1.000000 1.000000 srgb +n 38.169910 3.000000 m 44.346820 6.088455 l 38.169910 9.176910 l 31.993000 6.088455 l ef +0.200000 slw +[] 0 sd +[] 0 sd +0 slj +0.000000 0.000000 0.000000 srgb +n 38.169910 3.000000 m 44.346820 6.088455 l 38.169910 9.176910 l 31.993000 6.088455 l cp s +/Helvetica-latin1 ff 0.560000 scf sf +(P_latest was unanimous?) dup sw 2 div 38.169910 ex sub 6.123455 m + gs 1 -1 sc sh gr +1.000000 1.000000 1.000000 srgb +n 38.169910 11.050000 m 43.901820 13.915955 l 38.169910 16.781910 l 32.438000 13.915955 l ef +0.200000 slw +[] 0 sd +[] 0 sd +0 slj +0.000000 0.000000 0.000000 srgb +n 38.169910 11.050000 m 43.901820 13.915955 l 38.169910 16.781910 l 32.438000 13.915955 l cp s +/Helvetica-latin1 ff 0.560000 scf sf +(Retry counter too big?) dup sw 2 div 38.169910 ex sub 13.950955 m + gs 1 -1 sc sh gr +1.000000 1.000000 1.000000 srgb +n 38.169860 18.800000 m 46.160520 22.795330 l 38.169860 26.790660 l 30.179200 22.795330 l ef +0.200000 slw +[] 0 sd +[] 0 sd +0 slj +0.000000 0.000000 0.000000 srgb +n 38.169860 18.800000 m 46.160520 22.795330 l 38.169860 26.790660 l 30.179200 22.795330 l cp s +/Helvetica-latin1 ff 0.560000 scf sf +(Rank\(P_latest\) >= Rank\(P_newprop\)) dup sw 2 div 38.169860 ex sub 22.830330 m + gs 1 -1 sc sh gr +1.000000 1.000000 1.000000 srgb +n 50.057900 40.900000 m 50.057900 43.700000 l 65.100400 43.700000 l 65.100400 40.900000 l f +0.200000 slw +[] 0 sd +[] 0 sd +0 slj +0.000000 0.000000 0.000000 srgb +n 50.057900 40.900000 m 50.057900 43.700000 l 65.100400 43.700000 l 65.100400 40.900000 l cp s +/Helvetica-latin1 ff 0.560000 scf sf +(P_newprop is better than P_latest.) dup sw 2 div 57.579150 ex sub 41.935000 m + gs 1 -1 sc sh gr +(Set P_newprop.epoch = P_latest.epoch+1) dup sw 2 div 57.579150 ex sub 42.735000 m + gs 1 -1 sc sh gr +1.000000 1.000000 1.000000 srgb +n 46.779200 16.050000 m 46.779200 20.450000 l 50.844200 20.450000 l 50.844200 16.050000 l f +0.200000 slw +[] 0 sd +[] 0 sd +0 slj +0.000000 0.000000 0.000000 srgb +n 46.779200 16.050000 m 46.779200 20.450000 l 50.844200 20.450000 l 50.844200 16.050000 l cp s +/Helvetica-latin1 ff 0.560000 scf sf +(P_latest) dup sw 2 div 48.811700 ex sub 17.085000 m + gs 1 -1 sc sh gr +(author is) dup sw 2 div 48.811700 ex sub 17.885000 m + gs 1 -1 sc sh gr +(too slow,) dup sw 2 div 48.811700 ex sub 18.685000 m + gs 1 -1 sc sh gr +(let's try!) dup sw 2 div 48.811700 ex sub 19.485000 m + gs 1 -1 sc sh gr +1.000000 1.000000 1.000000 srgb +n 54.900000 30.100000 m 54.900000 32.100000 l 60.107500 32.100000 l 60.107500 30.100000 l f +0.200000 slw +[] 0 sd +[] 0 sd +0 slj +0.000000 0.000000 0.000000 srgb +n 54.900000 30.100000 m 54.900000 32.100000 l 60.107500 32.100000 l 60.107500 30.100000 l cp s +/Helvetica-latin1 ff 0.560000 scf sf +(Sleep a little) dup sw 2 div 57.503750 ex sub 31.135000 m + gs 1 -1 sc sh gr +1.000000 1.000000 1.000000 srgb +n 55.550000 33.750000 m 55.550000 35.750000 l 59.420000 35.750000 l 59.420000 33.750000 l f +0.200000 slw +[] 0 sd +[] 0 sd +0 slj +0.000000 0.000000 0.000000 srgb +n 55.550000 33.750000 m 55.550000 35.750000 l 59.420000 35.750000 l 59.420000 33.750000 l cp s +/Helvetica-latin1 ff 0.560000 scf sf +(Goto \(A\)) dup sw 2 div 57.485000 ex sub 34.785000 m + gs 1 -1 sc sh gr +1.000000 1.000000 1.000000 srgb +n 53.400000 15.400000 m 53.400000 18.200000 l 60.680000 18.200000 l 60.680000 15.400000 l f +0.200000 slw +[] 0 sd +[] 0 sd +0 slj +0.000000 0.000000 0.000000 srgb +n 53.400000 15.400000 m 53.400000 18.200000 l 60.680000 18.200000 l 60.680000 15.400000 l cp s +/Helvetica-latin1 ff 0.560000 scf sf +(Use P_latest as the) dup sw 2 div 57.040000 ex sub 16.435000 m + gs 1 -1 sc sh gr +(new P_current) dup sw 2 div 57.040000 ex sub 17.235000 m + gs 1 -1 sc sh gr +1.000000 1.000000 1.000000 srgb +n 25.658996 4.014898 2.029796 1.014898 0 360 ellipse f +0.200000 slw +[] 0 sd +[] 0 sd +0 slj +0.000000 0.000000 0.000000 srgb +n 25.658996 4.014898 2.029796 1.014898 0 360 ellipse cp s +/Helvetica-latin1 ff 0.560000 scf sf +(Start) dup sw 2 div 25.658996 ex sub 4.049898 m + gs 1 -1 sc sh gr +0.200000 slw +[] 0 sd +[] 0 sd +0 slj +0 slc +n 32.937200 5.316340 m 28.550000 5.316340 l 28.550000 20.526000 l 26.883000 20.526000 l s +0 slj +n 32.937200 5.566340 m 33.437200 5.316340 l 32.937200 5.066340 l ef +0.200000 slw +[] 0 sd +0 slj +n 32.937200 5.566340 m 33.437200 5.316340 l 32.937200 5.066340 l cp s +0.200000 slw +[] 0 sd +[] 0 sd +0 slc +n 38.169910 10.350000 m 38.169910 9.276910 l s +0 slj +n 37.919910 10.350000 m 38.169910 10.850000 l 38.419910 10.350000 l ef +0.200000 slw +[] 0 sd +0 slj +n 37.919910 10.350000 m 38.169910 10.850000 l 38.419910 10.350000 l cp s +0.200000 slw +[] 0 sd +[] 0 sd +0 slc +n 38.169887 18.100012 m 38.169893 16.881904 l s +0 slj +n 37.919887 18.100011 m 38.169884 18.600012 l 38.419887 18.100013 l ef +0.200000 slw +[] 0 sd +0 slj +n 37.919887 18.100011 m 38.169884 18.600012 l 38.419887 18.100013 l cp s +0.200000 slw +[] 0 sd +[] 0 sd +0 slc +n 38.169889 27.901924 m 38.169883 26.890644 l s +0 slj +n 37.919889 27.901926 m 38.169892 28.401924 l 38.419889 27.901923 l ef +0.200000 slw +[] 0 sd +0 slj +n 37.919889 27.901926 m 38.169892 28.401924 l 38.419889 27.901923 l cp s +0.200000 slw +[] 0 sd +[] 0 sd +0 slj +0 slc +n 48.811700 15.450000 m 48.811700 14.000000 l 43.901800 14.000000 l 43.901800 13.916000 l s +0 slj +n 48.561700 15.450000 m 48.811700 15.950000 l 49.061700 15.450000 l ef +0.200000 slw +[] 0 sd +0 slj +n 48.561700 15.450000 m 48.811700 15.950000 l 49.061700 15.450000 l cp s +0.200000 slw +[] 0 sd +[] 0 sd +0 slj +0 slc +n 49.543800 6.080330 m 48.950000 6.080330 l 48.950000 6.088460 l 44.346800 6.088460 l s +0 slj +n 49.543800 6.330330 m 50.043800 6.080330 l 49.543800 5.830330 l ef +0.200000 slw +[] 0 sd +0 slj +n 49.543800 6.330330 m 50.043800 6.080330 l 49.543800 5.830330 l cp s +1.000000 1.000000 1.000000 srgb +n 57.053706 20.501853 2.003706 1.001853 0 360 ellipse f +0.200000 slw +[] 0 sd +[] 0 sd +0 slj +0.000000 0.000000 0.000000 srgb +n 57.053706 20.501853 2.003706 1.001853 0 360 ellipse cp s +/Helvetica-latin1 ff 0.560000 scf sf +(Stop) dup sw 2 div 57.053706 ex sub 20.536853 m + gs 1 -1 sc sh gr +0.200000 slw +[] 0 sd +[] 0 sd +0 slc +n 57.047377 18.900033 m 57.040000 18.200000 l s +0 slj +n 56.797391 18.902668 m 57.052646 19.400006 l 57.297363 18.897399 l ef +0.200000 slw +[] 0 sd +0 slj +n 56.797391 18.902668 m 57.052646 19.400006 l 57.297363 18.897399 l cp s +0.200000 slw +[] 0 sd +[] 0 sd +0 slj +0 slc +n 58.011319 24.850107 m 58.050000 22.800000 l 46.160500 22.795300 l s +0 slj +n 57.761363 24.845391 m 58.001886 25.350018 l 58.261274 24.854823 l ef +0.200000 slw +[] 0 sd +0 slj +n 57.761363 24.845391 m 58.001886 25.350018 l 58.261274 24.854823 l cp s +0.200000 slw +[] 0 sd +[] 0 sd +0 slj +0 slc +n 56.050000 24.850000 m 56.050000 23.900000 l 49.850000 23.850000 l 49.900000 31.650000 l 44.326800 31.680400 l s +0 slj +n 55.800000 24.850000 m 56.050000 25.350000 l 56.300000 24.850000 l ef +0.200000 slw +[] 0 sd +0 slj +n 55.800000 24.850000 m 56.050000 25.350000 l 56.300000 24.850000 l cp s +0.200000 slw +[] 0 sd +[] 0 sd +0 slc +n 57.483389 29.500347 m 57.451043 28.550055 l s +0 slj +n 57.233534 29.508852 m 57.500398 30.000058 l 57.733244 29.491843 l ef +0.200000 slw +[] 0 sd +0 slj +n 57.233534 29.508852 m 57.500398 30.000058 l 57.733244 29.491843 l cp s +0.200000 slw +[] 0 sd +[] 0 sd +0 slc +n 57.491836 33.150039 m 57.503800 32.100000 l s +0 slj +n 57.241852 33.147191 m 57.486139 33.650006 l 57.741820 33.152887 l ef +0.200000 slw +[] 0 sd +0 slj +n 57.241852 33.147191 m 57.486139 33.650006 l 57.741820 33.152887 l cp s +1.000000 1.000000 1.000000 srgb +n 17.400006 48.499953 2.003706 1.001853 0 360 ellipse f +0.200000 slw +[] 0 sd +[] 0 sd +0 slj +0.000000 0.000000 0.000000 srgb +n 17.400006 48.499953 2.003706 1.001853 0 360 ellipse cp s +/Helvetica-latin1 ff 0.560000 scf sf +(Stop) dup sw 2 div 17.400006 ex sub 48.534953 m + gs 1 -1 sc sh gr +0.200000 slw +[] 0 sd +[] 0 sd +0 slc +n 17.407449 46.898146 m 17.410700 46.636300 l s +0 slj +n 17.157468 46.895043 m 17.401241 47.398108 l 17.657430 46.901250 l ef +0.200000 slw +[] 0 sd +0 slj +n 17.157468 46.895043 m 17.401241 47.398108 l 17.657430 46.901250 l cp s +0.200000 slw +[] 0 sd +[] 0 sd +0 slj +0 slc +n 12.478539 5.500679 m 12.500000 5.050000 l 6.000000 5.050000 l 5.950000 50.150000 l 57.600000 50.100000 l 57.556689 48.649097 l s +0 slj +n 12.228822 5.488788 m 12.454757 6.000113 l 12.728256 5.512570 l ef +0.200000 slw +[] 0 sd +0 slj +n 12.228822 5.488788 m 12.454757 6.000113 l 12.728256 5.512570 l cp s +/Helvetica-Bold-latin1 ff 0.592667 scf sf +(true) dup sw 2 div 27.500000 ex sub 19.980667 m + gs 1 -1 sc sh gr +/Helvetica-Bold-latin1 ff 0.592667 scf sf +(false) dup sw 2 div 18.650000 ex sub 25.830667 m + gs 1 -1 sc sh gr +/Helvetica-Bold-latin1 ff 0.592667 scf sf +(false) dup sw 2 div 18.550000 ex sub 37.630667 m + gs 1 -1 sc sh gr +/Helvetica-Bold-latin1 ff 0.592667 scf sf +(true) dup sw 2 div 28.100000 ex sub 31.380667 m + gs 1 -1 sc sh gr +/Helvetica-Bold-latin1 ff 0.592667 scf sf +(true) dup sw 2 div 26.300000 ex sub 42.030667 m + gs 1 -1 sc sh gr +/Helvetica-Bold-latin1 ff 0.592667 scf sf +(false) dup sw 2 div 18.600000 ex sub 45.430667 m + gs 1 -1 sc sh gr +/Helvetica-Bold-latin1 ff 0.592667 scf sf +(false) dup sw 2 div 39.400000 ex sub 9.730667 m + gs 1 -1 sc sh gr +/Helvetica-Bold-latin1 ff 0.592667 scf sf +(true) dup sw 2 div 45.100000 ex sub 5.480667 m + gs 1 -1 sc sh gr +/Helvetica-Bold-latin1 ff 0.592667 scf sf +(true) dup sw 2 div 44.700000 ex sub 13.380667 m + gs 1 -1 sc sh gr +/Helvetica-Bold-latin1 ff 0.592667 scf sf +(false) dup sw 2 div 39.350000 ex sub 17.530667 m + gs 1 -1 sc sh gr +/Helvetica-Bold-latin1 ff 0.592667 scf sf +(true) dup sw 2 div 46.850000 ex sub 22.230667 m + gs 1 -1 sc sh gr +/Helvetica-Bold-latin1 ff 0.592667 scf sf +(false) dup sw 2 div 39.350000 ex sub 27.480667 m + gs 1 -1 sc sh gr +/Helvetica-Bold-latin1 ff 0.592667 scf sf +(true) dup sw 2 div 57.900000 ex sub 9.880667 m + gs 1 -1 sc sh gr +/Helvetica-Bold-latin1 ff 0.592667 scf sf +(false) dup sw 2 div 64.500000 ex sub 5.580667 m + gs 1 -1 sc sh gr +/Helvetica-Bold-latin1 ff 0.592667 scf sf +(true) dup sw 2 div 39.250000 ex sub 35.580667 m + gs 1 -1 sc sh gr +0.200000 slw +[] 0 sd +[] 0 sd +0 slj +0 slc +n 55.050000 40.100000 m 55.050000 38.200000 l 48.800000 38.200000 l 48.811700 20.450000 l s +0 slj +n 54.800000 40.100000 m 55.050000 40.600000 l 55.300000 40.100000 l ef +0.200000 slw +[] 0 sd +0 slj +n 54.800000 40.100000 m 55.050000 40.600000 l 55.300000 40.100000 l cp s +/Helvetica-Bold-latin1 ff 0.592667 scf sf +(false) dup sw 2 div 45.200000 ex sub 31.180667 m + gs 1 -1 sc sh gr +0.200000 slw +[] 0 sd +[] 0 sd +0 slc +n 57.564845 44.252888 m 57.579200 43.700000 l s +0 slj +n 57.314929 44.246399 m 57.551868 44.752719 l 57.814761 44.259376 l ef +0.200000 slw +[] 0 sd +0 slj +n 57.314929 44.246399 m 57.551868 44.752719 l 57.814761 44.259376 l cp s +0.200000 slw +[] 0 sd +[] 0 sd +0 slj +0 slc +n 51.100000 40.150000 m 51.100000 39.500000 l 29.250000 39.500000 l 29.250000 42.600000 l 25.622600 42.530300 l s +0 slj +n 50.850000 40.150000 m 51.100000 40.650000 l 51.350000 40.150000 l ef +0.200000 slw +[] 0 sd +0 slj +n 50.850000 40.150000 m 51.100000 40.650000 l 51.350000 40.150000 l cp s +0.200000 slw +[] 0 sd +[] 0 sd +0 slc +n 56.807489 10.300337 m 56.810700 9.413790 l s +0 slj +n 56.557491 10.299432 m 56.805678 10.800334 l 57.057487 10.301243 l ef +0.200000 slw +[] 0 sd +0 slj +n 56.557491 10.299432 m 56.805678 10.800334 l 57.057487 10.301243 l cp s +0.200000 slw +[] 0 sd +[] 0 sd +0 slj +0 slc +n 60.050000 40.150000 m 60.050000 38.050000 l 65.950000 38.000000 l 66.000000 6.100000 l 63.477600 6.080330 l s +0 slj +n 59.800000 40.150000 m 60.050000 40.650000 l 60.300000 40.150000 l ef +0.200000 slw +[] 0 sd +0 slj +n 59.800000 40.150000 m 60.050000 40.650000 l 60.300000 40.150000 l cp s +1.000000 1.000000 1.000000 srgb +n 13.512693 11.050000 m 21.197545 11.050000 l 19.887252 14.650000 l 12.202400 14.650000 l ef +0.200000 slw +[] 0 sd +[] 0 sd +0 slj +0.000000 0.000000 0.000000 srgb +n 13.512693 11.050000 m 21.197545 11.050000 l 19.887252 14.650000 l 12.202400 14.650000 l cp s +/Helvetica-latin1 ff 0.560000 scf sf +(Get latest public) dup sw 2 div 16.699973 ex sub 12.485000 m + gs 1 -1 sc sh gr +(projection P_latest) dup sw 2 div 16.699973 ex sub 13.285000 m + gs 1 -1 sc sh gr +0.200000 slw +[] 0 sd +[] 0 sd +0 slj +0 slc +n 31.393000 6.088460 m 29.200000 6.088460 l 29.200000 31.880400 l 27.662600 31.880400 l s +0 slj +n 31.393000 6.338460 m 31.893000 6.088460 l 31.393000 5.838460 l ef +0.200000 slw +[] 0 sd +0 slj +n 31.393000 6.338460 m 31.893000 6.088460 l 31.393000 5.838460 l cp s +1.000000 1.000000 1.000000 srgb +n 17.410660 26.754400 m 27.662570 31.880355 l 17.410660 37.006310 l 7.158750 31.880355 l ef +0.200000 slw +[] 0 sd +[] 0 sd +0 slj +0.000000 0.000000 0.000000 srgb +n 17.410660 26.754400 m 27.662570 31.880355 l 17.410660 37.006310 l 7.158750 31.880355 l cp s +/Helvetica-latin1 ff 0.560000 scf sf +(Epoch\(P_latest\) < Epoch\(P_current\)) dup sw 2 div 17.410660 ex sub 30.715355 m + gs 1 -1 sc sh gr +(orelse) dup sw 2 div 17.410660 ex sub 31.515355 m + gs 1 -1 sc sh gr +(P_latest /= P_current) dup sw 2 div 17.410660 ex sub 32.315355 m + gs 1 -1 sc sh gr +(\(unexpected/rare case\)) dup sw 2 div 17.410660 ex sub 33.115355 m + gs 1 -1 sc sh gr +1.000000 1.000000 1.000000 srgb +n 17.410660 38.424400 m 25.622570 42.530355 l 17.410660 46.636310 l 9.198750 42.530355 l ef +0.200000 slw +[] 0 sd +[] 0 sd +0 slj +0.000000 0.000000 0.000000 srgb +n 17.410660 38.424400 m 25.622570 42.530355 l 17.410660 46.636310 l 9.198750 42.530355 l cp s +/Helvetica-latin1 ff 0.560000 scf sf +(Rank\(P_newprop\) > Rank\(P_latest\)) dup sw 2 div 17.410660 ex sub 42.565355 m + gs 1 -1 sc sh gr +1.000000 1.000000 1.000000 srgb +n 38.169910 28.601900 m 44.326820 31.680355 l 38.169910 34.758810 l 32.013000 31.680355 l ef +0.200000 slw +[] 0 sd +[] 0 sd +0 slj +0.000000 0.000000 0.000000 srgb +n 38.169910 28.601900 m 44.326820 31.680355 l 38.169910 34.758810 l 32.013000 31.680355 l cp s +/Helvetica-latin1 ff 0.560000 scf sf +(Author\(P_latest\) == me?) dup sw 2 div 38.169910 ex sub 31.715355 m + gs 1 -1 sc sh gr +1.000000 1.000000 1.000000 srgb +n 54.430893 44.950000 m 61.879421 44.950000 l 60.569129 48.550000 l 53.120600 48.550000 l ef +0.200000 slw +[] 0 sd +[] 0 sd +0 slj +0.000000 0.000000 0.000000 srgb +n 54.430893 44.950000 m 61.879421 44.950000 l 60.569129 48.550000 l 53.120600 48.550000 l cp s +/Helvetica-latin1 ff 0.560000 scf sf +(Write P_newprop) dup sw 2 div 57.500011 ex sub 46.385000 m + gs 1 -1 sc sh gr +(to everyone) dup sw 2 div 57.500011 ex sub 47.185000 m + gs 1 -1 sc sh gr +1.000000 1.000000 1.000000 srgb +n 52.174617 25.650000 m 63.644469 25.650000 l 62.625352 28.450000 l 51.155500 28.450000 l ef +0.200000 slw +[] 0 sd +[] 0 sd +0 slj +0.000000 0.000000 0.000000 srgb +n 52.174617 25.650000 m 63.644469 25.650000 l 62.625352 28.450000 l 51.155500 28.450000 l cp s +/Helvetica-latin1 ff 0.560000 scf sf +(Tell Author\(P_latest\) to rewrite) dup sw 2 div 57.399985 ex sub 26.685000 m + gs 1 -1 sc sh gr +(with a bigger epoch number) dup sw 2 div 57.399985 ex sub 27.485000 m + gs 1 -1 sc sh gr +1.000000 1.000000 1.000000 srgb +n 56.810710 2.746870 m 63.477620 6.080325 l 56.810710 9.413780 l 50.143800 6.080325 l ef +0.200000 slw +[] 0 sd +[] 0 sd +0 slj +0.000000 0.000000 0.000000 srgb +n 56.810710 2.746870 m 63.477620 6.080325 l 56.810710 9.413780 l 50.143800 6.080325 l cp s +/Helvetica-latin1 ff 0.560000 scf sf +(Is P_current -> P_latest) dup sw 2 div 56.810710 ex sub 5.715325 m + gs 1 -1 sc sh gr +(transition safe?) dup sw 2 div 56.810710 ex sub 6.515325 m + gs 1 -1 sc sh gr +0.200000 slw +[] 0 sd +[] 0 sd +0 slj +0 slc +n 53.000000 40.150000 m 53.000000 38.850000 l 38.169900 38.850000 l 38.169900 34.758800 l s +0 slj +n 52.750000 40.150000 m 53.000000 40.650000 l 53.250000 40.150000 l ef +0.200000 slw +[] 0 sd +0 slj +n 52.750000 40.150000 m 53.000000 40.650000 l 53.250000 40.150000 l cp s +1.000000 1.000000 1.000000 srgb +n 52.622017 11.000000 m 61.996869 11.000000 l 60.977752 13.800000 l 51.602900 13.800000 l ef +0.200000 slw +[] 0 sd +[] 0 sd +0 slj +0.000000 0.000000 0.000000 srgb +n 52.622017 11.000000 m 61.996869 11.000000 l 60.977752 13.800000 l 51.602900 13.800000 l cp s +/Helvetica-latin1 ff 0.560000 scf sf +(Save P_latest to my) dup sw 2 div 56.799885 ex sub 12.035000 m + gs 1 -1 sc sh gr +(private projection store) dup sw 2 div 56.799885 ex sub 12.835000 m + gs 1 -1 sc sh gr +0.200000 slw +[] 0 sd +[] 0 sd +0 slc +n 56.925440 14.700745 m 56.881750 13.900146 l s +0 slj +n 56.675812 14.714368 m 56.952685 15.200002 l 57.175069 14.687122 l ef +0.200000 slw +[] 0 sd +0 slj +n 56.675812 14.714368 m 56.952685 15.200002 l 57.175069 14.687122 l cp s +/Helvetica-Bold-latin1 ff 0.592667 scf sf +(Column A: Any reason to change?) dup sw 2 div 17.000000 ex sub 1.830667 m + gs 1 -1 sc sh gr +/Helvetica-Bold-latin1 ff 0.592667 scf sf +(Column B: Do I act?) dup sw 2 div 37.950000 ex sub 1.830667 m + gs 1 -1 sc sh gr +/Helvetica-Bold-latin1 ff 0.592667 scf sf +(Column C: How to act) dup sw 2 div 56.900000 ex sub 1.830667 m + gs 1 -1 sc sh gr +/Helvetica-Bold-latin1 ff 0.592667 scf sf +0.117647 0.564706 1.000000 srgb +(A10) dup sw 2 div 12.300000 ex sub 3.880667 m + gs 1 -1 sc sh gr +/Helvetica-Bold-latin1 ff 0.592667 scf sf +/Helvetica-Bold-latin1 ff 0.592667 scf sf +(A20) dup sw 2 div 10.600000 ex sub 8.080667 m + gs 1 -1 sc sh gr +/Helvetica-Bold-latin1 ff 0.592667 scf sf +(A30) dup sw 2 div 11.900000 ex sub 12.730667 m + gs 1 -1 sc sh gr +/Helvetica-Bold-latin1 ff 0.592667 scf sf +(A40) dup sw 2 div 11.850000 ex sub 17.630667 m + gs 1 -1 sc sh gr +/Helvetica-Bold-latin1 ff 0.592667 scf sf +(B10) dup sw 2 div 34.350000 ex sub 4.030667 m + gs 1 -1 sc sh gr +/Helvetica-Bold-latin1 ff 0.592667 scf sf +(C100) dup sw 2 div 52.050000 ex sub 4.080667 m + gs 1 -1 sc sh gr +/Helvetica-Bold-latin1 ff 0.592667 scf sf +(C110) dup sw 2 div 50.950000 ex sub 12.330667 m + gs 1 -1 sc sh gr +/Helvetica-Bold-latin1 ff 0.592667 scf sf +(C120) dup sw 2 div 52.200000 ex sub 16.680667 m + gs 1 -1 sc sh gr +/Helvetica-Bold-latin1 ff 0.592667 scf sf +(C200) dup sw 2 div 51.000000 ex sub 25.780667 m + gs 1 -1 sc sh gr +/Helvetica-Bold-latin1 ff 0.592667 scf sf +(C210) dup sw 2 div 53.750000 ex sub 31.130667 m + gs 1 -1 sc sh gr +/Helvetica-Bold-latin1 ff 0.592667 scf sf +(C220) dup sw 2 div 54.400000 ex sub 34.730667 m + gs 1 -1 sc sh gr +/Helvetica-Bold-latin1 ff 0.592667 scf sf +(C300) dup sw 2 div 48.850000 ex sub 42.330667 m + gs 1 -1 sc sh gr +/Helvetica-Bold-latin1 ff 0.592667 scf sf +(C310) dup sw 2 div 52.600000 ex sub 46.730667 m + gs 1 -1 sc sh gr +showpage diff --git a/prototype/poc-machi/src/machi_chain_manager1.erl b/prototype/poc-machi/src/machi_chain_manager1.erl index c6c1b9c..4ab16b3 100644 --- a/prototype/poc-machi/src/machi_chain_manager1.erl +++ b/prototype/poc-machi/src/machi_chain_manager1.erl @@ -37,80 +37,6 @@ -ifdef(TEST). -%% NOTE NOTE NOTE NOTE NOTE NOTE -%% The sketch below is old ... the flowchart is newer. -%% TODO todo delete these comments when the flowchart -%% and its implementation have been debugged -%% NOTE NOTE NOTE NOTE NOTE NOTE - -%% Sketch for chain management simulator: the 'monitor' -%% -%% Principles: -%% * Monitor based on only one dimension of the FLU's inherent state: -%% up or down -%% * Plus one additional aspect that is experienced by the external -%% repair coordinator: not_started, in_progress, finished_ok, or -%% finished_failed -%% * For simulation purposes, start first with the repair coordinator -%% happening completely by magic, e.g., an oracle implemented by the -%% test harness. -%% - Then add more complexity, slowly, and only when necessary. -%% * Assumption for ease-of-implementation: assume that the repair -%% coordinator will be the head of the chain (or some process that -%% is managed by the head). -%% - So the simulator need only worry about the head making any -%% decisions about changes in repair state. -%% -%% Implementation: -%% -%% A. Calculate a local projection, P_{newprop} @ epoch E+1 that is -%% based on the current projection P_{current} @ epoch E. -%% - NOTE: This has side-effects in the current simulator: -%% e.g., newenv changing perception of up/down state -%% and other network partition effects. -%% -%% B. Get the latest public projection, P_{latest}. Then consider: -%% -%% B1a). If Epoch(P_{latest}) == Epoch(P_{current}), then goto step C. -%% -%% B1b). If Epoch(P_{latest}) < Epoch(P_{current}), then we have a -%% serious invariant violation/logic problem. Shouldn't happen, -%% but keep an eye out for it anyway. -%% -%% B1c). If Epoch(P_{latest}) > Epoch(P_{current}), then some other -%% manager has noticed a change. -%% -%% If we haven't stopped yet, then continue: -%% -%% B2a). If P_{latest} was read unanimously, then use it as the new -%% P_{current}. Then stop. -%% -%% B2b). If P_{latest} is not unanimous, then compare rank. -%% -%% - If Rank(P_{latest}) >= Rank(P_{newprop}), then we encourage -%% the author to re-write this projection with a bigger epoch -%% number. -%% - If the counter has exceeded some # of tries, F=2?, then -%% goto Step D instead. -%% - Set a counter of the # of times that we've encouraged -%% the author to re-write. -%% - Sleep a while, then goto A. -%% -%% - If Rank(P_{latest}) < Rank(P_{newprop}) and also -%% P_{latest}.upi == P_{newprop}.upi and also -%% P_{latest}.repairing == P_{newprop}.repairing, then our -%% proposal P_{newprop} isn't anything substantially new. -%% - Use the same encouragement & retry loop as described above. -%% -%% - If Rank(P_{latest}) < Rank(P_{newprop}) (last case)... -%% ... our proposal is better. Goto step D. -%% -%% C. If P_{latest}.upi == P_{newprop}.upi and also -%% P_{latest}.repairing == P_{newprop}.repairing, then our proposal -%% P_{newprop} isn't anything substantially new. Stop. -%% -%% D. Write P_{newprop} to everyone. Then goto A. - -export([test_calc_projection/2, test_calc_proposed_projection/1, test_write_proposed_projection/1,