zookeeper-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From ph...@apache.org
Subject [20/57] [abbrv] [partial] zookeeper git commit: Add the historical documentation.
Date Fri, 01 Dec 2017 17:58:14 GMT
http://git-wip-us.apache.org/repos/asf/zookeeper/blob/01b6b5e4/doc/r3.1.2/zookeeperInternals.pdf
----------------------------------------------------------------------
diff --git a/doc/r3.1.2/zookeeperInternals.pdf b/doc/r3.1.2/zookeeperInternals.pdf
new file mode 100644
index 0000000..e600e9f
--- /dev/null
+++ b/doc/r3.1.2/zookeeperInternals.pdf
@@ -0,0 +1,656 @@
+%PDF-1.3
+%����
+4 0 obj
+<< /Type /Info
+/Producer (FOP 0.20.5) >>
+endobj
+5 0 obj
+<< /Length 722 /Filter [ /ASCII85Decode /FlateDecode ]
+ >>
+stream
+Gaua=>Aoub'Z],,'Ri`Oc1;[kA$W8f[SC"+Sp#Bu_4aDM1IEqZgWqcPCo/e+;DlN_39FK@fuJTTaeC`G'G(H\aL2\dIsH]4).A'>%tg,fM]%+':-mH]YDY&+I?\b"ob+na8ST;"hRC2JXf/iXp^XS?0'?t?3Qf6L$=ipskM^[Z:&nmUEb?@9N!K)N4OhfFjS$tfD>emc9`;EoeN(EYS.?iR'+t^&j$Q-Q\s)%,?2Ve"0PXVSo=e,i'"GMlVTY(!'N0:s?pUZp&V^"u6)LnSpN<[..ee"td7P+`kk]Se^qN?#TX-(hgR9[)E-4X*(Y>0RaN"<?H_H/X/_Ri.1[nNte,4VO)AI&IN@VQAg<)<GpVO7IC1,?GoC:iX-6E3Hg(3se^o\<iYg!EU[;#VmQt6@ZE-;:qe)2d2gk4'in1_Y/#%I0qG+C%^[[`,BT"+SQ2aq&Y#\;E>@DMiUBnS[q05m5LpNSgFCrj9%5sEO5#/!s\:?\^)q9AbS`.XZrrA(ZIU+>M/l=+hHplYHU.VEJW^Oai]4U6mUEiEci]fa\TaS@7B8fhNFG+k_fm&NJ(<@e+4ifD(F7/\`rI^l/>48WEM^r3U[HVFVL#?l^rF;Jf\Oc>mo#JlX,5_!7L+,Eq@JQ[&cS9fR,e5c=sq]jiS_QgQU6E.H"8*Q$+:?8*sYI=C*TnAJC[;QHI=b&e??$jK>mK-U9;BKEM4o-ftr[L>~>
+endstream
+endobj
+6 0 obj
+<< /Type /Page
+/Parent 1 0 R
+/MediaBox [ 0 0 612 792 ]
+/Resources 3 0 R
+/Contents 5 0 R
+/Annots 7 0 R
+>>
+endobj
+7 0 obj
+[
+8 0 R
+10 0 R
+12 0 R
+14 0 R
+16 0 R
+18 0 R
+20 0 R
+22 0 R
+24 0 R
+]
+endobj
+8 0 obj
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 102.0 529.541 169.328 517.541 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A 9 0 R
+/H /I
+>>
+endobj
+10 0 obj
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 102.0 511.341 196.988 499.341 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A 11 0 R
+/H /I
+>>
+endobj
+12 0 obj
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 108.0 493.141 312.464 481.141 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A 13 0 R
+/H /I
+>>
+endobj
+14 0 obj
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 108.0 474.941 210.476 462.941 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A 15 0 R
+/H /I
+>>
+endobj
+16 0 obj
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 108.0 456.741 210.488 444.741 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A 17 0 R
+/H /I
+>>
+endobj
+18 0 obj
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 108.0 438.541 170.168 426.541 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A 19 0 R
+/H /I
+>>
+endobj
+20 0 obj
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 108.0 420.341 186.836 408.341 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A 21 0 R
+/H /I
+>>
+endobj
+22 0 obj
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 102.0 402.141 150.668 390.141 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A 23 0 R
+/H /I
+>>
+endobj
+24 0 obj
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 108.0 383.941 228.476 371.941 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A 25 0 R
+/H /I
+>>
+endobj
+26 0 obj
+<< /Length 2020 /Filter [ /ASCII85Decode /FlateDecode ]
+ >>
+stream
+Gau0DgQ(#H&:O:SkcmF[N'uM!QDE=ZD1SL>JH0Q`^m-@<=@mU*C(:2k8(MN*93ro0&R]$&i`sdQ*7"&uG4Xu_G.`@8c8ORic@4e60)Y=2e:kRan;6<ucF.ioq8jj7S3%WIq`hctN0:e61I>+qS:@*sn!i4CRr<8WOmm8;T(W8L7$/-fcJ6CCEYN^=2LfT#1l=Z@UTJ!0.J64C[lUu'Tgu4HRFNUebd`kYatQ\dDa]j`<O12[IM;`>#EHR%\/L\]W?+L98)e&Crr--E5<(lJKn/qLa58mU09KpYk"b-Aesbn7/)+Di+gghWN75j1,EF%t^N?A[h0\aLL%%#.>7"Xc%<4eic^[f"S;dc2i8Z(/8aMZQojD#?N_>NhG#$?GlgT!OeD;)8G-Y#,\=MlfN@[N,U`/Q6<6$ps?QY<1_eDBa,[!5nR+NHI-GE??m4tQ`%%p\4+3$JN<eD;h'"+;W,`7b6is/ureOaEFT5q]%PT26g;6?N6'C+$>*(<HQLSeESEO[XWO<u7GBj\H&l]X=#f2Q\PKd?"6j0`$g])u]g4B#giPYaY$<6B%:=37j^/R&+=5&8&/C^!1P+$gL)>nllg=gi+KT")'SB<J='QP.%<6D(<;i#);HcioLe5nN\Y_gM?aAr9TCF,_%!UQPV@&_8;0G2qR`Sr62t>c8H+*CKqTD;'d!pJ\@Icp7qkQ2!L<@t9S%'0-QHIP?9,4"C%OFrXZ^E*beW79jWA,\\TtR,ScRfAR+1R$-=>>S`#UJH6u1#?Rk2[2Vr/d&9&#M&1b,'GkV+Ek)Ka#I<MTaLOdLP63,op%mR@>\$c<3/W1\EkZ9L[7_@Yl70ObDR,JA2=c9XnL(i7CFGnJC:.*UF_+"57G(Cd@=!U9d]d26=/oO>k\%-mUP&d9Y[%beLVDduB@4`:O$M%B+MYd^M/k-&4&!MQclSC)^^T&V4Cf6#+H9F4bo#2$Kis?B-qj6JiZQe<Ft8"OTR`&MpRQ'PMQE[?_g
 PS#A[VMg[!#s=IrAL8f5ZO\X3G7e=bt(_4S4+.VD0@/\rGAUqh$=ZX;tZl&+d2,f%Sb:1)!IkIH82J(PH^=cL^ir27-L2"L:HYRh)XU%D.n]EbeA2M>7eo%qP*gUX3tUZWHqGV7GRuAq`_7:rPG<hoL)lGn-s.J94.BX7"hLl>&B.kBY1D4;PT#&SM"N;\BT\LBWtt6oKZC$M#!,k3UK5?D!>U)Gb0/3=!Ka)]54]\%u7js(MkQ!+au#>^pkr?]3SiLB\=sHUQ(D!ps)MMqq8.>KsRl/Y&BM0T>Jie58%(pP4$L1Yg&1U4l%'.*i:HE8!PUlldfU.@qDn`M>M4E1$1MpID6"aq%#%FRs7a:+R4BE\P:8q1O=BPq4:((!PTXaI+GkKpu^\B*_S_ZU]9ZXpWopBM:q-X%hUi:A4kQBC+\U;QDSfT0=rNWY!0P\;1c-L;T,50^oFlLi[.4%fdehQ!Jttj/s>\gifa`/Cm3K.VWE?$g]Xo8o#cu^^;Y/6f+<9(OX3-<`%NP8`d6qKO.%)V>a#4[MJr%/XJ=N6Kc4;kf/R?M/Y-,2OM1#4LfM<cM;G6!2amEil&=N?R->Y,&L;=RGfQFipVi=]DNN?n)*#P5R2ij.pc>;M`FqRbJM'Y_<$7sA_Jqi3=),r>*Pah(4E21O^V=,4di0N0WrK2g_bgiH+5D]$>J=#a:uU5^M,b9pVfBA1ZW62e&C2(j<Z]kO$#$&gT@5[R1U<(RBd(DX#503?.[i?+)q>+qs:(1.?e=G=.m-E$bldfD]X)?Y[1^[C[>9`dc%1A.Z<G[k<+eL\1kWh:^8=O4;kq*5uQ<Y@a?DC9j9!HmOjMk)FsGjVU&8]$>mP"mb;@u%u-!%ls>NR6GqrF..?&L]W'c7CG/fRZ'2[rqlrfF5pJgAH]?hC<Ke[b%RTfrl+po!7\Q#2]2$%W5a'0o')TQm`pJ`WQ%n/*U99uEX0/pK(U&lN_s>W(2lCO_D0PCe-64>d*@oK
 %G1!G>RU7On7n2kE!s7llkP~>
+endstream
+endobj
+27 0 obj
+<< /Type /Page
+/Parent 1 0 R
+/MediaBox [ 0 0 612 792 ]
+/Resources 3 0 R
+/Contents 26 0 R
+/Annots 28 0 R
+>>
+endobj
+28 0 obj
+[
+29 0 R
+30 0 R
+]
+endobj
+29 0 obj
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 108.0 599.266 194.988 587.266 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A 11 0 R
+/H /I
+>>
+endobj
+30 0 obj
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 108.0 582.066 148.668 570.066 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A 23 0 R
+/H /I
+>>
+endobj
+31 0 obj
+<< /Length 2310 /Filter [ /ASCII85Decode /FlateDecode ]
+ >>
+stream
+GatU5gMYb8&:O:Skg;j?L3H4;EuMYbS&B"c+@,7e=A^T*0ZdnIV.JiU41q13Q]fc@E$.d6cHM\4B4dKK<Yr6GMm!rJCe&t>?S"phSGBlps1;V5q3C,FL,[<NCjkjN`LH>1rUl^CZY]JL[Cn8pVbHr"bq*p553hru[;]cZGkTbNICA)Phd"E4g%4dTb70NL-_A"Vc2O<:I\imRDQ1H-cI/r@Asp,%Z>trIT?AqW5<%oY-CUQjrj1DOrZYu0>`$ldGY761j?/!#=9=5mV3pF+gVN1Fg$X_CH@[r_'"qaOe0$V6a7bI'Mb[c0dciXHMG3KnSiq)+OXD&SNW-PFb7u3>LeL2Kb9-d6&:KKX5Kc2W]XR&KW<7bi1iL3d6nS`>%@59ed0<O)&>*3[5G\D@iMn-,4$d7mko");#9QBA!YAf=7H[*f)3>#NZ9Gqlju2H#,QJ@+QZqodmNGk_Q6\T@Vkc)[\aI4'`%gJQ!QoZ&M)[cjD'grpdMSdbOrTO)A'kL&p\n+k5ai!j3L)^X8;Q\ZJY>o-6L)6o_*6pU;gQ:NQR(3r+q_?A-Hp$:Xp^)IjY+1*1%K[l%Eil&^C=u%_PkNi#%D#<,1"/L`1c*iOG#A]]_sMolR4<J_O-KZ>bR70MB"^;L5V(mC=nP\\8BkRN4C?I%WVFk%chMNX^<pFW/1TSVPV'A&iQ[^@U2;g71.4pHV(c(Vm<rU]_X1^eU4+E1'1"]'WF!0CMqdAi!5B-L<0quPKGG$KQU`>D2T[$+\&H@b+Dh,7_Fs*D>*8K<6WkI6mD[ZM80V<,[0NGTN^:hPaZPc\!Ned:ddut>Rht6'eEjOj?2&F^Up`IqZ!j&4&I%qr@&m>&H!uqDk*__QB+ld*K_NW&/9.[%9Kk!;-se^$Qck&YEa70E`n(Q<J,lM8:T<n5qAs"T'Rc+B,Sn$Q[GeQ38#EZa6cA"BF-^!>"fb0qF+-i&sAKaf^6GOe!pcHXHkKC#052dR:]f9i'WVLIk
 `L_b;bP3(b#+/glr^Yc[api.@009.Z-HWnIEW@dffImouMP56rq7+hjQ"7=j6b8dh"_+)$qdmf`u(&9#omgO,sd^6H_nBo"Gn)M8K.7qrOIE[l85Ds3UX*GP[b']CbC.&!e?0Q/YN6EZENWBWr(rWYne4T2S4!Xq4be%4K4f1-<#;q9Vl^-b/O$53K\H.=/-*4&X"*5XR5eFe&iI#oHQ-#olt7/=PCRTRmRe_lhBTNVf%rR6Z4k?ZlBk]Kc_6SuE/?DKEgLm8/;up(fSZs(BJ6aOW2D?6=m(Dh-PTV2uPZ@"0ZGH_aNRd=k0r02B)4Nn[mgT"gcPcM"=Q)<3+Xr0ctN#`PLP1T+o%OXldbW%CRAkH#Q*1kF(=b3>9!+?j%R[HhUCf/F\i<hKBb*,^ee4)s-O?1jV@/$("t4cNcDn%"76EJek.lo)88h/1<)2,tj..gk$nDC!hb7#B%\2PT/V\6H0,p:Xf$c:RnWFR6iNo)5RH&RZa@30[%GX2&G\\L-lfLhe6UU*15DrR9P`LdT*>W2#"4=q(QVoBtB<fsH.?!]@Q04^iQ1mUJFqU37<cJ81+Z<$8Sgl:KYT"Uh9L/loInF-]MA9q?WuGSo4-S&CJGg0rj8K(cQNedNlj7Uf[FdKU.$V!V\n%iOanpI-uN<K9g<:!k2\aW\k4!2tM^9;#He(/Ch(&MB9WFW)#33)$9BU"+rL;hmo(,QXgk1=IEJBYM97_a>%/b]3S:`+?00A5e8;'8V^CYa-uYjl&/fj`h0<W#^,sqL%kfrkUYH6X7qkQaZ`%Sd\FU+W;cs;uBFKGWjU'8%PWC(:-Ln$;/Y3alTg:^pOiB24sUuWLPlIX\1*AH,08cR4L;Ig1Ya]!pkjZ#Ps!"BM?QF@KB,Q[2G9WQ*T,2HAEfDI1Q#Ilas@OU%XkmnmMs/'/i\ueTm\9Kmeb]pV@F(fVRi3PI7_/<,RZ5iW%QZT]!X_3mQ(k*\\o<:m%TLF?u=nO$i#3R9U,
 2cI1lu=CE]DoZrIr=bDK^ZR_`SUKWB>I9_7AWjBZ2?)5UpXAFIq9TM`"*-8??1=NCd:hPSW#JD1AlAu1u$cPTKL%pr%_\?qE1:1)Ri@=.O;;&:0iF5Uu[WBVH/:4?VDCP6mmb=Q^&H@o.*3GO,?DEf>7-ip$F(=Vqmnc`rY25ghgGc'sf'(O>(@u*abh'KPC<\csZ";L30TCcLG<L<[ld=#3pLXf"gpcRFIM1m<7b(jC\phcn5gsCrAXhhV^M6YI?ehF[,$]U5>BsnZmeWD7ilJ"F4p)k,HYIn*g!8QF=+-q"E>*<k!]u-He,~>
+endstream
+endobj
+32 0 obj
+<< /Type /Page
+/Parent 1 0 R
+/MediaBox [ 0 0 612 792 ]
+/Resources 3 0 R
+/Contents 31 0 R
+>>
+endobj
+33 0 obj
+<< /Length 2398 /Filter [ /ASCII85Decode /FlateDecode ]
+ >>
+stream
+Gatm=D/\/e&H88.Tl3SSQIWV/IMpQkft%o6[q-trAJf*;[^jPT,>*-m?b_eAR<K;.,X>5&0P0e9SpP_Vh"f4N`Qd5X_aWK8i:$Q$WR#rF9iLgO::eb)P:1!N&p^nSAf&3e]QnTcjSLJsYJ7YC]HDlGmcG>bI[1NE!q.g!8Qk?!hVH?Ol`q/X/+7&Z?fnX.]F_Igk@u<M)9SsVB!bTCr2sk[kH-:.1Ks@/_!ds3e[@48Yu^\K%'+P/'/_QV4pfi0gjIUl[4^uNj[.M'=g"p?^V.6$#=ucFMgH_RD-UkeW2prFQ$d8m#60+6Kc-"A&6?2B/'Z8hkforC"2D<SLQTnuYn@ekN\'*PKpjl(;H#,36p;!*+O41N=6Q0+@up:`ZJu_(DUT7,qsD6K@qcY**T->1f1WYDkKFmUiJgg%McZY$D(RFa*-"eT(dM)l6+b[7j`Z0+$1n&S0'#J1H2@Y'&#8"l]kZ_Bs(KgNRTGI[g1?W'LjD#"r+VMd%$+t.gm3oS[KdtD-7nIKpf"/aKNM_(+]rElOOXD&O@i/?Y5B8B[`.cIah\Lk:PX`rLC!gZ42iIT5t76j/MbG&XDo/">UKt_cs-+E_K\^:30k;q+cV.mpoK^+.9s>==*6*8j@krg#R<84U>G-(+I_d,h8k;cpssC6`"*gp@(3]bYks5F4CQ\[M\Z7cI+V@kZc@LCh<NiUf:=RJnI;55A$-+^'-+`@CNuG/2+HhL(?-`"Zrf<WcBYC;=b5bU$^q<S-tRU&R4XrIe'Na]b>"/RC=Z8`]c*<&P;XmlV'A\MaJ_]SiltK[i_,+^Q;o(eZ=n5O3Dfd1\XEUhd@!Y(5,2%8fPA>2!mop@:36TV71@4<iNt[AcrP\*J<3#uHm%CWW?o9+i'gKVVXq)m>I8G:i!5"%;Gta%17+*$EUog4($s_*CB5\TN%j!6$TXQ@A0dXH>lW;9.TS?*8/eA0'k<h$*:IbVg?X'4gFO*dTb1B_1!l-^'Hh3@Hb
 0u8"np<C\ogh\Xu[@##3O>3jkVqrQ)g4l.L3<VL$^O279S=tH8ILAljqX@I6"a=h!uIhDkh8T+HgLF,g`8R2W%m#FH9JM4)c+4?AiL%"l8-.2@"nAODf>fMiD]"e9ls??#m9H&uI#Rh%Ao]1?*TX^p2=--;R;0TT\TA'V@Z2#L0)N!6bSC.56,qRg,Y%^\noV+SD;"TCokjfQ/1p1L+Ps5MpkbkP`ZugRDQjS"Z="J,+_#Mg8OdgUP/Vj]$EHlEeUt`5lUQ2%^:%dBiVeR8P1.;3IeuNOR%ZY-_m/AGH$#f?\D#P\t&:#V-.S/2cCKOSO/)L6P#pod#9@HU``Y;9I<HUB`&QPZN/m<%Ld?`dZ(IBhF`H$%:q=E>Yo:Ub`QPh[$^pM!%ua1siEcJq-4j\LEsiOh"cc=;OJgkF$Rf5fX%)'Ls\]_S_V"Kqm.Udc7PC)0^%o-t,t8l$GC`T/_0WoFq;M1^Sm?O?;8?.B)&J(F>:l0ZP=]o+pU,WbDZ?!#K[Y`GsZs(;AMf(oRH^]m[D5E>$EtLUc6#\%nHuQKuQ`ir.t]gFU[ai=P#g?:u]sD&.e$-mu\33#%q<L0eTJPPG+D7u(eGaf7eC+nCE<251:,Z*KfSCei=n4!Q;"Ag*(Y4#t(^,a%nQIAA0t;7Mtb%U#X[9$JN=gg;doa3j8q2]2rn$Iq'@]UU5q5#\R6g5@UH\%=>bZCj-n-(:Y[-lS?+Ul'+u"d1o=7:s+$g*,F=*C-55W)F>]j$]7;/;]B6gkT>/B\hLh3(9.>WgW-GP$lAiQZB>F)PKrrM,#d<5lb$3*]5s8=nFh?@E'bKTUP"JOYOFW1`0Ca^f\AaIp)u2<B#^4`5IoO<:=R'33L4f.nAE*>&.!FAZZo<L4$q5Hj/Vrb;)_1<XDV_JlP<])[O8:2F3+_7\fYqaOlplo%G,7N)3mr<ici4c`K@Xe:1\]eYC]ejNP>!Ze1iQ-7X/@+<kgFB<mcHcB6(;:g>Ek5XLi
 c.Itdp-U%tpg]Nma/!P*-9@CR^o(?0c<_3ju',-ajQ?I+!"o,aH@Hsr"\*+H@f[/03KPkftYkk0_GJI*n83)7u68R7j<Q#_u0-s.cUpA*)Er*ALkeau1ZsSSFT4P>W16L^fK),TiZ)jl>-)"+/n=XaF8-?9s%?An@g+L?6m9YaiZ0QhlO@u%FpEAUb,sj7p0e#K<Le[ihRm9+JKMtO]FoomX5c&MsXoaifI?eCIJ+r!h!Dj'XPN8\8I240#d\$8+58`hCFhjb'nfZLpPN0(nO8\1hN\NS=i#f7oca%L&-g3MH+A(3B9tW"]$]Z;,:9A^tKTA8KL[P(',_%TWI6TN_A'@%DY1GeVj58A!fcFYHiQ3\4JAT7\j0XH2%tji;)ND_-(T3mu!5&73^I"0@~>
+endstream
+endobj
+34 0 obj
+<< /Type /Page
+/Parent 1 0 R
+/MediaBox [ 0 0 612 792 ]
+/Resources 3 0 R
+/Contents 33 0 R
+>>
+endobj
+35 0 obj
+<< /Length 2151 /Filter [ /ASCII85Decode /FlateDecode ]
+ >>
+stream
+GatU5?'!_u&:D6"iO:.IUZbp*h_*$I\2J'L`^,,577#,(78t$C;6k9Aoqa7pR[$F7S0H%jZpf"Z\2ucF]pR^4c#:>OGa#Q7s3o6:FkfP.a80]k*Bl]GJsd9B_5-.U`Q`<[0-6Yq#*BS:j3M(&'@5:FbZ?akEL*[*H';iPj?'Uc:?J%fT2/KCcfLablKRAtIpD>3-/6bF/..tL:A`9uj6`N#WbP%E"cM;KMO-E1`EqUc4BjuXmV`#dm#Z:sjJC,Fk1B%pInf&iGEC4^LM(/I6]nfUl7Gc7Z?BbDE:JIm(J@W,gFlY0^MZ]TQ&=[\p]V24')^AfV=[qU!9E('!;K^S5'TosQ8G>pa,YX=UQPWU`p<f[,q@YX+7Lu==d-l5[T/_8'jVQT?tbO^1D#So=Z:BVZa2];&9bu"$r1A:+KR"j32ll\16H/n&#[Pe31Vc]%.m'b>Td:/F0GWh'"76U"tN?Oj3!0S2"R7%)56g'\0[80G=O2pWHSK?Q0l'iWIZ5^d2$+-gMs!ps*b\U==b-OX93iYICP?8!MEuWo'-tVe;o/TXX^A=a!8G8>#j(3!TN.MVGeWGA.Untg^=NrA(DJ[Nh_mnpTi)22QIVs^S;\16eBVkG-N/["*b)UIaCGkp7jek/tBod;5@T8.Q8;D*UPYmXGc7q'Fc3XO)AB##tmU6WF]4NbRo?)U2Y;"6DYo-Z%:XkRU\#gE6tHP_O'*=>7+K*b=ZC7\gI(lA8R5\Z5F+_bH]dC#L4S`1;IC)$C*Bk@7rCJqGBnKT/%>'K/nG03Yi`JaD)Z=B!HE&P`sM!9k_AbD`Bm9!,gGPi%5oWh[e(s0&_^nW/R2rm3,i]<p>GeS9V/le68P.+r2">$o;qKX,<uHJDse$AcP%c3aJ.M$$GVDNMYT)9h6/Of<JS97%aaD0DJW7DMW,2/=Hp0iU[`^]a*E+T:`u66t%i9V5pPU)P"/DeZauNV*LNV2f"(Rmlp^Kk3hrnh=(;EJVruX'F
 `t=Y$g`O#+9aCfQ+oke(5=[cZJ"#&Y2U*L?;@T;_E6a[KXQHWS5cXKFu;D9:?a/+q37m/+-hm7QLQQ(F[6Z&DLHcN)ZcFNJU!O440l-Ym"&->.h/d\Y\<,/MGdC2ut,P-,HK,V&R5CS0(P@5C`'+RW=:<rcU1_iUGOpUW\=h2o0R5`u.1d-c!$9$E$a?qsp'c@G;6=E/LO"SXjlZipkC62/D5\N.P3n,ZeCgbb0Bt![Ck/%i3)Q'#b-nl3LWe_lH[QN3a#E/apiePIK#6-'h$\4cZKgUYn1,@urWZX#l%0jh&!?n)s^$$MTrWk7?f`\>D!sLNd3,;X+PGU`r$`CCjg?cTr+j;a*-/!D+2JT'3kDkj^aD`nYNAZ--<dnN4;G)k&.U.bue(*,7&aU[+SmMk4hp@FA\j2!*K7ZAq4_ejUm$$@H+R)ao8YCEK`q)Dpnh)9]6+K4M`(fhj`d*e<prgk\:P)-Fi#;ANNg.XqGtZH!_Q(>mg62i-dXS3pC.nZBCGO$J5bGhRJX.!OW^@#RZY6kRD2iA&]Kh+eS=-"G[]0+QS8#.F[Gdt>*VWs#5\P&H^93dk#sb.H,6MN*XHb-Lp`]*Xf&"7r>E_K5@WS<-FO%-hncYN%k:r5NI.#lr$#K.$g9hK#IF\lH'7f.=Z%3^K.'?aM)PrbHu/6>Z.gYqq<N`eHDm:Mqi6&9EHq^=FVoj(nsUPDdtbf,N>1F:f6U<U6`_RMr)el]=lJYfN64/DYiC"AX!WJOBXL"rC[_TNmZJ6^d=VJl@YN\:F'0hL!ru,nBMU0@tH68!Df6X9"11FeUZ)_p!Xq_\TeZ%psD%Y:E$QJ:;EcD)>?*Bs]ef=F0EFB1;9td/Zt035HK(_*]L00:-p-d^X2,+RNEdN%Xk(rY^:ghZORdgh8IZ2-9SDC.I4JoT$AAd5o^N+epfDgL#c4,t3;=Fi#1A-(68GJ(?1DLQoPm^25Dn&ndNK^5dh4=7bFM<E_";]KC(JE>+n
 a-Q7(I5<?%,lHFjOERS(S9U!qsmobi>QgH!$fQ.u=Fe,M(KFtl$p7fWr`R/4rOml.;]Th0+;QR2L]ZEJ*B]U%Um7;<lZlP^o[5<Nj/PC*]6*@6dl%Yl,k4R]EiJd#4=q_Fki4-7J0gGA9QO@42gj^%)QaQ~>
+endstream
+endobj
+36 0 obj
+<< /Type /Page
+/Parent 1 0 R
+/MediaBox [ 0 0 612 792 ]
+/Resources 3 0 R
+/Contents 35 0 R
+>>
+endobj
+37 0 obj
+<< /Length 2285 /Filter [ /ASCII85Decode /FlateDecode ]
+ >>
+stream
+GatU5fl#P6'Rf^WkTN2)^h1*?C*!`&W!bP'P9L'c[dM%()HkNc*-m:GidQ<2Ua2O)%]QBq&4<7*\]_PH/p]aopi1KIFQ#q8c2XCgVQSrSi]&iG_l3EZ(&<\"\FDuWao(/MMt\SXpu0`m@JS[4B]AjMS([)DX`q><T/UJ-7_TPJiFKBbr;$1".6hdcjm%gcV*=8=L25$T7K1rRP%F_F\8L2;Yn7k+?%m)ZZhEE'@p4coXP:jtm@%`!CZK(P$Ko[pYK?.oNi[fpKEkY`Z]&cOF0T,,O?'s[ZTRCg8BMWOFaJ?0nIi2/U%pKG0?'CD/`<.qbi'ZFG=o:(b%[J4Dtu`$N+cAf!fF1l<C8E^r.B_SR:UDO0g0fiOLZtX'6u=.VOVG)T)%sSrJb`6]d"T^mB5bCl2LA]hiEd:U>?+#:$Wgkiu[9PXl7]eZR+U%o6^iGDO'!Lc-S<N1[*W6%U?j(;A0u`GdD!$54";VWOOe1]u8ajfm6$+2iY+?RQ)a=NZO9jIu"OU]<tbBgIK5T9!6QcC\A/abrO*ion!S38l4_7?a(.FBZJLq*Osj5_kq/][]Da]Zf*G_C9qC!<Q<(bVna\lCsb'LgaJ&Nkukf]U84WKgV20,XG()s/e@LR0uof&^4X3KO_Jgum+[NU(MP7s\?Yic$sR&+K*9db+8BlpoH8Cm*72/6lAZL1*]I/Pa=APqU\O)1"Hg;IiEYH)5/$CO&--(jirOOI#KEVp*qbFnomG9'GdVgNTalk)8Dbjn'_ha[b@Q.q/2NIrZ2m*OTIO5<ARr;=A[4$-;0@gZHLZl[RIc\C_\s#Kg&G%!"cD$7G`jJloN\*r;]ptF$qF_ZZpo"$&TmX7rr-g/hsqiJ78#1Sn/Jn(WKaE9!0aJ2o,DmVX;rWQ+<Am<4Y1%;,Ou![!uiE%;fm-72.M^F>,[S;"7SDp/]7;I`kW6n8#*$o$pJ_03S\cr^gZ.(k5j6%3)W&gBWMm%<RMiZ!4^UC2O?N^ek
 fC`=>G;c*Hu;9#;m%Fg_727llXNlfE5<\gPMZMZ$T+i'/-SW2OK4oiq^im^(V]HbKYd@Qi.6hp+%i(P(^rN!V?6A8I$.fH=^Qu)0sJlT5"9ka1TL!I<^u!fl(YVgJX42"?B_e00atNd$%_/onO&Fio+i3&rOZGEru\3(a$uQ!sPsqGR(#)HoK9Z/DIEGip46bLfftXoVEMLF!MX078_KnNTRAgXMCjF6Kqr-bCXR^.Yf?&*E8mb'*?63\5/JjrqS%0"79llBAs;bU_TPY0SNcQ9V_2fH-Stm;i*28)-eW_k?O<\;:F>'T#>AT5b3*D\hQG]36Au:cR^S,_%:>SqA"gc56a*6p4ARGhMi0="5:?p2iIc@%^Q)-%rX.0d%OG[D6\V0HLHIi9NElY3uV3a@X^8ISFHFg]\dm;LQ"d1S7@A:R>?\B;YKj:f+%pBBc.N,=pT5GVF?3XO]8PsJ^n,X+<`fiVI`sXcTCGOUPqW$7MA7"^"0;DLi9TIOUWn&ZhTut<$WNnME_JO_IC6E30*3)<XeLCQ(?^8(6<76@:L$q6df*nJ=jD)*KF.(oit.(F9F@JR5Y=3b?jNTCCr(=1>=3"/5!rS97b!gX9A[4i^CS*iR_qsd(OM<3?(^lTF'P?AWn4'<\p0cb,,H%P8h'c1*s<OojI%Fqbnl5L542kl4&cVl)e:YK[[<=ohO]-@G2kLPeTl0idI40ip%3S.Q(c)?f\&+8c,e3dg8HTh@^^J'I%^V1=HK.cENHD@8Duc"Y"?Ip]oVFW,*UdPDbs!hA@b4=Ks+\GC`skCmhNTe0RRLXWB9g609N)/e%=;[07F>>3AG)NP4WG;<&"MSO%`k7uWUq0/UD4>P)*86/=EAYmnNq6>"EtArN1Y^?lE*LZX#r+E:+#N+s?1-7mH_G8JrIb>NI9CnE:DmW<o;ae\hiGT!V<4$.k;4ELb>hA=n4<\$S#'-F<+4t_1E26,.D>53^W29ZH$(<)`.]*RPh,=SB
 o#&?j?;c>NR6JG?KqCTlrT@T5(6IjZAp->"7V?"%7V/sn&)R3i&3E.(OPf2g3^\=adbZadiHLWA^'-bbXESsOH@$6naj7uWs09f&f9U",4#cHT1Dk!dgbu?oM2HFq#bdu+SY2`#PJls*,N7Ya%nu<9p0JS8_Rd@6V[%C59Di?u"cYX;Zl_JtB7dpe$L#6Sa9i=p-q>8Zj,I]>KPXr4DP%pHUqSA6*p;qO7[!gYh*1M`L/R.0)B=TL8H\Q7kg`#0Yf&Z&1[YAmmL\bltcb0'rctR@k0B1Ag>6~>
+endstream
+endobj
+38 0 obj
+<< /Type /Page
+/Parent 1 0 R
+/MediaBox [ 0 0 612 792 ]
+/Resources 3 0 R
+/Contents 37 0 R
+>>
+endobj
+39 0 obj
+<< /Length 2322 /Filter [ /ASCII85Decode /FlateDecode ]
+ >>
+stream
+GatU4>EbR8(4Ml_61PZ#.TVWB#dR7d`&$MV2ti7n[8gAu!s@h+14ZTZR7r'X%TaZn6[)=C\SO3tF3^]P>c"p!X*:&6Y?06,_;F"Ja<du&"9JGDrU0EL^a5\LV/q.Zn#NoN?2_[#mna312VTak(NSIFFTt.(Ohg)(VJuP39$=DTVI^poVC&L;2ltX*lM]<3IZii;Wm'p02<LTgZa,.sk"X[q/3te(hVW];:J.N_BB9W:5pkVS2\/oY4NOE!hRpt!Q).]0WmS:*ed^?`F^?Rpo06mZb5inq7/00,C:+YqAILhdb,!-#j!I]<Vq!u6&P!^*OCm7Le3GY'W)[8tmT$T#k+LDN!db%hKPb9lS&ZG0@_lq:+KSRD.bWF3*3astM$)[54k3XV!et0WI`O"GR9V$Kos3Pb9N4l"9d<TD&ZmN_a-P&oFP2lnDGNmjB-_T&>4a[hX#s&77P=+mHGlBJ\H$$<Ye/0+?1o\/&,uD]9?F.4LE#2K5,=ZZb7>K\]O7u*+`Dg+]3QNW^&2kjqZ>7N_3Eg3o80,L-,XS`:^R7Y=SuI(InEj84"tDcFc^_5DOi:-5a"4C&%NgQ_P*)f4NaN;\H=_/(XA69H%7T+lCB^UQrG1:\_?R<7Z4bjd3p!AUU?.\f2cK\_N6F4PHkBUj:dsQf5dp%W'>.IZs"[-Dm4.gQ.!W;/pG'kA&d]+US%j[W,eBp>.]$=]3L;gfaB32CPhTq14@+f/<!+"*-"Noc6](F&f-5NMb@;1X"ZW>K+C&_o=Rr8=^B53J>2EWd(/J*Li\3>qj^(@-.%VYK*I&%Z<>@CB2tJ-H7U["ESlBg>N^?&3f+`If4gA4)$FC'./ht*c4//)XLio#0dmhhS6i:c)l7e7WAf"TAuW/;Ogid:I?tUCKMt=6-olaBO"sd;[HR;G=_ZIrX&AI9+ImaVV=ONq$5^IQ;Xk;`dW#MaT[Dbj[8gK;Z2tJbhB?9J:Y=_(>dsH5\$<4q;(8XPTAh1`bu
 `*/9Kk`K67OcR?0"U@XQ6n5"+,ql7)EYr_j1;LO4[<fb]&mSQPq7!V:IBQ`T@0@oPg/ap?:7dcG/[olsc"(acDDNeVV_o8tit<J&&YK_m"cTl*]eA]oWBD(c`$3#AK!BcE0#A[@:;,_@Wf:4>>-M'W4YHWt:%9KF`"R\r%Bj/;g+_SO_8cZ)tSn(7mF-X<Kc+&],Kc0^%uOU'P[=q3S?-W9o<EHJ6`.M?AFH@14K9$]rYcR+^Nq$Fa#.1Ka53.8*1jeoD=WF?LL3F"\R<&^[Ua_g%i]1ZQ/">Rq!'70"9N06"Z<[7OXDjc!6I(a!%Pn*oOA<(])(4qcg/^WM^pQ$T=pHDX<FE^&b!QcfKS*d#WDK3cRRT]`+@NtF\*`nG/u>+IOsVM`jab32,hKPXUY9m8cRUsokNoatUGJ=GlLo`ojQm;)HD^l`cJ/)c#2GQh'm#:L1.;JY'ki+n0>k[omfLu%bS/aKj$n+11N-VdH[^MuafJ=\Oa.'A:lR5IWHT&C6YS$Sp-I).1.f`e1gqJ_&UmdBN'h2=gP&T*4BT64Yk(`s2DpnHaV2fRu2;5RWmRJS?"FBb&-q8c\_Ta&(AOkp70ZI#DfJ$/6hI1_O*C4Ni'3']d:O*.^EO^t"?D,3KH*^4^@Eq'Oq;ehK]rNGuGl2pbEW#2;+KrjTb-W^DE.lOpY'UIK(X`fe2.lSej=iK=[Hoe;^L.'"lQ>^q-L1rY2f_&C9=m2;ro?Yn@XZ,M<p:&eOnadI>>C^sWFG9YA\JXAd=/[$cC27NP*R:ujhRC+.ecT?D/1q`[pH5";a@'Z[!M-HD::e^+ohY$_bbtGi#VB*ZpZKi0A>tJBL76c3r=cmbD4[HSgEcm#(WL0c9%k=k7+<eP^=iL@=liVSi]K;*%An$(r7tXT/o7&P?8kRrPKXgK5obtRGQ./Z-!jU+<:.hUAGH7L8^8>'Bc)qf7HQ;Gd+%^Bg-+t=R*a8`Vj8o^`UuF><3^m(5R#(l&Bu#
 YDKe<sO-@Beg;#)0n-66"U<+$Xo3[+l(XBm2KSD#mXq-/eTUoQIrrV$c#KPAUo3Ddlmk8;.0[U4HG6FnUKY,t^*EiC2nWrg4jNFTB+`NX=`!>^4OGbTT__q5a$3IbB"'$e"roVrgYQ$?SPW@*5O,O*a678+'8L=Rs7)6BR\<4@]%o8P(EL3gN_B1`$&u\@*`U1$$\nEq[i0_pSVpPmY3Iq`;r,`BO5XqD.?f*5.i&`(epuD%e:TA`4#C@'Vftr,OSs\huk%QW)s6su5`<h"mXL?C&Qq>2b)q@7lO0s6K)of2BTsn=&B3@n+.-J3j+RX05Z!b<~>
+endstream
+endobj
+40 0 obj
+<< /Type /Page
+/Parent 1 0 R
+/MediaBox [ 0 0 612 792 ]
+/Resources 3 0 R
+/Contents 39 0 R
+/Annots 41 0 R
+>>
+endobj
+41 0 obj
+[
+42 0 R
+43 0 R
+44 0 R
+45 0 R
+46 0 R
+]
+endobj
+42 0 obj
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 170.64 568.866 195.312 556.866 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A << /URI (http://logging.apache.org/log4j)
+/S /URI >>
+/H /I
+>>
+endobj
+43 0 obj
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 289.62 555.666 330.288 543.666 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A << /URI (zookeeperAdmin.html#sc_logging)
+/S /URI >>
+/H /I
+>>
+endobj
+44 0 obj
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 400.944 555.666 532.08 543.666 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A << /URI (zookeeperAdmin.html)
+/S /URI >>
+/H /I
+>>
+endobj
+45 0 obj
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 90.0 542.466 122.328 530.466 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A << /URI (zookeeperAdmin.html)
+/S /URI >>
+/H /I
+>>
+endobj
+46 0 obj
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 138.636 427.841 268.308 415.841 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A << /URI (http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/Level.html#FATAL)
+/S /URI >>
+/H /I
+>>
+endobj
+47 0 obj
+<< /Length 1543 /Filter [ /ASCII85Decode /FlateDecode ]
+ >>
+stream
+Gau0C>Edeu'RnB3d,]mkBXO-Xq(`Ar;!;eJ%L"a$V1])o;.>/&V6[EN_slPD[[$&9EO%]kmHiDeV/uU\GE-%T7^$I"O!@-FnG=n34R/%_%,iiUc1B,/1E-&,8?s*24F6]#T>.uSK_b+P[MjGY2%T[@dTmSO%6[Hu)tMbENS_i+Br9sfho_DSF/dqE1GZ'?[<=X2Hec]B9%VL.XGl!ESlE>H!\;YKUdB".>"M^qDJq_<C=?+NBpGO&<+(\doB?YWVU!#0hoY6^1G=B6ntVPJ`hLneFK6nC]5m/e$foXjUt`">0D@o+%lu[&WqW\s\gZZ\5+,3eI;K[&>9H.A=_nH78QKL'S?0&*)">i^WIOQD(EF3%aD<KXjgFG-j^NuH;Z[S.A0>RO?4O4$9%V.Dc?!afCshOqO@Plb*fX85q9ApOlk!XWjSI&,*f.coM^^mL)cFe)n4j8\3dCCOi\B_V/ga#>Z-]h%HMd,](=fmR_^J=PWB9_G=d0faYUpJ9Xe_05aCmq!T8_C(s7Ya14auf?1VH`[i#?dpekkIO$MBqI]%G):jVDS9YStic?OWVu`/KSHF6aopi9ickO[f@i.&[D'e:((M%[!,kqH#YS_=>ZP!0T/E4L]'#V&NZZl)MbAd4:6Y9IhBr:`/@aQM7O&OA(:[m&Ci2Nd2\B4O]'Nh0R_JPQU*+3!N.\b.uI8iBYM6GhOPHeZjqOSih1p[?hj1+(ODcTQ!3QnNX0jmH\GM-9%2r$:rGF`#MJ/f-Qr'4l/T(Y0rB^:u#W,**JF!W&B8n$s9R=4Tis+d]1/u4A;qT-[nNQ][e!pVc_*+2F[VeGY.Z2piIc.Ob!!%Kp[MuH"3D3gYJST1;jhA`ccX2olHqIPE6!7k-h.3!pXu2WZ&GK'#0#&;n?OAN+i1X_(EA`5=a>2m[iR#@C3H8P#JGbECdY%8d[f#LSBlb_/LYb6c7&*g^b=/Bo4$j*%)P;"o$$`"JK,h1-;[!R>;!LEa4gTpt
 />Ks-:]C^Qmr\>*b3D4p@01<8;2@A'j\i7^ssFikBpEm0p,AiC:&a2HWZ"`$XU6%X4i4i7u6OWQ]L>e+'e_$2)eEhuENRLWSu-S(VQd$37_fFD9)7_7hGmU!!n`QqP+L7KYKfO*W&0&l/A!SU9]ID[&3JQfAlF>;'sN.05530k@!SXM/8MMp<6*)4:=3-h98r!>#_GZ@[J8DOq,J**h>(ZMY'?0=)@=)]B2=bTGm;ihJO'AqcfAdnBB^H=t[m*(ST(+JOf(!Dc"8mZ>Mld@%oeQqN'<Vs)Akn(^6$B\a-B*&ii#oFiQ1D/`A]KXB$ah@JR/n>"IrkU%LG1h.p`5op4enH&b\9pooUpd+3fUtg-G8efYu$@O]*:;Q,qgfsGuq7<VUk!_*>[f!g.2:VWj=SqGiY5itOA3Jm.Ni^s,m)R^L@uTb<EX0s[+)ukc1D@P0Tch_Wfs)oQUULJ,XRgV6O5`'(^0kj?HX?&>ZYg3;(12"/%'LcGWnuJJX4t1?8U/p;Ro"4/q[2X)XmQOuAL5T"muua<5$3EK~>
+endstream
+endobj
+48 0 obj
+<< /Type /Page
+/Parent 1 0 R
+/MediaBox [ 0 0 612 792 ]
+/Resources 3 0 R
+/Contents 47 0 R
+/Annots 49 0 R
+>>
+endobj
+49 0 obj
+[
+50 0 R
+]
+endobj
+50 0 obj
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 441.588 552.56 484.584 540.56 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A << /URI (http://logging.apache.org/log4j/1.2/faq.html#2.4)
+/S /URI >>
+/H /I
+>>
+endobj
+52 0 obj
+<<
+ /Title (\376\377\0\61\0\40\0\111\0\156\0\164\0\162\0\157\0\144\0\165\0\143\0\164\0\151\0\157\0\156)
+ /Parent 51 0 R
+ /Next 53 0 R
+ /A 9 0 R
+>> endobj
+53 0 obj
+<<
+ /Title (\376\377\0\62\0\40\0\101\0\164\0\157\0\155\0\151\0\143\0\40\0\102\0\162\0\157\0\141\0\144\0\143\0\141\0\163\0\164)
+ /Parent 51 0 R
+ /First 54 0 R
+ /Last 58 0 R
+ /Prev 52 0 R
+ /Next 59 0 R
+ /Count -5
+ /A 11 0 R
+>> endobj
+54 0 obj
+<<
+ /Title (\376\377\0\62\0\56\0\61\0\40\0\107\0\165\0\141\0\162\0\141\0\156\0\164\0\145\0\145\0\163\0\54\0\40\0\120\0\162\0\157\0\160\0\145\0\162\0\164\0\151\0\145\0\163\0\54\0\40\0\141\0\156\0\144\0\40\0\104\0\145\0\146\0\151\0\156\0\151\0\164\0\151\0\157\0\156\0\163)
+ /Parent 53 0 R
+ /Next 55 0 R
+ /A 13 0 R
+>> endobj
+55 0 obj
+<<
+ /Title (\376\377\0\62\0\56\0\62\0\40\0\114\0\145\0\141\0\144\0\145\0\162\0\40\0\101\0\143\0\164\0\151\0\166\0\141\0\164\0\151\0\157\0\156)
+ /Parent 53 0 R
+ /Prev 54 0 R
+ /Next 56 0 R
+ /A 15 0 R
+>> endobj
+56 0 obj
+<<
+ /Title (\376\377\0\62\0\56\0\63\0\40\0\101\0\143\0\164\0\151\0\166\0\145\0\40\0\115\0\145\0\163\0\163\0\141\0\147\0\151\0\156\0\147)
+ /Parent 53 0 R
+ /Prev 55 0 R
+ /Next 57 0 R
+ /A 17 0 R
+>> endobj
+57 0 obj
+<<
+ /Title (\376\377\0\62\0\56\0\64\0\40\0\123\0\165\0\155\0\155\0\141\0\162\0\171)
+ /Parent 53 0 R
+ /Prev 56 0 R
+ /Next 58 0 R
+ /A 19 0 R
+>> endobj
+58 0 obj
+<<
+ /Title (\376\377\0\62\0\56\0\65\0\40\0\103\0\157\0\155\0\160\0\141\0\162\0\151\0\163\0\157\0\156\0\163)
+ /Parent 53 0 R
+ /Prev 57 0 R
+ /A 21 0 R
+>> endobj
+59 0 obj
+<<
+ /Title (\376\377\0\63\0\40\0\114\0\157\0\147\0\147\0\151\0\156\0\147)
+ /Parent 51 0 R
+ /First 60 0 R
+ /Last 60 0 R
+ /Prev 53 0 R
+ /Count -3
+ /A 23 0 R
+>> endobj
+60 0 obj
+<<
+ /Title (\376\377\0\63\0\56\0\61\0\40\0\104\0\145\0\166\0\145\0\154\0\157\0\160\0\145\0\162\0\40\0\107\0\165\0\151\0\144\0\145\0\154\0\151\0\156\0\145\0\163)
+ /Parent 59 0 R
+ /First 62 0 R
+ /Last 64 0 R
+ /Count -2
+ /A 25 0 R
+>> endobj
+62 0 obj
+<<
+ /Title (\376\377\0\63\0\56\0\61\0\56\0\61\0\40\0\114\0\157\0\147\0\147\0\151\0\156\0\147\0\40\0\141\0\164\0\40\0\164\0\150\0\145\0\40\0\122\0\151\0\147\0\150\0\164\0\40\0\114\0\145\0\166\0\145\0\154)
+ /Parent 60 0 R
+ /Next 64 0 R
+ /A 61 0 R
+>> endobj
+64 0 obj
+<<
+ /Title (\376\377\0\63\0\56\0\61\0\56\0\62\0\40\0\125\0\163\0\145\0\40\0\157\0\146\0\40\0\123\0\164\0\141\0\156\0\144\0\141\0\162\0\144\0\40\0\154\0\157\0\147\0\64\0\152\0\40\0\111\0\144\0\151\0\157\0\155\0\163)
+ /Parent 60 0 R
+ /Prev 62 0 R
+ /A 63 0 R
+>> endobj
+65 0 obj
+<< /Type /Font
+/Subtype /Type1
+/Name /F3
+/BaseFont /Helvetica-Bold
+/Encoding /WinAnsiEncoding >>
+endobj
+66 0 obj
+<< /Type /Font
+/Subtype /Type1
+/Name /F5
+/BaseFont /Times-Roman
+/Encoding /WinAnsiEncoding >>
+endobj
+67 0 obj
+<< /Type /Font
+/Subtype /Type1
+/Name /F6
+/BaseFont /Times-Italic
+/Encoding /WinAnsiEncoding >>
+endobj
+68 0 obj
+<< /Type /Font
+/Subtype /Type1
+/Name /F1
+/BaseFont /Helvetica
+/Encoding /WinAnsiEncoding >>
+endobj
+69 0 obj
+<< /Type /Font
+/Subtype /Type1
+/Name /F4
+/BaseFont /Helvetica-BoldOblique
+/Encoding /WinAnsiEncoding >>
+endobj
+70 0 obj
+<< /Type /Font
+/Subtype /Type1
+/Name /F9
+/BaseFont /Courier
+/Encoding /WinAnsiEncoding >>
+endobj
+71 0 obj
+<< /Type /Font
+/Subtype /Type1
+/Name /F2
+/BaseFont /Helvetica-Oblique
+/Encoding /WinAnsiEncoding >>
+endobj
+72 0 obj
+<< /Type /Font
+/Subtype /Type1
+/Name /F7
+/BaseFont /Times-Bold
+/Encoding /WinAnsiEncoding >>
+endobj
+1 0 obj
+<< /Type /Pages
+/Count 8
+/Kids [6 0 R 27 0 R 32 0 R 34 0 R 36 0 R 38 0 R 40 0 R 48 0 R ] >>
+endobj
+2 0 obj
+<< /Type /Catalog
+/Pages 1 0 R
+ /Outlines 51 0 R
+ /PageMode /UseOutlines
+ >>
+endobj
+3 0 obj
+<< 
+/Font << /F3 65 0 R /F5 66 0 R /F1 68 0 R /F6 67 0 R /F4 69 0 R /F9 70 0 R /F2 71 0 R /F7 72 0 R >> 
+/ProcSet [ /PDF /ImageC /Text ] >> 
+endobj
+9 0 obj
+<<
+/S /GoTo
+/D [27 0 R /XYZ 85.0 659.0 null]
+>>
+endobj
+11 0 obj
+<<
+/S /GoTo
+/D [27 0 R /XYZ 85.0 553.066 null]
+>>
+endobj
+13 0 obj
+<<
+/S /GoTo
+/D [27 0 R /XYZ 85.0 487.532 null]
+>>
+endobj
+15 0 obj
+<<
+/S /GoTo
+/D [34 0 R /XYZ 85.0 358.4 null]
+>>
+endobj
+17 0 obj
+<<
+/S /GoTo
+/D [36 0 R /XYZ 85.0 223.4 null]
+>>
+endobj
+19 0 obj
+<<
+/S /GoTo
+/D [38 0 R /XYZ 85.0 409.8 null]
+>>
+endobj
+21 0 obj
+<<
+/S /GoTo
+/D [38 0 R /XYZ 85.0 252.947 null]
+>>
+endobj
+23 0 obj
+<<
+/S /GoTo
+/D [40 0 R /XYZ 85.0 598.2 null]
+>>
+endobj
+25 0 obj
+<<
+/S /GoTo
+/D [40 0 R /XYZ 85.0 519.466 null]
+>>
+endobj
+51 0 obj
+<<
+ /First 52 0 R
+ /Last 59 0 R
+>> endobj
+61 0 obj
+<<
+/S /GoTo
+/D [40 0 R /XYZ 85.0 455.013 null]
+>>
+endobj
+63 0 obj
+<<
+/S /GoTo
+/D [40 0 R /XYZ 85.0 201.241 null]
+>>
+endobj
+xref
+0 73
+0000000000 65535 f 
+0000023669 00000 n 
+0000023776 00000 n 
+0000023868 00000 n 
+0000000015 00000 n 
+0000000071 00000 n 
+0000000884 00000 n 
+0000001004 00000 n 
+0000001085 00000 n 
+0000024024 00000 n 
+0000001220 00000 n 
+0000024087 00000 n 
+0000001357 00000 n 
+0000024153 00000 n 
+0000001494 00000 n 
+0000024219 00000 n 
+0000001631 00000 n 
+0000024283 00000 n 
+0000001768 00000 n 
+0000024347 00000 n 
+0000001905 00000 n 
+0000024411 00000 n 
+0000002042 00000 n 
+0000024477 00000 n 
+0000002179 00000 n 
+0000024541 00000 n 
+0000002316 00000 n 
+0000004429 00000 n 
+0000004552 00000 n 
+0000004586 00000 n 
+0000004723 00000 n 
+0000004860 00000 n 
+0000007263 00000 n 
+0000007371 00000 n 
+0000009862 00000 n 
+0000009970 00000 n 
+0000012214 00000 n 
+0000012322 00000 n 
+0000014700 00000 n 
+0000014808 00000 n 
+0000017223 00000 n 
+0000017346 00000 n 
+0000017401 00000 n 
+0000017585 00000 n 
+0000017768 00000 n 
+0000017940 00000 n 
+0000018110 00000 n 
+0000018341 00000 n 
+0000019977 00000 n 
+0000020100 00000 n 
+0000020127 00000 n 
+0000024607 00000 n 
+0000020327 00000 n 
+0000020490 00000 n 
+0000020731 00000 n 
+0000021062 00000 n 
+0000021279 00000 n 
+0000021490 00000 n 
+0000021648 00000 n 
+0000021816 00000 n 
+0000021990 00000 n 
+0000024658 00000 n 
+0000022237 00000 n 
+0000024724 00000 n 
+0000022501 00000 n 
+0000022776 00000 n 
+0000022889 00000 n 
+0000022999 00000 n 
+0000023110 00000 n 
+0000023218 00000 n 
+0000023338 00000 n 
+0000023444 00000 n 
+0000023560 00000 n 
+trailer
+<<
+/Size 73
+/Root 2 0 R
+/Info 4 0 R
+>>
+startxref
+24790
+%%EOF

http://git-wip-us.apache.org/repos/asf/zookeeper/blob/01b6b5e4/doc/r3.1.2/zookeeperJMX.html
----------------------------------------------------------------------
diff --git a/doc/r3.1.2/zookeeperJMX.html b/doc/r3.1.2/zookeeperJMX.html
new file mode 100644
index 0000000..f3f15c3
--- /dev/null
+++ b/doc/r3.1.2/zookeeperJMX.html
@@ -0,0 +1,459 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta content="Apache Forrest" name="Generator">
+<meta name="Forrest-version" content="0.8">
+<meta name="Forrest-skin-name" content="pelt">
+<title>ZooKeeper JMX</title>
+<link type="text/css" href="skin/basic.css" rel="stylesheet">
+<link media="screen" type="text/css" href="skin/screen.css" rel="stylesheet">
+<link media="print" type="text/css" href="skin/print.css" rel="stylesheet">
+<link type="text/css" href="skin/profile.css" rel="stylesheet">
+<script src="skin/getBlank.js" language="javascript" type="text/javascript"></script><script src="skin/getMenu.js" language="javascript" type="text/javascript"></script><script src="skin/fontsize.js" language="javascript" type="text/javascript"></script>
+<link rel="shortcut icon" href="images/favicon.ico">
+</head>
+<body onload="init()">
+<script type="text/javascript">ndeSetTextSize();</script>
+<div id="top">
+<!--+
+    |breadtrail
+    +-->
+<div class="breadtrail">
+<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://hadoop.apache.org/">Hadoop</a> &gt; <a href="http://hadoop.apache.org/zookeeper/">ZooKeeper</a><script src="skin/breadcrumbs.js" language="JavaScript" type="text/javascript"></script>
+</div>
+<!--+
+    |header
+    +-->
+<div class="header">
+<!--+
+    |start group logo
+    +-->
+<div class="grouplogo">
+<a href="http://hadoop.apache.org/"><img class="logoImage" alt="Hadoop" src="images/hadoop-logo.jpg" title="Apache Hadoop"></a>
+</div>
+<!--+
+    |end group logo
+    +-->
+<!--+
+    |start Project Logo
+    +-->
+<div class="projectlogo">
+<a href="http://hadoop.apache.org/zookeeper/"><img class="logoImage" alt="ZooKeeper" src="images/zookeeper_small.gif" title="ZooKeeper: distributed coordination"></a>
+</div>
+<!--+
+    |end Project Logo
+    +-->
+<!--+
+    |start Search
+    +-->
+<div class="searchbox">
+<form action="http://www.google.com/search" method="get" class="roundtopsmall">
+<input value="hadoop.apache.org" name="sitesearch" type="hidden"><input onFocus="getBlank (this, 'Search the site with google');" size="25" name="q" id="query" type="text" value="Search the site with google">&nbsp; 
+                    <input name="Search" value="Search" type="submit">
+</form>
+</div>
+<!--+
+    |end search
+    +-->
+<!--+
+    |start Tabs
+    +-->
+<ul id="tabs">
+<li>
+<a class="unselected" href="http://hadoop.apache.org/zookeeper/">Project</a>
+</li>
+<li>
+<a class="unselected" href="http://wiki.apache.org/hadoop/ZooKeeper">Wiki</a>
+</li>
+<li class="current">
+<a class="selected" href="index.html">ZooKeeper 3.1 Documentation</a>
+</li>
+</ul>
+<!--+
+    |end Tabs
+    +-->
+</div>
+</div>
+<div id="main">
+<div id="publishedStrip">
+<!--+
+    |start Subtabs
+    +-->
+<div id="level2tabs"></div>
+<!--+
+    |end Endtabs
+    +-->
+<script type="text/javascript"><!--
+document.write("Last Published: " + document.lastModified);
+//  --></script>
+</div>
+<!--+
+    |breadtrail
+    +-->
+<div class="breadtrail">
+
+             &nbsp;
+           </div>
+<!--+
+    |start Menu, mainarea
+    +-->
+<!--+
+    |start Menu
+    +-->
+<div id="menu">
+<div onclick="SwitchMenu('menu_1.1', 'skin/')" id="menu_1.1Title" class="menutitle">Overview</div>
+<div id="menu_1.1" class="menuitemgroup">
+<div class="menuitem">
+<a href="index.html">Welcome</a>
+</div>
+<div class="menuitem">
+<a href="zookeeperOver.html">Overview</a>
+</div>
+<div class="menuitem">
+<a href="zookeeperStarted.html">Getting Started</a>
+</div>
+<div class="menuitem">
+<a href="releasenotes.html">Release Notes</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2', 'skin/')" id="menu_1.2Title" class="menutitle">Developer</div>
+<div id="menu_1.2" class="menuitemgroup">
+<div class="menuitem">
+<a href="api/index.html">API Docs</a>
+</div>
+<div class="menuitem">
+<a href="zookeeperProgrammers.html">Programmer's Guide</a>
+</div>
+<div class="menuitem">
+<a href="javaExample.html">Java Example</a>
+</div>
+<div class="menuitem">
+<a href="zookeeperTutorial.html">Barrier and Queue Tutorial</a>
+</div>
+<div class="menuitem">
+<a href="recipes.html">Recipes</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_selected_1.3', 'skin/')" id="menu_selected_1.3Title" class="menutitle" style="background-image: url('skin/images/chapter_open.gif');">Admin &amp; Ops</div>
+<div id="menu_selected_1.3" class="selectedmenuitemgroup" style="display: block;">
+<div class="menuitem">
+<a href="zookeeperAdmin.html">Administrator's Guide</a>
+</div>
+<div class="menuitem">
+<a href="zookeeperQuotas.html">Quota Guide</a>
+</div>
+<div class="menupage">
+<div class="menupagetitle">JMX</div>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.4', 'skin/')" id="menu_1.4Title" class="menutitle">Contributor</div>
+<div id="menu_1.4" class="menuitemgroup">
+<div class="menuitem">
+<a href="zookeeperInternals.html">ZooKeeper Internals</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.5', 'skin/')" id="menu_1.5Title" class="menutitle">Miscellaneous</div>
+<div id="menu_1.5" class="menuitemgroup">
+<div class="menuitem">
+<a href="http://wiki.apache.org/hadoop/ZooKeeper">Wiki</a>
+</div>
+<div class="menuitem">
+<a href="http://wiki.apache.org/hadoop/ZooKeeper/FAQ">FAQ</a>
+</div>
+<div class="menuitem">
+<a href="http://hadoop.apache.org/zookeeper/mailing_lists.html">Mailing Lists</a>
+</div>
+</div>
+<div id="credit"></div>
+<div id="roundbottom">
+<img style="display: none" class="corner" height="15" width="15" alt="" src="skin/images/rc-b-l-15-1body-2menu-3menu.png"></div>
+<!--+
+  |alternative credits
+  +-->
+<div id="credit2"></div>
+</div>
+<!--+
+    |end Menu
+    +-->
+<!--+
+    |start content
+    +-->
+<div id="content">
+<div title="Portable Document Format" class="pdflink">
+<a class="dida" href="zookeeperJMX.pdf"><img alt="PDF -icon" src="skin/images/pdfdoc.gif" class="skin"><br>
+        PDF</a>
+</div>
+<h1>ZooKeeper JMX</h1>
+<div id="minitoc-area">
+<ul class="minitoc">
+<li>
+<a href="#ch_jmx">JMX</a>
+</li>
+<li>
+<a href="#ch_starting">Starting ZooKeeper with JMX enabled</a>
+</li>
+<li>
+<a href="#ch_console">Run a JMX console</a>
+</li>
+<li>
+<a href="#ch_reference">ZooKeeper MBean Reference</a>
+</li>
+</ul>
+</div>
+  
+
+  
+
+  
+<a name="N10009"></a><a name="ch_jmx"></a>
+<h2 class="h3">JMX</h2>
+<div class="section">
+<p>Apache ZooKeeper has extensive support for JMX, allowing you
+    to view and manage a ZooKeeper serving ensemble.</p>
+<p>This document assumes that you have basic knowledge of
+    JMX. See <a href="http://java.sun.com/javase/technologies/core/mntr-mgmt/javamanagement/">
+    Sun JMX Technology</a> page to get started with JMX.
+    </p>
+<p>See the <a href="http://java.sun.com/javase/6/docs/technotes/guides/management/agent.html">
+    JMX Management Guide</a> for details on setting up local and
+    remote management of VM instances. By default the included
+    <em>zkServer.sh</em> supports only local management -
+    review the linked document to enable support for remote management
+    (beyond the scope of this document).
+    </p>
+</div>
+
+  
+<a name="N10024"></a><a name="ch_starting"></a>
+<h2 class="h3">Starting ZooKeeper with JMX enabled</h2>
+<div class="section">
+<p>The class
+      <em>org.apache.zookeeper.server.quorum.QuorumPeerMain</em>
+      will start a JMX manageable ZooKeeper server. This class
+      registers the proper MBeans during initalization to support JMX
+      monitoring and management of the
+      instance. See <em>bin/zkServer.sh</em> for one
+      example of starting ZooKeeper using QuorumPeerMain.</p>
+</div>
+
+  
+<a name="N10034"></a><a name="ch_console"></a>
+<h2 class="h3">Run a JMX console</h2>
+<div class="section">
+<p>There are a number of JMX consoles available which can connect
+      to the running server. For this example we will use Sun's
+      <em>jconsole</em>.</p>
+<p>The Java JDK ships with a simple JMX console
+      named <a href="http://java.sun.com/developer/technicalArticles/J2SE/jconsole.html">jconsole</a>
+      which can be used to connect to ZooKeeper and inspect a running
+      server. Once you've started ZooKeeper using QuorumPeerMain
+      start <em>jconsole</em>, which typically resides in
+      <em>JDK_HOME/bin/jconsole</em>
+</p>
+<p>When the "new connection" window is displayed either connect
+      to local process (if jconsole started on same host as Server) or
+      use the remote process connection.</p>
+<p>By default the "overview" tab for the VM is displayed (this
+      is a great way to get insight into the VM btw). Select
+      the "MBeans" tab.</p>
+<p>You should now see <em>org.apache.ZooKeeperService</em>
+      on the left hand side. Expand this item and depending on how you've
+      started the server you will be able to monitor and manage various
+      service related features.</p>
+<p>Also note that ZooKeeper will register log4j MBeans as
+    well. In the same section along the left hand side you will see
+    "log4j". Expand that to manage log4j through JMX. Of particular
+    interest is the ability to dynamically change the logging levels
+    used by editing the appender and root thresholds. Log4j MBean
+    registration can be disabled by passing
+    <em>-Dzookeeper.jmx.log4j.disable=true</em> to the JVM
+    when starting ZooKeeper.
+    </p>
+</div>
+
+  
+<a name="N1005F"></a><a name="ch_reference"></a>
+<h2 class="h3">ZooKeeper MBean Reference</h2>
+<div class="section">
+<p>This table details JMX for a server participating in a
+    replicated ZooKeeper ensemble (ie not standalone). This is the
+    typical case for a production environment.</p>
+<table class="ForrestTable" cellspacing="1" cellpadding="4">
+<caption>MBeans, their names and description</caption>
+      
+<title>MBeans, their names and description</title>
+
+      
+          
+<tr>
+            
+<th>MBean</th>
+            <th>MBean Object Name</th>
+            <th>Description</th>
+          
+</tr>
+        
+          
+<tr>
+            
+<td>Quorum</td>
+            <td>ReplicatedServer_id&lt;#&gt;</td>
+            <td>Represents the Quorum, or Ensemble - parent of all
+            cluster members. Note that the object name includes the
+            "myid" of the server (name suffix) that your JMX agent has
+            connected to.</td>
+          
+</tr>
+          
+<tr>
+            
+<td>LocalPeer|RemotePeer</td>
+            <td>replica.&lt;#&gt;</td>
+            <td>Represents a local or remote peer (ie server
+            participating in the ensemble). Note that the object name
+            includes the "myid" of the server (name suffix).</td>
+          
+</tr>
+          
+<tr>
+            
+<td>LeaderElection</td>
+            <td>LeaderElection</td>
+            <td>Represents a ZooKeeper cluster leader election which is
+            in progress. Provides information about the election, such as
+            when it started.</td>
+          
+</tr>
+          
+<tr>
+            
+<td>Leader</td>
+            <td>Leader</td>
+            <td>Indicates that the parent replica is the leader and
+            provides attributes/operations for that server. Note that
+            Leader is a subclass of ZooKeeperServer, so it provides
+            all of the information normally associated with a
+            ZooKeeperServer node.</td>
+          
+</tr>
+          
+<tr>
+            
+<td>Follower</td>
+            <td>Follower</td>
+            <td>Indicates that the parent replica is a follower and
+            provides attributes/operations for that server. Note that
+            Follower is a subclass of ZooKeeperServer, so it provides
+            all of the information normally associated with a
+            ZooKeeperServer node.</td>
+          
+</tr>
+          
+<tr>
+            
+<td>DataTree</td>
+            <td>InMemoryDataTree</td>
+            <td>Statistics on the in memory znode database, also
+            operations to access finer (and more computationally
+            intensive) statistics on the data (such as ephemeral
+            count). InMemoryDataTrees are children of ZooKeeperServer
+            nodes.</td>
+          
+</tr>
+          
+<tr>
+            
+<td>ServerCnxn</td>
+            <td>&lt;session_id&gt;</td>
+            <td>Statistics on each client connection, also
+            operations on those connections (such as
+            termination). Note the object name is the session id of
+            the connection in hex form.</td>
+          
+</tr>
+    
+</table>
+<p>This table details JMX for a standalone server. Typically
+    standalone is only used in development situations.</p>
+<table class="ForrestTable" cellspacing="1" cellpadding="4">
+<caption>MBeans, their names and description</caption>
+      
+<title>MBeans, their names and description</title>
+
+      
+          
+<tr>
+            
+<th>MBean</th>
+            <th>MBean Object Name</th>
+            <th>Description</th>
+          
+</tr>
+        
+          
+<tr>
+            
+<td>ZooKeeperServer</td>
+            <td>StandaloneServer_port&lt;#&gt;</td>
+            <td>Statistics on the running server, also operations
+            to reset these attributes. Note that the object name
+            includes the client port of the server (name
+            suffix).</td>
+          
+</tr>
+          
+<tr>
+            
+<td>DataTree</td>
+            <td>InMemoryDataTree</td>
+            <td>Statistics on the in memory znode database, also
+            operations to access finer (and more computationally
+            intensive) statistics on the data (such as ephemeral
+            count).</td>
+          
+</tr>
+          
+<tr>
+            
+<td>ServerCnxn</td>
+            <td>&lt;session_id&gt;</td>
+            <td>Statistics on each client connection, also
+            operations on those connections (such as
+            termination). Note the object name is the session id of
+            the connection in hex form.</td>
+          
+</tr>
+    
+</table>
+</div>
+
+
+<p align="right">
+<font size="-2"></font>
+</p>
+</div>
+<!--+
+    |end content
+    +-->
+<div class="clearboth">&nbsp;</div>
+</div>
+<div id="footer">
+<!--+
+    |start bottomstrip
+    +-->
+<div class="lastmodified">
+<script type="text/javascript"><!--
+document.write("Last Published: " + document.lastModified);
+//  --></script>
+</div>
+<div class="copyright">
+        Copyright &copy;
+         2008 <a href="http://www.apache.org/licenses/">The Apache Software Foundation.</a>
+</div>
+<!--+
+    |end bottomstrip
+    +-->
+</div>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/zookeeper/blob/01b6b5e4/doc/r3.1.2/zookeeperJMX.pdf
----------------------------------------------------------------------
diff --git a/doc/r3.1.2/zookeeperJMX.pdf b/doc/r3.1.2/zookeeperJMX.pdf
new file mode 100644
index 0000000..791cd84
--- /dev/null
+++ b/doc/r3.1.2/zookeeperJMX.pdf
@@ -0,0 +1,322 @@
+%PDF-1.3
+%����
+4 0 obj
+<< /Type /Info
+/Producer (FOP 0.20.5) >>
+endobj
+5 0 obj
+<< /Length 523 /Filter [ /ASCII85Decode /FlateDecode ]
+ >>
+stream
+Gb!#X]5GJN&FB?1>=+Is4oHcr'FH%A&/S1bKn2$^,!KI0&:YeZ3Tf[a#b%F=Kg"V0=jPl<#I/J9jM1m2Lf9A%a35d4n0jC`V@].Q?P):I#k:!hoU`J)=)+jp5$Y?8X?QAJj/5)R5s2Gf;(^?rO?Q1,Ik+4e#Bg)H*2<muK[Q;1-e">9`ME=Ze#@\dl+Bu@\N/kFTVSVY#r@0l+r@O#Uhr0i6+?_QFR.5<_gcXYe<-4n5`_IZ:,p\A$9RXf9n+^XU<N1^$bUQUp!PHCQO_]Q)PD+lFS!7<cP3A4f&gpH$mHB&288k-(cq<22KtaU?bBFA\C%0L0A\/.5>Xu<./^EWn9k]`F5h9WD>KA!(_9To$>?/3<N(:gM(#C(SCPn&*00\Ep-.gSZa5=J!!<PErZ+9OThphs&)P)15Bb,(@*":$2uBP<)#4dgN\[R#hs0mKa;2tI%DPskWC)W+d%P]`*4T-!ZSm9^Bt6lof#gg-o6F5G3lfg[e]InsHdfiHUP_i)7q_c.r/`j7~>
+endstream
+endobj
+6 0 obj
+<< /Type /Page
+/Parent 1 0 R
+/MediaBox [ 0 0 612 792 ]
+/Resources 3 0 R
+/Contents 5 0 R
+/Annots 7 0 R
+>>
+endobj
+7 0 obj
+[
+8 0 R
+10 0 R
+12 0 R
+14 0 R
+]
+endobj
+8 0 obj
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 102.0 529.541 134.0 517.541 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A 9 0 R
+/H /I
+>>
+endobj
+10 0 obj
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 102.0 511.341 296.636 499.341 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A 11 0 R
+/H /I
+>>
+endobj
+12 0 obj
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 102.0 493.141 204.992 481.141 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A 13 0 R
+/H /I
+>>
+endobj
+14 0 obj
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 102.0 474.941 253.94 462.941 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A 15 0 R
+/H /I
+>>
+endobj
+16 0 obj
+<< /Length 2468 /Filter [ /ASCII85Decode /FlateDecode ]
+ >>
+stream
+Gat%%=``=e%"?g3i:nVl9LG#eje9`)NROcba^It@G<.6g,r2@-$kFl2Y:k,Q^dD-M1C9BkJ-GYa#@M]GYdhF?%@`iQnZZ;$`bo3((AtFsV$6<Mm[1HC)%V)Smn;EJ10ucGH@PbimZ/mY+62>YipFYC.gT.,mhUnE_p-!g$snG[g1F",1GW[G(7u@$PsO$+=_!O3A%'MX`n$VYX@&uSrMA#I;Pl4uY<nB;L&=um,`eOZ87&0mapS)VX"r\M%sfP]=<4,HVr&IoW>C9:cd._9+MhT`(OM:#*SQ'X6U\Vp!gC#u:3`&Im$VYmglhP7/BoVTDW%!bX6_!g:d?pR?1)9Ug_Y5GDpTk#.#Jmt6\-Jm&p^k8bGR`K@_'=HW\'&Y!m83@(b!YcNR.'P"c),E\fUY)RXoDD%F-QS@mTi52CpY'IH+_j2o'-=Z^oJK60lm;\1a%+Mpt"'d5bo\XM>]%nGJIWqL/'hHCog(_If`I0]SdcbXd:LE7AG_`/21?cX%1A9!6'"`G0U5[l\%*f68^Hp"(Y7!1Z#1M9qP)+tFq]SO6A06OZ]Ih.<J8S[67h_E"":Q0V(^h6#@ADqOQ0?CV*RX[ASM5JD]"as'&aENF[h"j@09E'C=qhe+U@pN]i(;F:VOgDq[ICWnhRD5;]2%gr*[>l+'kG2(Q!HFrXgBHnmT`o*=UVuDtnqF25EM@mP$"LDi?&6:A]r>_lGLhA,!PC$<N+iRAhXiPD^Wm7oRB#!0dYG26)T<)Ua8Fko!rRcu_/dB\Rdd+Eu</FOX]Y=&.[?ULSH(kaqJ%CEH+u;"cHc^7BFr\!5IO*TI;%hLU3#fN0pq4W*Cs(p/\<tm77H/;,,u9mV`e=kcN(aB(b&a&&F&)K"E[?bR@tJMM?`S:G&/KCSSoE5'H?/DcH+Yp0K@0W7&`WmJ\]#IIL.c@%V$,TfIDq"LLG@Q-p2f$PcigYWTCX1pcY;Q%I->dfirb=p3egu%"G1IqkV`^F#*nRL;0
 R`VGGUmGpWU99p"*)Qjkfo7s79+1lqTsj$(u@o2OVUbJO:+r+P-dSZuY3XQb(@ge*V675b_)FC%bs3q??9Fg,NfRm\7@U=Zur,1fHg>h2N*TD@+LFTHm.(6H%8q;+-d%X)seL&"7gBF)R:C"Aa@JMA<NVd3juHFGB<(^7=O=VpOHT*Rg_Z>t)m.Gne?5A_g/qEP`SCOd#<d::-XXj>X>>iu)%AcUl_D-XT\\^IT(Lr6;pJfo1P-pUNu[1#9`B-+Sop/0?i:7.rD"pjhlaL1_'Lirs&A&Ju'GL.A(6:2VU3pF@5M_4WO:1kN>aL44ZMi$"'1L]uBS+USjmSgc/mO]e(tjE*k*Hs6V`N"O*aqUu+G+K7OkbQ0pAAh%lo?SLiZ3^okR7NNN<9MBr0-TlNZ/?%VHQ()U3*QSqT:)0<1S,cakoIGf$(o969&/Q]>PXdP[dl?a2,5/C&TdJ<0rORK#*62Toh*!"i]R_?mhOHA-BJ%<i5r`l9at9[%J\F@&_NcAO]qKD8Ld'/qlP,tEn-$iE;?i^eM6Qb>M#RG`:$rX#OfOl.Zo?<U'/!I>Blu$<9DkGfcf]i_7D\\rZ?,Se=)s8BTo5\^=Vf%7JpnOqaI17\U<.DJ:DGP?L#PP&6/qh>o7sref2WPIA'9#A=Q!nrrB6CT^>g3H8FUIs$Qs*f/oYhX)hgI"[nKYj`o;f8<^JG!F$0iP_=R^J$k,Trs5R[D#_1bpFkCmp;2t'7AjKf2]a@b7m`9@6;.9Cm$>CZ&*Ss!(%2C+cFHe-Z[@22aXuLnd]MQr)eY,*uUFX8tB(@+>A3<#'\rVKTKqArclnXFd((]CaIK&;&#T+uDL#g30kqSQ$RBE;@Sudf:4]Ub<N%#6.oU9B[`btWtCm:E=i_.`_<+V"tQ/Jac:\LkJW:llX'BNoel1qUdA[FXdrXK(O@sjqa0)oFl73Mt/7AtG=`UE3'<7!@e!25MOa`(Bf'+pAaJ3V/1PSLjU&4c3.JjO,
 @3cg/M>Vh*"/aX9-9\YD9VK-k3raY-YV6*>R=_*XEF1TV09pd.@`2bJ#;45s972*gl9Cp)k3*-rB"^rdKMj&>e3$d=IM-5/F^ZacuY/I,]OE$45o?/-A-jf&G*?pcR_RRt%]/0T9NV,F'&sCRm6]UW"05A6T:8WQ/.;ZnoJd*AL_G$6,d=lf%9qe;J<n$'>N5ajK@<8TX*;C/$.U:;o\[qpJMW1S%@HG`G3pC&pZ\FS0k%YsI[j.:\b@cYb@qdU.6@.`?U=1gPB3LFNb^.-97UU6lZ272Xcs4Jt*ReWDM'(=HWb;(YkXWgr;/_&"q53Vho;lLY\!gp<h)&mX/QVUi:>cs^?oGbWpp!!LhA/I?[]P:Y@D6,5GL:eG_g&T]>U/12GIp`FUIpSM<s\btY.DibonlmQTNCO%eL^@=VTnsDD2UbC>;pJ<<LIYkgO/X&9b'"<g3/M-ZKBVqWFPZEar_Op~>
+endstream
+endobj
+17 0 obj
+<< /Type /Page
+/Parent 1 0 R
+/MediaBox [ 0 0 612 792 ]
+/Resources 3 0 R
+/Contents 16 0 R
+/Annots 18 0 R
+>>
+endobj
+18 0 obj
+[
+19 0 R
+20 0 R
+21 0 R
+]
+endobj
+19 0 obj
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 421.956 595.266 527.952 583.266 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A << /URI (http://java.sun.com/javase/technologies/core/mntr-mgmt/javamanagement/)
+/S /URI >>
+/H /I
+>>
+endobj
+20 0 obj
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 127.992 560.866 249.972 548.866 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A << /URI (http://java.sun.com/javase/6/docs/technotes/guides/management/agent.html)
+/S /URI >>
+/H /I
+>>
+endobj
+21 0 obj
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 357.972 342.598 397.968 330.598 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A << /URI (http://java.sun.com/developer/technicalArticles/J2SE/jconsole.html)
+/S /URI >>
+/H /I
+>>
+endobj
+22 0 obj
+<< /Length 2172 /Filter [ /ASCII85Decode /FlateDecode ]
+ >>
+stream
+GauHNCN%rc'`IH,+`(L(TOpTSe-">-ZthJ!9=I*D@G!=DZ:*I4AC6V%VA]*f7m0GsPUP,9=sT1LP5!gScTRVZr-Yns\Q\p=JC^%dI('At?sBf"o&#g6f1Ubt[W6,b(N1,9=,ZA`@R5eL@C97jod$%,LK63n35Dr,[G"j"4UJIib$$k!.Sk*)8o[r#Ea%g3)AbYdGg!PjK=H@.S;*H=!8StjR>5@jUe`4\aI8"P3%;^e8gP#!&*!Es(.FC'YH6W`eLM](gP7To#6b*Oi@J@6c.JYQ*bZ$Ilp$'.EYl*+^+T"%m?]&1b;l`G=7V+sQ:sb9ErOV8YJncbN_2#AAXJglleNr'1A4)q<H$d$+BF2+qnPR:@iPTi&u4[*UDoZN/F$\DE5o<eG2809fX!jt6CWO)`:nfL2*S-c8KgAt!@q`GQ=5qKIt..f(NHciP4PB#(X51eE?-P(U>ujq5tj&qm$o-F,RR247gcJ6<m^f\ft/VgFI-"_YAkM9mNLMtU%>p/EL=%jhH`^@)'Uh$7j^q*E8YW2Ea9AY&'c>2nM(q_'[8fg3Qq+Q.tO4,)u)>ka&Ci#eVPXhE=!aMnIPq*iaDg,+sm5!Z=41%5CEAu3Sk:HnX':Zh0Pk!g\'+W*Fq.'EMsh[E9R-&>0u]).g3$obGPo'!:nm=C9(qb2$]VgVOB;tRkYDo(hp'=:5GMQ83iD9/KN0@B_U!P"-#oms'rR:3Zug_n4toS&kHM;Lb\I($?e[D^3"<$j9o-ZH#dSu==MOnM_@47]rjaNgej=bjuN.iGWcRN.s1dcg7<]&_O\Lq"BW;^"CTjEhB#gKgoHN6&Qf-pT(<a&MbLt*3ct3B`+RH0latpK\kE$b`*[rgN=%-M75[p+=aa`B`"ZB,OZKGf3K#jrI)jBV@Nd"smD-t@6aN]MK<"#C>(4(5(B_E&h3ZR(Tp`;&Q[G^Jm7@\'`-%HEi[.9Y77g"nn]p6>60u-:RQ"I=<b5E*jab3g,WsZ#Zb
 chT![1$9/_f*_,icVXF:>K/p('amKf[(sTZW_lMl_`Z>r1a5`-u^]Cm%S<=(<C;YbN*pm("<5m67jFIQL*C/sLsG=I*rkRa#;WO+C/**`@!<-r5t,--@WTqBe$hPin+2h<B\je5?ArE<Q_g);hF-Teuf4*Skf9<L;b:C]oo-%5/,/RDOjEimc'@!3#V\!@B\W#Tp__?5P=M`H*qucoI4fRN.4.PdMk_TuYu3?5$+?q,P>t.fVbhlB96BEhY^0#KojDeRf@.1,]]_mO[$4")$o+b(Sd\%:^d?lWH9N=qj;c!3L^2@FaVLb(+=:r&aiuf?b[`Q7g`15,[&1'N)mQ[bJ%>F_;[X%43nAFlRU"ML8Wik*C`Vc!R>))Vb(g`(,TE?Ec$k)&\'akCV2sW$+b_$.>NCQ`Wo5-H<:8V@krQP"&$>-XM[f79)G6.^n5mp*s;p5a&T?(#:83]-Q*%>#_H&&5NR-,#(;_Cs/B9GI;@0p+`Q.9XPFTKtnteL?8;OkYSd$a0C&3kPeEQg5&:he"[nK]MImckdCLb[d'd&1nN(+6%YGShkYKhmNs?UOup_SHd4q3f%7XPK\E,K]N4GC(<!e$Gr.!l-G\gkjjH\^0p[&:2Qb-H"%OXF)K>=@EbVVn(sUaP60HJf5)\`^*6$tCC@'I+DSjrcDBh`:`_O(B$J<'.ld]cUWgp**FCBi6R4%;FO5l[K.BYO$1:`PA[nV7M'n(=QHCh[j]KM)q)7Bm;/N454.$!UA%1?m5]NOS?9_05r/ZoTR"kj,Y$`Lj>q5@iL'*\\gRKemS+/S4SXR67MP3+oiC.[Inf^G#E2o';6"kd3Ua'6Eb/EX<mWBsLj"R#u#/\tg]m8-#Rf+K&o"K-->R^2giVI0Od?@abh'cEd'kG$E^L"Yso"EdaL0S%2'>%3HRD"=6?pAB,O_6L8V/VLE7GKDRX$SXi,g_QROHtHTm3K$8^(nbM+C1Dc>pg4pA`;X7*#)Kq4C(/]QNo^@
 jpAG=/,/?jI0erIkK'.^#F.N#_'[j&57[C+Go70?bDfjXLj(J$c>\/qNja4,;2rU&4$mEaEmZfirK&^8`^K;id">6s,bT2J`;W"dt6_8+<;F^*p!l^^?gV11%agM$4&4Z6hHaYBlGs0>%5%\f*98WAgA:E%:-1Y$UAY';*V"QI[b#*o~>
+endstream
+endobj
+23 0 obj
+<< /Type /Page
+/Parent 1 0 R
+/MediaBox [ 0 0 612 792 ]
+/Resources 3 0 R
+/Contents 22 0 R
+>>
+endobj
+24 0 obj
+<< /Length 1910 /Filter [ /ASCII85Decode /FlateDecode ]
+ >>
+stream
+Gau0F>Ap9+'Roe[5jCud,qO,t;QVEcG.Ub`8hZ&DW]&Cb^c84.K*sY5qWg3F$k-_V1NJZ"(;sitcM9H_4.#_S^&!2kqI]u%8,i?n'mZtFpqG)30bN$h3:pLK3$i\g<kkbSVXfD`'E/J\,ijLm\Srb]\Y7&npo;FC^gC>mUQl<6/k60Z>7*Xr5e"@3*[8c2NB0sDUX-Qu^]=Lmok*;C7XP%L3"Zp<&EG&!XEVs^(SB\J?C-m_3e'0U04U4h[YAM-A/6P.]9+tVGQB7M%)g35r5`d?XsdZ>+@>dn1gMjEOgW0H)Ug!FOq==DpY=;=SQ0fu<0tlf$pq\pU0tl]]qrV@VL5U`OR3TBg)i]6$ekRZ@n!EaORadh&6JL=pf!\aKmjuZ/aUt<p9`n<(/.T3/sK(nKN?6.RuGa8\@oY5=fO[hE3)-,\Nu+Q8[7"llK6GQcX0WcC<ERCM;DV)\+INYhT?%/!KO1$F\&ruM3[ck&d:GNFMFY6%TKT7EFAJ<V5mrBOriTB=A]cm9<)>?i#]L@S)n?U("8&bE;`:(r'Vu`L3L"P&e@I@Rm2.oE14r"L$R7;Y6,Alo<^^q)EQ`q>jJ$l]c_81=l3>od7$[RKP?>L7f@sV@Je-;fkHb]!G.Blca+9fU507uBc14\k'b4dSk&"r/H+un]A#TWaJJ(Q8h?)]FW!%/R0DlLZ-"[jSl&PS!u$6W-'Ej7RKuZY0R/)%L8kWYh\g`'J^iGK)R6J.W3W<hT"cS8e?n"BXO3qS6+QXNU8B;O\9Re<T<-id7q%H3Mg&oNXA8-53N+-il8c.QV)smm_,L.%8U3t$PoNnj43=2b4sL<J[[NH8K+PXKnf@'e/k3?6@3%SnMY>u_iVN8&`iQ`iBq-VD<WJk+%Ajubkr^E$IB.Xk&Xd=^1]`t/(D3Xl[KX*R#qftl>^Msg3mMd-o.RSf%l`;Ai?fTuGtM[_S/4lPWG;4Y*WE9lfk6.8qkr&Faq[U85#a@=jGs2R[?
 P_5OHud9M<;d+f0j%sAl^#-=;iL'JKNrQQPctUR>*cRTHP5U0Z]3c-1Mp7B[RD/Mmp:)dL4;2:mrON$b-Fod.P#TCqOirX=iPcTVYe#Oto`45aLp!H,098l%^mJL^kRGR_Nrdf/$pSC\.<EHZ.@a1!-JnJ.PA`(E?30-UKXN_XGs,bGH#S](<=j%H?lQ._7<%QuJ(%"F]/M%aF)SAYch*S&m&[nW\jAoV=/3279Fn4A2i+VSU=h:qV>*\6)bi\a)%BMpL"';:b3NR42BXE*@;H1[QNt\1W'T\B6hKah2=?%ub)d;(]9\[TD0d$AF$=\hIHn>1EX@8Lmu*<2fHN)WL-Qe/8nNFdYB4lDBn2<I)UW$-QrG:rIduf@Q]IaU]g`<K5-V?eu/$*1*G3dg562bu&?4LA=Z<O-Q[SRn`T=9HU,o3V!]E:4C3VF@7SK?YJ<<)iHYd8ElsG*[0$[h=@r(#*MD13mUE/M'4cFV5$K`(@t,"%6TOgFIp1a&ku<&5ngGIM^^7;-'BOR1T%NM,b3ePVmJ.8H3S\l.4ktG*o=Aud_`fg_-W_]:3gm@2'tFGj(:?D";-lDh1R/8`>`*YoFaqdiqKTd1@_^PAW`J-ZP-K9L^e?<R8O4.CuT.2bp"g3B.L5TdaVjTe7W*'iX'nM^i)!uKF%=Ro842W#[pL^Y<29-!1^&Ghe_9Y4\l1[.o&2mLg9De`"TlD`"P2Ea\`ei60'4TS,i%`&#5mP]%JWRUVMZ@Cf?bE[,f@gnH/6qJbD_MhRFjFA$_pD#sS`M8.]YUF9hd`5LRq^=OFYY%Y>Y:!#'MM7X1ik'8M2I+DA7\=R9D;luB'_(&*di"^]L_LV'tZ2]q`U5*c#W@T3:GX3(>s:QoMQfns-daH]0IS?4mddC/R5Ot)mmIiSWmV>~>
+endstream
+endobj
+25 0 obj
+<< /Type /Page
+/Parent 1 0 R
+/MediaBox [ 0 0 612 792 ]
+/Resources 3 0 R
+/Contents 24 0 R
+>>
+endobj
+27 0 obj
+<<
+ /Title (\376\377\0\61\0\40\0\112\0\115\0\130)
+ /Parent 26 0 R
+ /Next 28 0 R
+ /A 9 0 R
+>> endobj
+28 0 obj
+<<
+ /Title (\376\377\0\62\0\40\0\123\0\164\0\141\0\162\0\164\0\151\0\156\0\147\0\40\0\132\0\157\0\157\0\113\0\145\0\145\0\160\0\145\0\162\0\40\0\167\0\151\0\164\0\150\0\40\0\112\0\115\0\130\0\40\0\145\0\156\0\141\0\142\0\154\0\145\0\144)
+ /Parent 26 0 R
+ /Prev 27 0 R
+ /Next 29 0 R
+ /A 11 0 R
+>> endobj
+29 0 obj
+<<
+ /Title (\376\377\0\63\0\40\0\122\0\165\0\156\0\40\0\141\0\40\0\112\0\115\0\130\0\40\0\143\0\157\0\156\0\163\0\157\0\154\0\145)
+ /Parent 26 0 R
+ /Prev 28 0 R
+ /Next 30 0 R
+ /A 13 0 R
+>> endobj
+30 0 obj
+<<
+ /Title (\376\377\0\64\0\40\0\132\0\157\0\157\0\113\0\145\0\145\0\160\0\145\0\162\0\40\0\115\0\102\0\145\0\141\0\156\0\40\0\122\0\145\0\146\0\145\0\162\0\145\0\156\0\143\0\145)
+ /Parent 26 0 R
+ /Prev 29 0 R
+ /A 15 0 R
+>> endobj
+31 0 obj
+<< /Type /Font
+/Subtype /Type1
+/Name /F3
+/BaseFont /Helvetica-Bold
+/Encoding /WinAnsiEncoding >>
+endobj
+32 0 obj
+<< /Type /Font
+/Subtype /Type1
+/Name /F5
+/BaseFont /Times-Roman
+/Encoding /WinAnsiEncoding >>
+endobj
+33 0 obj
+<< /Type /Font
+/Subtype /Type1
+/Name /F6
+/BaseFont /Times-Italic
+/Encoding /WinAnsiEncoding >>
+endobj
+34 0 obj
+<< /Type /Font
+/Subtype /Type1
+/Name /F1
+/BaseFont /Helvetica
+/Encoding /WinAnsiEncoding >>
+endobj
+35 0 obj
+<< /Type /Font
+/Subtype /Type1
+/Name /F2
+/BaseFont /Helvetica-Oblique
+/Encoding /WinAnsiEncoding >>
+endobj
+36 0 obj
+<< /Type /Font
+/Subtype /Type1
+/Name /F7
+/BaseFont /Times-Bold
+/Encoding /WinAnsiEncoding >>
+endobj
+1 0 obj
+<< /Type /Pages
+/Count 4
+/Kids [6 0 R 17 0 R 23 0 R 25 0 R ] >>
+endobj
+2 0 obj
+<< /Type /Catalog
+/Pages 1 0 R
+ /Outlines 26 0 R
+ /PageMode /UseOutlines
+ >>
+endobj
+3 0 obj
+<< 
+/Font << /F3 31 0 R /F5 32 0 R /F1 34 0 R /F6 33 0 R /F2 35 0 R /F7 36 0 R >> 
+/ProcSet [ /PDF /ImageC /Text ] >> 
+endobj
+9 0 obj
+<<
+/S /GoTo
+/D [17 0 R /XYZ 85.0 659.0 null]
+>>
+endobj
+11 0 obj
+<<
+/S /GoTo
+/D [17 0 R /XYZ 85.0 498.266 null]
+>>
+endobj
+13 0 obj
+<<
+/S /GoTo
+/D [17 0 R /XYZ 85.0 406.332 null]
+>>
+endobj
+15 0 obj
+<<
+/S /GoTo
+/D [23 0 R /XYZ 85.0 624.6 null]
+>>
+endobj
+26 0 obj
+<<
+ /First 27 0 R
+ /Last 30 0 R
+>> endobj
+xref
+0 37
+0000000000 65535 f 
+0000010806 00000 n 
+0000010885 00000 n 
+0000010977 00000 n 
+0000000015 00000 n 
+0000000071 00000 n 
+0000000685 00000 n 
+0000000805 00000 n 
+0000000851 00000 n 
+0000011111 00000 n 
+0000000984 00000 n 
+0000011174 00000 n 
+0000001121 00000 n 
+0000011240 00000 n 
+0000001258 00000 n 
+0000011306 00000 n 
+0000001394 00000 n 
+0000003955 00000 n 
+0000004078 00000 n 
+0000004119 00000 n 
+0000004343 00000 n 
+0000004569 00000 n 
+0000004789 00000 n 
+0000007054 00000 n 
+0000007162 00000 n 
+0000009165 00000 n 
+0000011370 00000 n 
+0000009273 00000 n 
+0000009382 00000 n 
+0000009694 00000 n 
+0000009899 00000 n 
+0000010139 00000 n 
+0000010252 00000 n 
+0000010362 00000 n 
+0000010473 00000 n 
+0000010581 00000 n 
+0000010697 00000 n 
+trailer
+<<
+/Size 37
+/Root 2 0 R
+/Info 4 0 R
+>>
+startxref
+11421
+%%EOF

http://git-wip-us.apache.org/repos/asf/zookeeper/blob/01b6b5e4/doc/r3.1.2/zookeeperOtherInfo.html
----------------------------------------------------------------------
diff --git a/doc/r3.1.2/zookeeperOtherInfo.html b/doc/r3.1.2/zookeeperOtherInfo.html
new file mode 100644
index 0000000..24b594c
--- /dev/null
+++ b/doc/r3.1.2/zookeeperOtherInfo.html
@@ -0,0 +1,230 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta content="Apache Forrest" name="Generator">
+<meta name="Forrest-version" content="0.8">
+<meta name="Forrest-skin-name" content="pelt">
+<title>ZooKeeper</title>
+<link type="text/css" href="skin/basic.css" rel="stylesheet">
+<link media="screen" type="text/css" href="skin/screen.css" rel="stylesheet">
+<link media="print" type="text/css" href="skin/print.css" rel="stylesheet">
+<link type="text/css" href="skin/profile.css" rel="stylesheet">
+<script src="skin/getBlank.js" language="javascript" type="text/javascript"></script><script src="skin/getMenu.js" language="javascript" type="text/javascript"></script><script src="skin/fontsize.js" language="javascript" type="text/javascript"></script>
+<link rel="shortcut icon" href="images/favicon.ico">
+</head>
+<body onload="init()">
+<script type="text/javascript">ndeSetTextSize();</script>
+<div id="top">
+<!--+
+    |breadtrail
+    +-->
+<div class="breadtrail">
+<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://hadoop.apache.org/">Hadoop</a> &gt; <a href="http://hadoop.apache.org/zookeeper/">ZooKeeper</a><script src="skin/breadcrumbs.js" language="JavaScript" type="text/javascript"></script>
+</div>
+<!--+
+    |header
+    +-->
+<div class="header">
+<!--+
+    |start group logo
+    +-->
+<div class="grouplogo">
+<a href="http://hadoop.apache.org/"><img class="logoImage" alt="Hadoop" src="images/hadoop-logo.jpg" title="Apache Hadoop"></a>
+</div>
+<!--+
+    |end group logo
+    +-->
+<!--+
+    |start Project Logo
+    +-->
+<div class="projectlogo">
+<a href="http://hadoop.apache.org/zookeeper/"><img class="logoImage" alt="ZooKeeper" src="images/zookeeper_small.gif" title="The Hadoop database"></a>
+</div>
+<!--+
+    |end Project Logo
+    +-->
+<!--+
+    |start Search
+    +-->
+<div class="searchbox">
+<form action="http://www.google.com/search" method="get" class="roundtopsmall">
+<input value="hadoop.apache.org" name="sitesearch" type="hidden"><input onFocus="getBlank (this, 'Search the site with google');" size="25" name="q" id="query" type="text" value="Search the site with google">&nbsp; 
+                    <input name="Search" value="Search" type="submit">
+</form>
+</div>
+<!--+
+    |end search
+    +-->
+<!--+
+    |start Tabs
+    +-->
+<ul id="tabs">
+<li>
+<a class="unselected" href="http://hadoop.apache.org/zookeeper/">Project</a>
+</li>
+<li>
+<a class="unselected" href="http://wiki.apache.org/hadoop/ZooKeeper">Wiki</a>
+</li>
+<li class="current">
+<a class="selected" href="index.html">ZooKeeper Documentation</a>
+</li>
+</ul>
+<!--+
+    |end Tabs
+    +-->
+</div>
+</div>
+<div id="main">
+<div id="publishedStrip">
+<!--+
+    |start Subtabs
+    +-->
+<div id="level2tabs"></div>
+<!--+
+    |end Endtabs
+    +-->
+<script type="text/javascript"><!--
+document.write("Last Published: " + document.lastModified);
+//  --></script>
+</div>
+<!--+
+    |breadtrail
+    +-->
+<div class="breadtrail">
+
+             &nbsp;
+           </div>
+<!--+
+    |start Menu, mainarea
+    +-->
+<!--+
+    |start Menu
+    +-->
+<div id="menu">
+<div onclick="SwitchMenu('menu_1.1', 'skin/')" id="menu_1.1Title" class="menutitle">Overview</div>
+<div id="menu_1.1" class="menuitemgroup">
+<div class="menuitem">
+<a href="index.html">Welcome</a>
+</div>
+<div class="menuitem">
+<a href="zookeeperOver.html">Overview</a>
+</div>
+<div class="menuitem">
+<a href="zookeeperStarted.html">Getting Started</a>
+</div>
+<div class="menuitem">
+<a href="releasenotes.html">Release Notes</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2', 'skin/')" id="menu_1.2Title" class="menutitle">Developer</div>
+<div id="menu_1.2" class="menuitemgroup">
+<div class="menuitem">
+<a href="api/index.html">API Docs</a>
+</div>
+<div class="menuitem">
+<a href="zookeeperProgrammers.html">Programmer's Guide</a>
+</div>
+<div class="menuitem">
+<a href="javaExample.html">Java Example</a>
+</div>
+<div class="menuitem">
+<a href="zookeeperTutorial.html">Barrier and Queue Tutorial</a>
+</div>
+<div class="menuitem">
+<a href="recipes.html">Recipes</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.3', 'skin/')" id="menu_1.3Title" class="menutitle">Admin &amp; Ops</div>
+<div id="menu_1.3" class="menuitemgroup">
+<div class="menuitem">
+<a href="zookeeperAdmin.html">Administrator's Guide</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.4', 'skin/')" id="menu_1.4Title" class="menutitle">Contributor</div>
+<div id="menu_1.4" class="menuitemgroup">
+<div class="menuitem">
+<a href="zookeeperInternals.html">ZooKeeper Internals</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_selected_1.5', 'skin/')" id="menu_selected_1.5Title" class="menutitle" style="background-image: url('skin/images/chapter_open.gif');">Informal Documentation</div>
+<div id="menu_selected_1.5" class="selectedmenuitemgroup" style="display: block;">
+<div class="menuitem">
+<a href="http://wiki.apache.org/hadoop/ZooKeeper">Wiki</a>
+</div>
+<div class="menuitem">
+<a href="http://wiki.apache.org/hadoop/ZooKeeper/FAQ">FAQ</a>
+</div>
+<div class="menuitem">
+<a href="http://hadoop.apache.org/zookeeper/mailing_lists.html">Mailing Lists</a>
+</div>
+<div class="menupage">
+<div class="menupagetitle">Other Info</div>
+</div>
+</div>
+<div id="credit"></div>
+<div id="roundbottom">
+<img style="display: none" class="corner" height="15" width="15" alt="" src="skin/images/rc-b-l-15-1body-2menu-3menu.png"></div>
+<!--+
+  |alternative credits
+  +-->
+<div id="credit2"></div>
+</div>
+<!--+
+    |end Menu
+    +-->
+<!--+
+    |start content
+    +-->
+<div id="content">
+<div title="Portable Document Format" class="pdflink">
+<a class="dida" href="zookeeperOtherInfo.pdf"><img alt="PDF -icon" src="skin/images/pdfdoc.gif" class="skin"><br>
+        PDF</a>
+</div>
+<h1>ZooKeeper</h1>
+<div id="minitoc-area">
+<ul class="minitoc">
+<li>
+<a href="#ch_placeholder">Other Info</a>
+</li>
+</ul>
+</div>
+  
+
+  
+
+  
+<a name="N10009"></a><a name="ch_placeholder"></a>
+<h2 class="h3">Other Info</h2>
+<div class="section">
+<p> currently empty </p>
+</div>
+
+<p align="right">
+<font size="-2"></font>
+</p>
+</div>
+<!--+
+    |end content
+    +-->
+<div class="clearboth">&nbsp;</div>
+</div>
+<div id="footer">
+<!--+
+    |start bottomstrip
+    +-->
+<div class="lastmodified">
+<script type="text/javascript"><!--
+document.write("Last Published: " + document.lastModified);
+//  --></script>
+</div>
+<div class="copyright">
+        Copyright &copy;
+         2008 <a href="http://www.apache.org/licenses/">The Apache Software Foundation.</a>
+</div>
+<!--+
+    |end bottomstrip
+    +-->
+</div>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/zookeeper/blob/01b6b5e4/doc/r3.1.2/zookeeperOtherInfo.pdf
----------------------------------------------------------------------
diff --git a/doc/r3.1.2/zookeeperOtherInfo.pdf b/doc/r3.1.2/zookeeperOtherInfo.pdf
new file mode 100644
index 0000000..bbefa13
--- /dev/null
+++ b/doc/r3.1.2/zookeeperOtherInfo.pdf
@@ -0,0 +1,151 @@
+%PDF-1.3
+%����
+4 0 obj
+<< /Type /Info
+/Producer (FOP 0.20.5) >>
+endobj
+5 0 obj
+<< /Length 376 /Filter [ /ASCII85Decode /FlateDecode ]
+ >>
+stream
+Gau`Mb>,r/&A7ljp=L?eeuq2r'N#/r+G<Ne%Vb2bPtG<0!:&H?4/G[aGO0rFp<;0q4#QAF-:'%*0Jt)i</b5(37))S./[5J#\BHWH%VI*ZZGllDJb`U/"!qV:^m1VO\R4"ngI].:[AM"qMVL5''BAQP`(Mqi'M+,20!co=0Cq-g[@md)E=;bE>%,)E0Ns*L3uZ2^Z[t57XsV@TC:sfgU;83KJ!2\3;b.*./e[Q3!QrKlod0V'Tl=KR0FD?9dhi?(2EQaVS:I;<%5[hA;@CocWk6:;@S=JSIJ#tG2%GS?8]DL7$d`BF.mkIJgc]$1cBrdD-;kgPH4SaZ5]@Ygdet-qmC3Z,hm,Z#]K0$f^<SMBpT[3Ifn6SQt$~>
+endstream
+endobj
+6 0 obj
+<< /Type /Page
+/Parent 1 0 R
+/MediaBox [ 0 0 612 792 ]
+/Resources 3 0 R
+/Contents 5 0 R
+/Annots 7 0 R
+>>
+endobj
+7 0 obj
+[
+8 0 R
+]
+endobj
+8 0 obj
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 102.0 529.541 160.316 517.541 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A 9 0 R
+/H /I
+>>
+endobj
+10 0 obj
+<< /Length 385 /Filter [ /ASCII85Decode /FlateDecode ]
+ >>
+stream
+Gar'$0i,\@&;>?.MAt<DY0X@_H_cHA?iWTl!^gXl[Se%L2[/m3@jaPPaO<5AhtPtZ$8Ps<5X?8%'k+<m#V8(@_nmr@)9".^iWu_$Uf3Y#)<[4(G%Z5dGBN#En.*E#\LGU40Sr9.Uc6BueThY!gRW>[*5$t9nk9g]0*-@Es2tn16M9R8fm?r4LJ'tfA(+`gk'Y9:;_b]l-4GP.KqSN+^!4^1#A]fr4CsMK4!6:IPoO6gb%47LrMIO5"<!^cSUh+7e,X_C[l-]TMAhb$R.*s>AAa\3k"<_BX\h]*EX>p&XOp`_]B8,IgKiS0kudb@92(4!VNWKQ2MnK3>`\Q9X4m$jO![MDXuBq(G;UCh3ujFIfVak?-gSP6L8N`(!1BR4[K~>
+endstream
+endobj
+11 0 obj
+<< /Type /Page
+/Parent 1 0 R
+/MediaBox [ 0 0 612 792 ]
+/Resources 3 0 R
+/Contents 10 0 R
+>>
+endobj
+13 0 obj
+<<
+ /Title (\376\377\0\61\0\40\0\117\0\164\0\150\0\145\0\162\0\40\0\111\0\156\0\146\0\157)
+ /Parent 12 0 R
+ /A 9 0 R
+>> endobj
+14 0 obj
+<< /Type /Font
+/Subtype /Type1
+/Name /F3
+/BaseFont /Helvetica-Bold
+/Encoding /WinAnsiEncoding >>
+endobj
+15 0 obj
+<< /Type /Font
+/Subtype /Type1
+/Name /F5
+/BaseFont /Times-Roman
+/Encoding /WinAnsiEncoding >>
+endobj
+16 0 obj
+<< /Type /Font
+/Subtype /Type1
+/Name /F1
+/BaseFont /Helvetica
+/Encoding /WinAnsiEncoding >>
+endobj
+17 0 obj
+<< /Type /Font
+/Subtype /Type1
+/Name /F2
+/BaseFont /Helvetica-Oblique
+/Encoding /WinAnsiEncoding >>
+endobj
+18 0 obj
+<< /Type /Font
+/Subtype /Type1
+/Name /F7
+/BaseFont /Times-Bold
+/Encoding /WinAnsiEncoding >>
+endobj
+1 0 obj
+<< /Type /Pages
+/Count 2
+/Kids [6 0 R 11 0 R ] >>
+endobj
+2 0 obj
+<< /Type /Catalog
+/Pages 1 0 R
+ /Outlines 12 0 R
+ /PageMode /UseOutlines
+ >>
+endobj
+3 0 obj
+<< 
+/Font << /F3 14 0 R /F5 15 0 R /F1 16 0 R /F2 17 0 R /F7 18 0 R >> 
+/ProcSet [ /PDF /ImageC /Text ] >> 
+endobj
+9 0 obj
+<<
+/S /GoTo
+/D [11 0 R /XYZ 85.0 659.0 null]
+>>
+endobj
+12 0 obj
+<<
+ /First 13 0 R
+ /Last 13 0 R
+>> endobj
+xref
+0 19
+0000000000 65535 f 
+0000002095 00000 n 
+0000002160 00000 n 
+0000002252 00000 n 
+0000000015 00000 n 
+0000000071 00000 n 
+0000000538 00000 n 
+0000000658 00000 n 
+0000000683 00000 n 
+0000002375 00000 n 
+0000000818 00000 n 
+0000001295 00000 n 
+0000002438 00000 n 
+0000001403 00000 n 
+0000001539 00000 n 
+0000001652 00000 n 
+0000001762 00000 n 
+0000001870 00000 n 
+0000001986 00000 n 
+trailer
+<<
+/Size 19
+/Root 2 0 R
+/Info 4 0 R
+>>
+startxref
+2489
+%%EOF

http://git-wip-us.apache.org/repos/asf/zookeeper/blob/01b6b5e4/doc/r3.1.2/zookeeperOver.html
----------------------------------------------------------------------
diff --git a/doc/r3.1.2/zookeeperOver.html b/doc/r3.1.2/zookeeperOver.html
new file mode 100644
index 0000000..9e50018
--- /dev/null
+++ b/doc/r3.1.2/zookeeperOver.html
@@ -0,0 +1,666 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta content="Apache Forrest" name="Generator">
+<meta name="Forrest-version" content="0.8">
+<meta name="Forrest-skin-name" content="pelt">
+<title>ZooKeeper</title>
+<link type="text/css" href="skin/basic.css" rel="stylesheet">
+<link media="screen" type="text/css" href="skin/screen.css" rel="stylesheet">
+<link media="print" type="text/css" href="skin/print.css" rel="stylesheet">
+<link type="text/css" href="skin/profile.css" rel="stylesheet">
+<script src="skin/getBlank.js" language="javascript" type="text/javascript"></script><script src="skin/getMenu.js" language="javascript" type="text/javascript"></script><script src="skin/fontsize.js" language="javascript" type="text/javascript"></script>
+<link rel="shortcut icon" href="images/favicon.ico">
+</head>
+<body onload="init()">
+<script type="text/javascript">ndeSetTextSize();</script>
+<div id="top">
+<!--+
+    |breadtrail
+    +-->
+<div class="breadtrail">
+<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://hadoop.apache.org/">Hadoop</a> &gt; <a href="http://hadoop.apache.org/zookeeper/">ZooKeeper</a><script src="skin/breadcrumbs.js" language="JavaScript" type="text/javascript"></script>
+</div>
+<!--+
+    |header
+    +-->
+<div class="header">
+<!--+
+    |start group logo
+    +-->
+<div class="grouplogo">
+<a href="http://hadoop.apache.org/"><img class="logoImage" alt="Hadoop" src="images/hadoop-logo.jpg" title="Apache Hadoop"></a>
+</div>
+<!--+
+    |end group logo
+    +-->
+<!--+
+    |start Project Logo
+    +-->
+<div class="projectlogo">
+<a href="http://hadoop.apache.org/zookeeper/"><img class="logoImage" alt="ZooKeeper" src="images/zookeeper_small.gif" title="ZooKeeper: distributed coordination"></a>
+</div>
+<!--+
+    |end Project Logo
+    +-->
+<!--+
+    |start Search
+    +-->
+<div class="searchbox">
+<form action="http://www.google.com/search" method="get" class="roundtopsmall">
+<input value="hadoop.apache.org" name="sitesearch" type="hidden"><input onFocus="getBlank (this, 'Search the site with google');" size="25" name="q" id="query" type="text" value="Search the site with google">&nbsp; 
+                    <input name="Search" value="Search" type="submit">
+</form>
+</div>
+<!--+
+    |end search
+    +-->
+<!--+
+    |start Tabs
+    +-->
+<ul id="tabs">
+<li>
+<a class="unselected" href="http://hadoop.apache.org/zookeeper/">Project</a>
+</li>
+<li>
+<a class="unselected" href="http://wiki.apache.org/hadoop/ZooKeeper">Wiki</a>
+</li>
+<li class="current">
+<a class="selected" href="index.html">ZooKeeper 3.1 Documentation</a>
+</li>
+</ul>
+<!--+
+    |end Tabs
+    +-->
+</div>
+</div>
+<div id="main">
+<div id="publishedStrip">
+<!--+
+    |start Subtabs
+    +-->
+<div id="level2tabs"></div>
+<!--+
+    |end Endtabs
+    +-->
+<script type="text/javascript"><!--
+document.write("Last Published: " + document.lastModified);
+//  --></script>
+</div>
+<!--+
+    |breadtrail
+    +-->
+<div class="breadtrail">
+
+             &nbsp;
+           </div>
+<!--+
+    |start Menu, mainarea
+    +-->
+<!--+
+    |start Menu
+    +-->
+<div id="menu">
+<div onclick="SwitchMenu('menu_selected_1.1', 'skin/')" id="menu_selected_1.1Title" class="menutitle" style="background-image: url('skin/images/chapter_open.gif');">Overview</div>
+<div id="menu_selected_1.1" class="selectedmenuitemgroup" style="display: block;">
+<div class="menuitem">
+<a href="index.html">Welcome</a>
+</div>
+<div class="menupage">
+<div class="menupagetitle">Overview</div>
+</div>
+<div class="menuitem">
+<a href="zookeeperStarted.html">Getting Started</a>
+</div>
+<div class="menuitem">
+<a href="releasenotes.html">Release Notes</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2', 'skin/')" id="menu_1.2Title" class="menutitle">Developer</div>
+<div id="menu_1.2" class="menuitemgroup">
+<div class="menuitem">
+<a href="api/index.html">API Docs</a>
+</div>
+<div class="menuitem">
+<a href="zookeeperProgrammers.html">Programmer's Guide</a>
+</div>
+<div class="menuitem">
+<a href="javaExample.html">Java Example</a>
+</div>
+<div class="menuitem">
+<a href="zookeeperTutorial.html">Barrier and Queue Tutorial</a>
+</div>
+<div class="menuitem">
+<a href="recipes.html">Recipes</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.3', 'skin/')" id="menu_1.3Title" class="menutitle">Admin &amp; Ops</div>
+<div id="menu_1.3" class="menuitemgroup">
+<div class="menuitem">
+<a href="zookeeperAdmin.html">Administrator's Guide</a>
+</div>
+<div class="menuitem">
+<a href="zookeeperQuotas.html">Quota Guide</a>
+</div>
+<div class="menuitem">
+<a href="zookeeperJMX.html">JMX</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.4', 'skin/')" id="menu_1.4Title" class="menutitle">Contributor</div>
+<div id="menu_1.4" class="menuitemgroup">
+<div class="menuitem">
+<a href="zookeeperInternals.html">ZooKeeper Internals</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.5', 'skin/')" id="menu_1.5Title" class="menutitle">Miscellaneous</div>
+<div id="menu_1.5" class="menuitemgroup">
+<div class="menuitem">
+<a href="http://wiki.apache.org/hadoop/ZooKeeper">Wiki</a>
+</div>
+<div class="menuitem">
+<a href="http://wiki.apache.org/hadoop/ZooKeeper/FAQ">FAQ</a>
+</div>
+<div class="menuitem">
+<a href="http://hadoop.apache.org/zookeeper/mailing_lists.html">Mailing Lists</a>
+</div>
+</div>
+<div id="credit"></div>
+<div id="roundbottom">
+<img style="display: none" class="corner" height="15" width="15" alt="" src="skin/images/rc-b-l-15-1body-2menu-3menu.png"></div>
+<!--+
+  |alternative credits
+  +-->
+<div id="credit2"></div>
+</div>
+<!--+
+    |end Menu
+    +-->
+<!--+
+    |start content
+    +-->
+<div id="content">
+<div title="Portable Document Format" class="pdflink">
+<a class="dida" href="zookeeperOver.pdf"><img alt="PDF -icon" src="skin/images/pdfdoc.gif" class="skin"><br>
+        PDF</a>
+</div>
+<h1>ZooKeeper</h1>
+<div id="minitoc-area">
+<ul class="minitoc">
+<li>
+<a href="#ch_DesignOverview">ZooKeeper: A Distributed Coordination Service for Distributed
+    Applications</a>
+<ul class="minitoc">
+<li>
+<a href="#sc_designGoals">Design Goals</a>
+</li>
+<li>
+<a href="#sc_dataModelNameSpace">Data model and the hierarchical namespace</a>
+</li>
+<li>
+<a href="#Nodes+and+ephemeral+nodes">Nodes and ephemeral nodes</a>
+</li>
+<li>
+<a href="#Conditional+updates+and+watches">Conditional updates and watches</a>
+</li>
+<li>
+<a href="#Guarantees">Guarantees</a>
+</li>
+<li>
+<a href="#Simple+API">Simple API</a>
+</li>
+<li>
+<a href="#Implementation">Implementation</a>
+</li>
+<li>
+<a href="#Uses">Uses</a>
+</li>
+<li>
+<a href="#Performance">Performance</a>
+</li>
+<li>
+<a href="#Reliability">Reliability</a>
+</li>
+<li>
+<a href="#The+ZooKeeper+Project">The ZooKeeper Project</a>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+  
+
+  
+
+  
+<a name="N10009"></a><a name="ch_DesignOverview"></a>
+<h2 class="h3">ZooKeeper: A Distributed Coordination Service for Distributed
+    Applications</h2>
+<div class="section">
+<p>ZooKeeper is a distributed, open-source coordination service for
+    distributed applications. It exposes a simple set of primitives that
+    distributed applications can build upon to implement higher level services
+    for synchronization, configuration maintenance, and groups and naming. It
+    is designed to be easy to program to, and uses a data model styled after
+    the familiar directory tree structure of file systems. It runs in Java and
+    has bindings for both Java and C.</p>
+<p>Coordination services are notoriously hard to get right. They are
+    especially prone to errors such as race conditions and deadlock. The
+    motivation behind ZooKeeper is to relieve distributed applications the
+    responsibility of implementing coordination services from scratch.</p>
+<a name="N10015"></a><a name="sc_designGoals"></a>
+<h3 class="h4">Design Goals</h3>
+<p>
+<strong>ZooKeeper is simple.</strong> ZooKeeper
+      allows distributed processes to coordinate with each other through a
+      shared hierarchal namespace which is organized similarly to a standard
+      file system. The name space consists of data registers - called znodes,
+      in ZooKeeper parlance - and these are similar to files and directories.
+      Unlike a typical file system, which is designed for storage, ZooKeeper
+      data is kept in-memory, which means ZooKeeper can acheive high
+      throughput and low latency numbers.</p>
+<p>The ZooKeeper implementation puts a premium on high performance,
+      highly available, strictly ordered access. The performance aspects of
+      ZooKeeper means it can be used in large, distributed systems. The
+      reliability aspects keep it from being a single point of failure. The
+      strict ordering means that sophisticated synchronization primitives can
+      be implemented at the client.</p>
+<p>
+<strong>ZooKeeper is replicated.</strong> Like the
+      distributed processes it coordinates, ZooKeeper itself is intended to be
+      replicated over a sets of hosts called an ensemble.</p>
+<table class="ForrestTable" cellspacing="1" cellpadding="4">
+<tr>
+<td>ZooKeeper Service</td>
+</tr>
+<tr>
+<td>
+          
+            <img alt="" src="images/zkservice.jpg">
+          
+        </td>
+</tr>
+</table>
+<p>The servers that make up the ZooKeeper service must all know about
+      each other. They maintain an in-memory image of state, along with a
+      transaction logs and snapshots in a persistent store. As long as a
+      majority of the servers are available, the ZooKeeper service will be
+      available.</p>
+<p>Clients connect to a single ZooKeeper server. The client maintains
+      a TCP connection through which it sends requests, gets responses, gets
+      watch events, and sends heart beats. If the TCP connection to the server
+      breaks, the client will connect to a different server.</p>
+<p>
+<strong>ZooKeeper is ordered.</strong> ZooKeeper
+      stamps each update with a number that reflects the order of all
+      ZooKeeper transactions. Subsequent operations can use the order to
+      implement higher-level abstractions, such as synchronization
+      primitives.</p>
+<p>
+<strong>ZooKeeper is fast.</strong> It is
+      especially fast in "read-dominant" workloads. ZooKeeper applications run
+      on thousands of machines, and it performs best where reads are more
+      common than writes, at ratios of around 10:1.</p>
+<a name="N10045"></a><a name="sc_dataModelNameSpace"></a>
+<h3 class="h4">Data model and the hierarchical namespace</h3>
+<p>The name space provided by ZooKeeper is much like that of a
+      standard file system. A name is a sequence of path elements separated by
+      a slash (/). Every node in ZooKeeper's name space is identified by a
+      path.</p>
+<table class="ForrestTable" cellspacing="1" cellpadding="4">
+<tr>
+<td>ZooKeeper's Hierarchical Namespace</td>
+</tr>
+<tr>
+<td>
+          
+            <img alt="" src="images/zknamespace.jpg">
+          
+        </td>
+</tr>
+</table>
+<a name="N1005B"></a><a name="Nodes+and+ephemeral+nodes"></a>
+<h3 class="h4">Nodes and ephemeral nodes</h3>
+<p>Unlike is standard file systems, each node in a ZooKeeper
+      namespace can have data associated with it as well as children. It is
+      like having a file-system that allows a file to also be a directory.
+      (ZooKeeper was designed to store coordination data: status information,
+      configuration, location information, etc., so the data stored at each
+      node is usually small, in the byte to kilobyte range.) We use the term
+      <em>znode</em> to make it clear that we are talking about
+      ZooKeeper data nodes.</p>
+<p>Znodes maintain a stat structure that includes version numbers for
+      data changes, ACL changes, and timestamps, to allow cache validations
+      and coordinated updates. Each time a znode's data changes, the version
+      number increases. For instance, whenever a client retrieves data it also
+      receives the version of the data.</p>
+<p>The data stored at each znode in a namespace is read and written
+      atomically. Reads get all the data bytes associated with a znode and a
+      write replaces all the data. Each node has an Access Control List (ACL)
+      that restricts who can do what.</p>
+<p>ZooKeeper also has the notion of ephemeral nodes. These znodes
+      exists as long as the session that created the znode is active. When the
+      session ends the znode is deleted. Ephemeral nodes are useful when you
+      want to implement <em>[tbd]</em>.</p>
+<a name="N10074"></a><a name="Conditional+updates+and+watches"></a>
+<h3 class="h4">Conditional updates and watches</h3>
+<p>ZooKeeper supports the concept of <em>watches</em>.
+      Clients can set a watch on a znodes. A watch will be triggered and
+      removed when the znode changes. When a watch is triggered the client
+      receives a packet saying that the znode has changed. And if the
+      connection between the client and one of the Zoo Keeper servers is
+      broken, the client will receive a local notification. These can be used
+      to <em>[tbd]</em>.</p>
+<a name="N10084"></a><a name="Guarantees"></a>
+<h3 class="h4">Guarantees</h3>
+<p>ZooKeeper is very fast and very simple. Since its goal, though, is
+      to be a basis for the construction of more complicated services, such as
+      synchronization, it provides a set of guarantees. These are:</p>
+<ul>
+        
+<li>
+          
+<p>Sequential Consistency - Updates from a client will be applied
+          in the order that they were sent.</p>
+        
+</li>
+
+        
+<li>
+          
+<p>Atomicity - Updates either succeed or fail. No partial
+          results.</p>
+        
+</li>
+
+        
+<li>
+          
+<p>Single System Image - A client will see the same view of the
+          service regardless of the server that it connects to.</p>
+        
+</li>
+      
+</ul>
+<ul>
+        
+<li>
+          
+<p>Reliability - Once an update has been applied, it will persist
+          from that time forward until a client overwrites the update.</p>
+        
+</li>
+      
+</ul>
+<ul>
+        
+<li>
+          
+<p>Timeliness - The clients view of the system is guaranteed to
+          be up-to-date within a certain time bound.</p>
+        
+</li>
+      
+</ul>
+<p>For more information on these, and how they can be used, see
+      <em>[tbd]</em>
+</p>
+<a name="N100BA"></a><a name="Simple+API"></a>
+<h3 class="h4">Simple API</h3>
+<p>One of the design goals of ZooKeeper is provide a very simple
+      programming interface. As a result, it supports only these
+      operations:</p>
+<dl>
+        
+<dt>
+<term>create</term>
+</dt>
+<dd>
+<p>creates a node at a location in the tree</p>
+</dd>
+
+        
+<dt>
+<term>delete</term>
+</dt>
+<dd>
+<p>deletes a node</p>
+</dd>
+
+        
+<dt>
+<term>exists</term>
+</dt>
+<dd>
+<p>tests if a node exists at a location</p>
+</dd>
+
+        
+<dt>
+<term>get data</term>
+</dt>
+<dd>
+<p>reads the data from a node</p>
+</dd>
+
+        
+<dt>
+<term>set data</term>
+</dt>
+<dd>
+<p>writes data to a node</p>
+</dd>
+
+        
+<dt>
+<term>get children</term>
+</dt>
+<dd>
+<p>retrieves a list of children of a node</p>
+</dd>
+
+        
+<dt>
+<term>sync</term>
+</dt>
+<dd>
+<p>waits for data to be propagated</p>
+</dd>
+      
+</dl>
+<p>For a more in-depth discussion on these, and how they can be used
+      to implement higher level operations, please refer to
+      <em>[tbd]</em>
+</p>
+<a name="N100FD"></a><a name="Implementation"></a>
+<h3 class="h4">Implementation</h3>
+<p>
+<a href="#fg_zkComponents">ZooKeeper Components</a> shows the high-level components
+      of the ZooKeeper service. With the exception of the request processor,
+     each of
+      the servers that make up the ZooKeeper service replicates its own copy
+      of each of components.</p>
+<table class="ForrestTable" cellspacing="1" cellpadding="4">
+<tr>
+<td>ZooKeeper Components</td>
+</tr>
+<tr>
+<td>
+          
+            <img alt="" src="images/zkcomponents.jpg">
+          
+        </td>
+</tr>
+</table>
+<p>The replicated database is an in-memory database containing the
+      entire data tree. Updates are logged to disk for recoverability, and
+      writes are serialized to disk before they are applied to the in-memory
+      database.</p>
+<p>Every ZooKeeper server services clients. Clients connect to
+      exactly one server to submit irequests. Read requests are serviced from
+      the local replica of each server database. Requests that change the
+      state of the service, write requests, are processed by an agreement
+      protocol.</p>
+<p>As part of the agreement protocol all write requests from clients
+      are forwarded to a single server, called the
+      <em>leader</em>. The rest of the ZooKeeper servers, called
+      <em>followers</em>, receive message proposals from the
+      leader and agree upon message delivery. The messaging layer takes care
+      of replacing leaders on failures and syncing followers with
+      leaders.</p>
+<p>ZooKeeper uses a custom atomic messaging protocol. Since the
+      messaging layer is atomic, ZooKeeper can guarantee that the local
+      replicas never diverge. When the leader receives a write request, it
+      calculates what the state of the system is when the write is to be
+      applied and transforms this into a transaction that captures this new
+      state.</p>
+<a name="N10128"></a><a name="Uses"></a>
+<h3 class="h4">Uses</h3>
+<p>The programming interface to ZooKeeper is deliberately simple.
+      With it, however, you can implement higher order operations, such as
+      synchronizations primitives, group membership, ownership, etc. Some
+      distributed applications have used it to: <em>[tbd: add uses from
+      white paper and video presentation.]</em> For more information, see
+      <em>[tbd]</em>
+</p>
+<a name="N10137"></a><a name="Performance"></a>
+<h3 class="h4">Performance</h3>
+<p>ZooKeeper is designed to be highly performant. But is it? The
+      results of the ZooKeeper's development team at Yahoo! Research indicate
+      that it is. (See <a href="#fg_zkPerfRW">ZooKeeper Throughput as the Read-Write Ratio Varies</a>.) It is especially high
+      performance in applications where reads outnumber writes, since writes
+      involve synchronizing the state of all servers. (Reads outnumbering
+      writes is typically the case for a coordination service.)</p>
+<table class="ForrestTable" cellspacing="1" cellpadding="4">
+<tr>
+<td>ZooKeeper Throughput as the Read-Write Ratio Varies</td>
+</tr>
+<tr>
+<td>
+          
+            <img alt="" src="images/zkperfRW.jpg">
+          
+        </td>
+</tr>
+</table>
+<p>Benchmarks also indicate that it is reliable, too. <a href="#fg_zkPerfReliability">Reliability in the Presence of Errors</a> shows how a deployment responds to
+      various failures. The events marked in the figure are the
+      following:</p>
+<ol>
+        
+<li>
+          
+<p>Failure and recovery of a follower</p>
+        
+</li>
+
+        
+<li>
+          
+<p>Failure and recovery of a different follower</p>
+        
+</li>
+
+        
+<li>
+          
+<p>Failure of the leader</p>
+        
+</li>
+
+        
+<li>
+          
+<p>Failure and recovery of two followers</p>
+        
+</li>
+
+        
+<li>
+          
+<p>Failure of another leader</p>
+        
+</li>
+      
+</ol>
+<a name="N10179"></a><a name="Reliability"></a>
+<h3 class="h4">Reliability</h3>
+<p>To show the behavior of the system over time as
+        failures are injected we ran a ZooKeeper service made up of
+        7 machines. We ran the same saturation benchmark as before,
+        but this time we kept the write percentage at a constant
+        30%, which is a conservative ratio of our expected
+        workloads.
+      </p>
+<table class="ForrestTable" cellspacing="1" cellpadding="4">
+<tr>
+<td>Reliability in the Presence of Errors</td>
+</tr>
+<tr>
+<td>
+          
+            <img alt="" src="images/zkperfreliability.jpg">
+          
+        </td>
+</tr>
+</table>
+<p>The are a few important observations from this graph. First, if
+      followers fail and recover quickly, then ZooKeeper is able to sustain a
+      high throughput despite the failure. But maybe more importantly, the
+      leader election algorithm allows for the system to recover fast enough
+      to prevent throughput from dropping substantially. In our observations,
+      ZooKeeper takes less than 200ms to elect a new leader. Third, as
+      followers recover, ZooKeeper is able to raise throughput again once they
+      start processing requests.</p>
+<a name="N10192"></a><a name="The+ZooKeeper+Project"></a>
+<h3 class="h4">The ZooKeeper Project</h3>
+<p>ZooKeeper has been
+        <a href="http://wiki.apache.org/hadoop/ZooKeeper/PoweredBy">
+          successfully used
+        </a>
+        in many industrial applications.  It is used at Yahoo! as the
+        coordination and failure recovery service for Yahoo! Message
+        Broker, which is a highly scalable publish-subscribe system
+        managing thousands of topics for replication and data
+        delivery.  It is used by the Fetching Service for Yahoo!
+        crawler, where it also manages failure recovery. A number of
+        Yahoo! advertising systems also use ZooKeeper to implement
+        reliable services.
+      </p>
+<p>All users and developers are encouraged to join the
+        community and contribute their expertise. See the
+        <a href="http://hadoop.apache.org/zookeeper/">
+          Zookeeper Project on Apache
+        </a>
+        for more information.
+      </p>
+</div>
+
+<p align="right">
+<font size="-2"></font>
+</p>
+</div>
+<!--+
+    |end content
+    +-->
+<div class="clearboth">&nbsp;</div>
+</div>
+<div id="footer">
+<!--+
+    |start bottomstrip
+    +-->
+<div class="lastmodified">
+<script type="text/javascript"><!--
+document.write("Last Published: " + document.lastModified);
+//  --></script>
+</div>
+<div class="copyright">
+        Copyright &copy;
+         2008 <a href="http://www.apache.org/licenses/">The Apache Software Foundation.</a>
+</div>
+<!--+
+    |end bottomstrip
+    +-->
+</div>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/zookeeper/blob/01b6b5e4/doc/r3.1.2/zookeeperOver.pdf
----------------------------------------------------------------------
diff --git a/doc/r3.1.2/zookeeperOver.pdf b/doc/r3.1.2/zookeeperOver.pdf
new file mode 100644
index 0000000..cb3073f
Binary files /dev/null and b/doc/r3.1.2/zookeeperOver.pdf differ


Mime
View raw message