€cdocutils.nodes document q)q}q(U nametypesq}q(Xzookeeper recipesqˆXdrbdqˆX zookeeperqˆXgeneralq NX9file based object store with distributed revision controlq NXreplication notesq NX!scenario 1: adding a new documentq NXgitq ˆX hazelcastqˆX member nodesqNX using a distributed lock managerqNXdistributed version controlqˆX resourcesqNX!distributed execution environmentqNXcoordinating nodesqNX disadvantagesqNXmetacatqˆXcoordinating node object storeqNX advantagesqNXbazaarqˆX mercurialqˆX%metacat as replicating object managerqNX389 directory serverqˆXmm_replicationqˆuUsubstitution_defsq}qUparse_messagesq ]q!(cdocutils.nodes system_message q")q#}q$(U rawsourceq%UU attributesq&}q'(Udupnamesq(]UlevelKUidsq)]Ubackrefsq*]UsourceXf/var/lib/jenkins/jobs/API_Documentation_trunk/workspace/api-documentation/source/notes/Replication.txtq+Uclassesq,]Unamesq-]UlineKwUtypeUINFOq.uUparentq/cdocutils.nodes entry q0)q1}q2(h%Uh&}q3(h(]h,]h*]h)]h-]uh/cdocutils.nodes row q4)q5}q6(h%Uh&}q7(h(]h,]h*]h)]h-]uh/cdocutils.nodes tbody q8)q9}q:(h%Uh&}q;(h(]h,]h*]h)]h-]uh/cdocutils.nodes tgroup q<)q=}q>(h%Uh&}q?(h)]h*]h(]h,]h-]UcolsKuh/cdocutils.nodes table q@)qA}qB(h%Uh/cdocutils.nodes section qC)qD}qE(h%Uh/hC)qF}qG(h%Uh/hUsourceqHh+UtagnameqIUsectionqJh&}qK(h(]h,]h*]h)]qLUreplication-notesqMah-]qNh auUlineqOKUdocumentqPhUchildrenqQ]qR(cdocutils.nodes title qS)qT}qU(h%XReplication NotesqVh/hFhHh+hIUtitleqWh&}qX(h(]h,]h*]h)]h-]uhOKhPhhQ]qYcdocutils.nodes Text qZXReplication Notesq[…q\}q](h%hVh/hTubaubcdocutils.nodes field_list q^)q_}q`(h%Uh/hFhHh+hIU field_listqah&}qb(h(]h,]h*]h)]h-]uhOKhPhhQ]qccdocutils.nodes field qd)qe}qf(h%Uh/h_hHh+hIUfieldqgh&}qh(h(]h,]h*]h)]h-]uhOKhPhhQ]qi(cdocutils.nodes field_name qj)qk}ql(h%XAuthorqmh/hehHh+hIU field_nameqnh&}qo(h(]h,]h*]h)]h-]uhOKhQ]qphZXAuthorqq…qr}qs(h%hmh/hkubaubcdocutils.nodes field_body qt)qu}qv(h%XDave Vieglas h&}qw(h(]h,]h*]h)]h-]uh/hehQ]qxcdocutils.nodes paragraph qy)qz}q{(h%X Dave Vieglasq|h/huhHh+hIU paragraphq}h&}q~(h(]h,]h*]h)]h-]uhOKhQ]qhZX Dave Vieglasq€…q}q‚(h%h|h/hzubaubahIU field_bodyqƒubeubaubhy)q„}q…(h%XRThis document contains notes about replication that may be of some use in DataONE.q†h/hFhHh+hIh}h&}q‡(h(]h,]h*]h)]h-]uhOKhPhhQ]qˆhZXRThis document contains notes about replication that may be of some use in DataONE.q‰…qŠ}q‹(h%h†h/h„ubaubhC)qŒ}q(h%Uh/hFhHh+hIhJh&}qŽ(h(]h,]h*]h)]qUgeneralqah-]q‘h auhOK hPhhQ]q’(hS)q“}q”(h%XGeneralq•h/hŒhHh+hIhWh&}q–(h(]h,]h*]h)]h-]uhOK hPhhQ]q—hZXGeneralq˜…q™}qš(h%h•h/h“ubaubcdocutils.nodes block_quote q›)qœ}q(h%Uh/hŒhHNhIU block_quoteqžh&}qŸ(h(]h,]h*]h)]h-]uhONhPhhQ]q cdocutils.nodes enumerated_list q¡)q¢}q£(h%Uh&}q¤(Usuffixq¥U.h)]h*]h(]Uprefixq¦Uh,]h-]Uenumtypeq§Uarabicq¨uh/hœhQ]q©(cdocutils.nodes list_item qª)q«}q¬(h%X=Reduce complex transactions to be written by a single server h&}q­(h(]h,]h*]h)]h-]uh/h¢hQ]q®hy)q¯}q°(h%X<Reduce complex transactions to be written by a single serverq±h/h«hHh+hIh}h&}q²(h(]h,]h*]h)]h-]uhOKhQ]q³hZX<Reduce complex transactions to be written by a single serverq´…qµ}q¶(h%h±h/h¯ubaubahIU list_itemq·ubhª)q¸}q¹(h%XMonitor the server log h&}qº(h(]h,]h*]h)]h-]uh/h¢hQ]q»hy)q¼}q½(h%XMonitor the server logq¾h/h¸hHh+hIh}h&}q¿(h(]h,]h*]h)]h-]uhOKhQ]qÀhZXMonitor the server logqÁ…qÂ}qÃ(h%h¾h/h¼ubaubahIh·ubhª)qÄ}qÅ(h%XoBe prepared for failure. The more data is distributed and scaled, the more likely failure will be encountered. h&}qÆ(h(]h,]h*]h)]h-]uh/h¢hQ]qÇhy)qÈ}qÉ(h%XnBe prepared for failure. The more data is distributed and scaled, the more likely failure will be encountered.qÊh/hÄhHh+hIh}h&}qË(h(]h,]h*]h)]h-]uhOKhQ]qÌhZXnBe prepared for failure. The more data is distributed and scaled, the more likely failure will be encountered.qÍ…qÎ}qÏ(h%hÊh/hÈubaubahIh·ubehIUenumerated_listqÐubaubeubhC)qÑ}qÒ(h%Uh/hFhHh+hIhJh&}qÓ(h(]h,]h*]h)]qÔUcoordinating-nodesqÕah-]qÖhauhOKhPhhQ]q×(hS)qØ}qÙ(h%XCoordinating NodesqÚh/hÑhHh+hIhWh&}qÛ(h(]h,]h*]h)]h-]uhOKhPhhQ]qÜhZXCoordinating NodesqÝ…qÞ}qß(h%hÚh/hØubaubhy)qà}qá(h%X—CNs need to keep a copy of all science metadata, and it is expected that each CN will be replicated with the others, so that each will appear the same.qâh/hÑhHh+hIh}h&}qã(h(]h,]h*]h)]h-]uhOKhPhhQ]qähZX—CNs need to keep a copy of all science metadata, and it is expected that each CN will be replicated with the others, so that each will appear the same.qå…qæ}qç(h%hâh/hàubaubhy)qè}qé(h%X&There will be three CNs to start with.qêh/hÑhHh+hIh}h&}që(h(]h,]h*]h)]h-]uhOKhPhhQ]qìhZX&There will be three CNs to start with.qí…qî}qï(h%hêh/hèubaubhy)qð}qñ(h%XIThere's basically three models for dealing with replication in this case:qòh/hÑhHh+hIh}h&}qó(h(]h,]h*]h)]h-]uhOKhPhhQ]qôhZXIThere's basically three models for dealing with replication in this case:qõ…qö}q÷(h%hòh/hðubaubh›)qø}qù(h%Uh/hÑhHNhIhžh&}qú(h(]h,]h*]h)]h-]uhONhPhhQ]qûcdocutils.nodes bullet_list qü)qý}qþ(h%Uh&}qÿ(UbulletrX-h)]h*]h(]h,]h-]uh/høhQ]r(hª)r}r(h%Xsingle master, two slavesrh&}r(h(]h,]h*]h)]h-]uh/hýhQ]rhy)r}r(h%jh/jhHh+hIh}h&}r (h(]h,]h*]h)]h-]uhOKhQ]r hZXsingle master, two slavesr …r }r (h%jh/jubaubahIh·ubhª)r}r(h%X2ring - write one, it writes to the next, and so onrh&}r(h(]h,]h*]h)]h-]uh/hýhQ]rhy)r}r(h%jh/jhHh+hIh}h&}r(h(]h,]h*]h)]h-]uhOK hQ]rhZX2ring - write one, it writes to the next, and so onr…r}r(h%jh/jubaubahIh·ubhª)r}r(h%X2multi-master. Write to any, replication to others h&}r(h(]h,]h*]h)]h-]uh/hýhQ]rhy)r}r(h%X1multi-master. Write to any, replication to othersr h/jhHh+hIh}h&}r!(h(]h,]h*]h)]h-]uhOK!hQ]r"hZX1multi-master. Write to any, replication to othersr#…r$}r%(h%j h/jubaubahIh·ubehIU bullet_listr&ubaubhy)r'}r((h%XÃMulti-master replication would be the ideal option, as each CN would then offer identical functionality rather than the alternative of redirecting (presumably) 2/3 of requests to the master node.r)h/hÑhHh+hIh}h&}r*(h(]h,]h*]h)]h-]uhOK#hPhhQ]r+hZXÃMulti-master replication would be the ideal option, as each CN would then offer identical functionality rather than the alternative of redirecting (presumably) 2/3 of requests to the master node.r,…r-}r.(h%j)h/j'ubaubhy)r/}r0(h%XFThere are basically two categories of information that are replicated:r1h/hÑhHh+hIh}h&}r2(h(]h,]h*]h)]h-]uhOK'hPhhQ]r3hZXFThere are basically two categories of information that are replicated:r4…r5}r6(h%j1h/j/ubaubh›)r7}r8(h%Uh/hÑhHNhIhžh&}r9(h(]h,]h*]h)]h-]uhONhPhhQ]r:hü)r;}r<(h%Uh&}r=(jX-h)]h*]h(]h,]h-]uh/j7hQ]r>(hª)r?}r@(h%X8science metadata, which is information about a data set h&}rA(h(]h,]h*]h)]h-]uh/j;hQ]rBhy)rC}rD(h%X7science metadata, which is information about a data setrEh/j?hHh+hIh}h&}rF(h(]h,]h*]h)]h-]uhOK)hQ]rGhZX7science metadata, which is information about a data setrH…rI}rJ(h%jEh/jCubaubahIh·ubhª)rK}rL(h%X¿system metadata, which is information that is used to keep track of things such as the science metadata, MN capabilities and state, perhaps groups and access control lists, identity mappings h&}rM(h(]h,]h*]h)]h-]uh/j;hQ]rNhy)rO}rP(h%X¾system metadata, which is information that is used to keep track of things such as the science metadata, MN capabilities and state, perhaps groups and access control lists, identity mappingsrQh/jKhHh+hIh}h&}rR(h(]h,]h*]h)]h-]uhOK+hQ]rShZX¾system metadata, which is information that is used to keep track of things such as the science metadata, MN capabilities and state, perhaps groups and access control lists, identity mappingsrT…rU}rV(h%jQh/jOubaubahIh·ubehIj&ubaubeubhC)rW}rX(h%Uh/hFhHh+hIhJh&}rY(h(]h,]h*]h)]rZU member-nodesr[ah-]r\hauhOK0hPhhQ]r](hS)r^}r_(h%X Member Nodesr`h/jWhHh+hIhWh&}ra(h(]h,]h*]h)]h-]uhOK0hPhhQ]rbhZX Member Nodesrc…rd}re(h%j`h/j^ubaubhy)rf}rg(h%XReplication of data is achieved by copying content between Member Nodes until sufficient copies have been made to address concerns of access (x% of MNs may be offline and the content can still be reached) and efficiency of access (Internet distance between client and the MN).rhh/jWhHh+hIh}h&}ri(h(]h,]h*]h)]h-]uhOK2hPhhQ]rjhZXReplication of data is achieved by copying content between Member Nodes until sufficient copies have been made to address concerns of access (x% of MNs may be offline and the content can still be reached) and efficiency of access (Internet distance between client and the MN).rk…rl}rm(h%jhh/jfubaubeubhC)rn}ro(h%Uh/hFhHh+hIhJh&}rp(h(]h,]h*]h)]rqU resourcesrrah-]rshauhOK8hPhhQ]rt(hS)ru}rv(h%X Resourcesrwh/jnhHh+hIhWh&}rx(h(]h,]h*]h)]h-]uhOK8hPhhQ]ryhZX Resourcesrz…r{}r|(h%jwh/juubaubh›)r}}r~(h%Uh/jnhHNhIhžh&}r(h(]h,]h*]h)]h-]uhONhPhhQ]r€hü)r}r‚(h%Uh&}rƒ(jX-h)]h*]h(]h,]h-]uh/j}hQ]r„(hª)r…}r†(h%Xrcs - venerable, functionalr‡h&}rˆ(h(]h,]h*]h)]h-]uh/jhQ]r‰hy)rŠ}r‹(h%j‡h/j…hHh+hIh}h&}rŒ(h(]h,]h*]h)]h-]uhOK:hQ]rhZXrcs - venerable, functionalrŽ…r}r(h%j‡h/jŠubaubahIh·ubhª)r‘}r’(h%X.inotify - the linux kernel file system monitorr“h&}r”(h(]h,]h*]h)]h-]uh/jhQ]r•hy)r–}r—(h%j“h/j‘hHh+hIh}h&}r˜(h(]h,]h*]h)]h-]uhOK;hQ]r™hZX.inotify - the linux kernel file system monitorrš…r›}rœ(h%j“h/j–ubaubahIh·ubhª)r}rž(h%X2LDAP multi-master (OpenLDAP, 389 Directory Server)rŸh&}r (h(]h,]h*]h)]h-]uh/jhQ]r¡hy)r¢}r£(h%jŸh/jhHh+hIh}h&}r¤(h(]h,]h*]h)]h-]uhOKhQ]r½hZXJMicrosoft's File System Replication Service and/or Distributed File Systemr¾…r¿}rÀ(h%j·h/jºubaubahIh·ubhª)rÁ}rÂ(h%Xslony1 for PostgresqlrÃh&}rÄ(h(]h,]h*]h)]h-]uh/jhQ]rÅhy)rÆ}rÇ(h%jÃh/jÁhHh+hIh}h&}rÈ(h(]h,]h*]h)]h-]uhOK?hQ]rÉhZXslony1 for PostgresqlrÊ…rË}rÌ(h%jÃh/jÆubaubahIh·ubhª)rÍ}rÎ(h%XDRBD_ (dual master)rÏh&}rÐ(h(]h,]h*]h)]h-]uh/jhQ]rÑhy)rÒ}rÓ(h%jÏh/jÍhHh+hIh}h&}rÔ(h(]h,]h*]h)]h-]uhOK@hQ]rÕ(cdocutils.nodes reference rÖ)r×}rØ(h%XDRBD_UresolvedrÙKh/jÒhIU referencerÚh&}rÛ(UnameXDRBDUrefurirÜX&http://www.drbd.org/home/what-is-drbd/rÝh)]h*]h(]h,]h-]uhQ]rÞhZXDRBDrß…rà}rá(h%Uh/j×ubaubhZX (dual master)râ…rã}rä(h%X (dual master)h/jÒubeubahIh·ubhª)rå}ræ(h%XGit_rçh&}rè(h(]h,]h*]h)]h-]uh/jhQ]réhy)rê}rë(h%jçh/jåhHh+hIh}h&}rì(h(]h,]h*]h)]h-]uhOKAhQ]ríjÖ)rî}rï(h%XGit_jÙKh/jêhIjÚh&}rð(UnameXGitjÜXhttp://git-scm.com/rñh)]h*]h(]h,]h-]uhQ]ròhZXGitró…rô}rõ(h%Uh/jîubaubaubahIh·ubhª)rö}r÷(h%X Mercurial_røh&}rù(h(]h,]h*]h)]h-]uh/jhQ]rúhy)rû}rü(h%jøh/jöhHh+hIh}h&}rý(h(]h,]h*]h)]h-]uhOKBhQ]rþjÖ)rÿ}r(h%X Mercurial_jÙKh/jûhIjÚh&}r(UnameX MercurialjÜXhttp://mercurial.selenic.com/rh)]h*]h(]h,]h-]uhQ]rhZX Mercurialr…r}r(h%Uh/jÿubaubaubahIh·ubhª)r}r(h%XBazaar_r h&}r (h(]h,]h*]h)]h-]uh/jhQ]r hy)r }r (h%j h/jhHh+hIh}h&}r(h(]h,]h*]h)]h-]uhOKChQ]rjÖ)r}r(h%XBazaar_jÙKh/j hIjÚh&}r(UnameXBazaarjÜXhttp://bazaar-vcs.org/en/rh)]h*]h(]h,]h-]uhQ]rhZXBazaarr…r}r(h%Uh/jubaubaubahIh·ubhª)r}r(h%XMetacat_rh&}r(h(]h,]h*]h)]h-]uh/jhQ]rhy)r}r(h%jh/jhHh+hIh}h&}r(h(]h,]h*]h)]h-]uhOKDhQ]r jÖ)r!}r"(h%XMetacat_jÙKh/jhIjÚh&}r#(UnameXMetacatjÜX/http://knb.ecoinformatics.org/software/metacat/r$h)]h*]h(]h,]h-]uhQ]r%hZXMetacatr&…r'}r((h%Uh/j!ubaubaubahIh·ubhª)r)}r*(h%X Zookeeper_ h&}r+(h(]h,]h*]h)]h-]uh/jhQ]r,hy)r-}r.(h%X Zookeeper_h/j)hHh+hIh}h&}r/(h(]h,]h*]h)]h-]uhOKEhQ]r0jÖ)r1}r2(h%X Zookeeper_jÙKh/j-hIjÚh&}r3(UnameX ZookeeperjÜX"http://hadoop.apache.org/zookeeperr4h)]h*]h(]h,]h-]uhQ]r5hZX Zookeeperr6…r7}r8(h%Uh/j1ubaubaubahIh·ubehIj&ubaubeubhC)r9}r:(h%Uh/hFhHh+hIhJh&}r;(h(]h,]h*]h)]r<Ucoordinating-node-object-storer=ah-]r>hauhOKIhPhhQ]r?(hS)r@}rA(h%XCoordinating Node Object StorerBh/j9hHh+hIhWh&}rC(h(]h,]h*]h)]h-]uhOKIhPhhQ]rDhZXCoordinating Node Object StorerE…rF}rG(h%jBh/j@ubaubhy)rH}rI(h%XjThe CN object store (CN-OS) is responsible for holding a copy of all science and system metadata, enabling retrieval of objects by an identifier and for ensuring that the local copy is synchronized with the other CNs. The CN-OS is analogous to a replicated dictionary with the identifiers being keys and the science or system metadata documents being the values.rJh/j9hHh+hIh}h&}rK(h(]h,]h*]h)]h-]uhOKKhPhhQ]rLhZXjThe CN object store (CN-OS) is responsible for holding a copy of all science and system metadata, enabling retrieval of objects by an identifier and for ensuring that the local copy is synchronized with the other CNs. The CN-OS is analogous to a replicated dictionary with the identifiers being keys and the science or system metadata documents being the values.rM…rN}rO(h%jJh/jHubaubhy)rP}rQ(h%X$The CN-OS should support operations:rRh/j9hHh+hIh}h&}rS(h(]h,]h*]h)]h-]uhOKQhPhhQ]rThZX$The CN-OS should support operations:rU…rV}rW(h%jRh/jPubaubhü)rX}rY(h%Uh/j9hHh+hIj&h&}rZ(jX-h)]h*]h(]h,]h-]uhOKShPhhQ]r[(hª)r\}r](h%X Create(pid) h/jXhHh+hIh·h&}r^(h(]h,]h*]h)]h-]uhONhPhhQ]r_hy)r`}ra(h%X Create(pid)rbh/j\hHh+hIh}h&}rc(h(]h,]h*]h)]h-]uhOKShQ]rdhZX Create(pid)re…rf}rg(h%jbh/j`ubaubaubhª)rh}ri(h%X Read(pid) h/jXhHh+hIh·h&}rj(h(]h,]h*]h)]h-]uhONhPhhQ]rkhy)rl}rm(h%X Read(pid)rnh/jhhHh+hIh}h&}ro(h(]h,]h*]h)]h-]uhOKUhQ]rphZX Read(pid)rq…rr}rs(h%jnh/jlubaubaubhª)rt}ru(h%X Update(pid) h/jXhHh+hIh·h&}rv(h(]h,]h*]h)]h-]uhONhPhhQ]rwhy)rx}ry(h%X Update(pid)rzh/jthHh+hIh}h&}r{(h(]h,]h*]h)]h-]uhOKWhQ]r|hZX Update(pid)r}…r~}r(h%jzh/jxubaubaubhª)r€}r(h%X Delete(pid) h/jXhHh+hIh·h&}r‚(h(]h,]h*]h)]h-]uhONhPhhQ]rƒhy)r„}r…(h%X Delete(pid)r†h/j€hHh+hIh}h&}r‡(h(]h,]h*]h)]h-]uhOKYhQ]rˆhZX Delete(pid)r‰…rŠ}r‹(h%j†h/j„ubaubaubhª)rŒ}r(h%X!List(start, stop, restriction) h/jXhHh+hIh·h&}rŽ(h(]h,]h*]h)]h-]uhONhPhhQ]rhy)r}r‘(h%XList(start, stop, restriction)r’h/jŒhHh+hIh}h&}r“(h(]h,]h*]h)]h-]uhOK[hQ]r”hZXList(start, stop, restriction)r•…r–}r—(h%j’h/jubaubaubeubeubhDhC)r˜}r™(h%Uh/hFhHh+hIhJh&}rš(h(]h,]h*]h)]r›U using-a-distributed-lock-managerrœah-]rhauhOK‚hPhhQ]rž(hS)rŸ}r (h%X Using a Distributed Lock Managerr¡h/j˜hHh+hIhWh&}r¢(h(]h,]h*]h)]h-]uhOK‚hPhhQ]r£hZX Using a Distributed Lock Managerr¤…r¥}r¦(h%j¡h/jŸubaubhy)r§}r¨(h%XØApache Zookeeper_ can be used as a distributed lock manager to assist with synchronization of records, especially across the CNs. Zookeeper is interesting because it can potentially scale to many more than three CNs.h/j˜hHh+hIh}h&}r©(h(]h,]h*]h)]h-]uhOK„hPhhQ]rª(hZXApache r«…r¬}r­(h%XApache h/j§ubjÖ)r®}r¯(h%X Zookeeper_jÙKh/j§hIjÚh&}r°(UnameX ZookeeperjÜj4h)]h*]h(]h,]h-]uhQ]r±hZX Zookeeperr²…r³}r´(h%Uh/j®ubaubhZXÇ can be used as a distributed lock manager to assist with synchronization of records, especially across the CNs. Zookeeper is interesting because it can potentially scale to many more than three CNs.rµ…r¶}r·(h%XÇ can be used as a distributed lock manager to assist with synchronization of records, especially across the CNs. Zookeeper is interesting because it can potentially scale to many more than three CNs.h/j§ubeubhy)r¸}r¹(h%XÁIn this case we would create a globally synchronous lock on a specific PID (essentially the same as the Lock operation of Metacat). The basic procedure is described in the `Zookeeper recipes`_.h/j˜hHh+hIh}h&}rº(h(]h,]h*]h)]h-]uhOKˆhPhhQ]r»(hZX¬In this case we would create a globally synchronous lock on a specific PID (essentially the same as the Lock operation of Metacat). The basic procedure is described in the r¼…r½}r¾(h%X¬In this case we would create a globally synchronous lock on a specific PID (essentially the same as the Lock operation of Metacat). The basic procedure is described in the h/j¸ubjÖ)r¿}rÀ(h%X`Zookeeper recipes`_jÙKh/j¸hIjÚh&}rÁ(UnameXZookeeper recipesjÜXLhttp://hadoop.apache.org/zookeeper/docs/r3.1.1/recipes.html#sc_recipes_LocksrÂh)]h*]h(]h,]h-]uhQ]rÃhZXZookeeper recipesrÄ…rÅ}rÆ(h%Uh/j¿ubaubhZX.…rÇ}rÈ(h%X.h/j¸ubeubeubhC)rÉ}rÊ(h%Uh/hFhHh+hIhJh&}rË(h(]h,]h*]h)]rÌU!distributed-execution-environmentrÍah-]rÎhauhOKŽhPhhQ]rÏ(hS)rÐ}rÑ(h%X!Distributed Execution EnvironmentrÒh/jÉhHh+hIhWh&}rÓ(h(]h,]h*]h)]h-]uhOKŽhPhhQ]rÔhZX!Distributed Execution EnvironmentrÕ…rÖ}r×(h%jÒh/jÐubaubhy)rØ}rÙ(h%X¸For example, hazelcast_. These types of solutions are typically developed with LAN clusters in mind, and may run into problems with higher latency networks. Interesting product though.h/jÉhHh+hIh}h&}rÚ(h(]h,]h*]h)]h-]uhOKhPhhQ]rÛ(hZX For example, rÜ…rÝ}rÞ(h%X For example, h/jØubjÖ)rß}rà(h%X hazelcast_jÙKh/jØhIjÚh&}rá(UnameX hazelcastrâjÜXhttp://www.hazelcast.com/rãh)]h*]h(]h,]h-]uhQ]rähZX hazelcastrå…ræ}rç(h%Uh/jßubaubhZX¡. These types of solutions are typically developed with LAN clusters in mind, and may run into problems with higher latency networks. Interesting product though.rè…ré}rê(h%X¡. These types of solutions are typically developed with LAN clusters in mind, and may run into problems with higher latency networks. Interesting product though.h/jØubeubeubhC)rë}rì(h%Uh/hFhHh+hIhJh&}rí(h(]h,]h*]h)]rîU9file-based-object-store-with-distributed-revision-controlrïah-]rðh auhOK–hPhhQ]rñ(hS)rò}ró(h%X9File Based Object Store with Distributed Revision Controlrôh/jëhHh+hIhWh&}rõ(h(]h,]h*]h)]h-]uhOK–hPhhQ]röhZX9File Based Object Store with Distributed Revision Controlr÷…rø}rù(h%jôh/jòubaubhy)rú}rû(h%XÔThese notes describe a strategy of utilizing the Linux file system and a `distributed version control`_ system (DVC) such as Git_ or Mercurial_ as the science and system metadata store for the Coordinating Nodes.h/jëhHh+hIh}h&}rü(h(]h,]h*]h)]h-]uhOK˜hPhhQ]rý(hZXIThese notes describe a strategy of utilizing the Linux file system and a rþ…rÿ}r(h%XIThese notes describe a strategy of utilizing the Linux file system and a h/júubjÖ)r}r(h%X`distributed version control`_jÙKh/júhIjÚh&}r(UnameXdistributed version controljÜX9http://en.wikipedia.org/wiki/Distributed_revision_controlrh)]h*]h(]h,]h-]uhQ]rhZXdistributed version controlr…r}r(h%Uh/jubaubhZX system (DVC) such as r …r }r (h%X system (DVC) such as h/júubjÖ)r }r (h%XGit_jÙKh/júhIjÚh&}r(UnameXGitjÜjñh)]h*]h(]h,]h-]uhQ]rhZXGitr…r}r(h%Uh/j ubaubhZX or r…r}r(h%X or h/júubjÖ)r}r(h%X Mercurial_jÙKh/júhIjÚh&}r(UnameX MercurialjÜjh)]h*]h(]h,]h-]uhQ]rhZX Mercurialr…r}r(h%Uh/jubaubhZXE as the science and system metadata store for the Coordinating Nodes.r…r}r(h%XE as the science and system metadata store for the Coordinating Nodes.h/júubeubhy)r }r!(h%XBThe basic approach is to treat all primary instances of science and system metadata as files that are stored on the Linux file system. The files are located in one or more folders that are under revision control using the DVC. As a new metadata file is added to a CN, it is replicated to the other CNs on a scheduled basis (e.g. every 10 minutes or when n files have been changed or added). Change notification hooks (e.g. commit scripts) are used to update local databases that are used to search science metadata (e.g. the Mercury index) or the local system metadata database.r"h/jëhHh+hIh}h&}r#(h(]h,]h*]h)]h-]uhOKœhPhhQ]r$hZXBThe basic approach is to treat all primary instances of science and system metadata as files that are stored on the Linux file system. The files are located in one or more folders that are under revision control using the DVC. As a new metadata file is added to a CN, it is replicated to the other CNs on a scheduled basis (e.g. every 10 minutes or when n files have been changed or added). Change notification hooks (e.g. commit scripts) are used to update local databases that are used to search science metadata (e.g. the Mercury index) or the local system metadata database.r%…r&}r'(h%j"h/j ubaubhC)r(}r)(h%Uh/jëhHh+hIhJh&}r*(h(]h,]h*]h)]r+U scenario-1-adding-a-new-documentr,ah-]r-h auhOK§hPhhQ]r.(hS)r/}r0(h%X!Scenario 1: Adding a new documentr1h/j(hHh+hIhWh&}r2(h(]h,]h*]h)]h-]uhOK§hPhhQ]r3hZX!Scenario 1: Adding a new documentr4…r5}r6(h%j1h/j/ubaubh¡)r7}r8(h%Uh/j(hHh+hIhÐh&}r9(h¥U.h)]h*]h(]h¦Uh,]h-]h§h¨uhOK©hPhhQ]r:(hª)r;}r<(h%XNA new document (d) is retrieved from a MN (or is pushed to the CN by the MN). h/j7hHh+hIh·h&}r=(h(]h,]h*]h)]h-]uhONhPhhQ]r>hy)r?}r@(h%XMA new document (d) is retrieved from a MN (or is pushed to the CN by the MN).rAh/j;hHh+hIh}h&}rB(h(]h,]h*]h)]h-]uhOK©hQ]rChZXMA new document (d) is retrieved from a MN (or is pushed to the CN by the MN).rD…rE}rF(h%jAh/j?ubaubaubhª)rG}rH(h%XGThe document is added to the file system and added to version control. h/j7hHh+hIh·h&}rI(h(]h,]h*]h)]h-]uhONhPhhQ]rJhy)rK}rL(h%XFThe document is added to the file system and added to version control.rMh/jGhHh+hIh}h&}rN(h(]h,]h*]h)]h-]uhOK¬hQ]rOhZXFThe document is added to the file system and added to version control.rP…rQ}rR(h%jMh/jKubaubaubhª)rS}rT(h%XlIn response to some trigger (time or number of commits), the DVC initiates a sync with other repositories. h/j7hHh+hIh·h&}rU(h(]h,]h*]h)]h-]uhONhPhhQ]rVhy)rW}rX(h%XjIn response to some trigger (time or number of commits), the DVC initiates a sync with other repositories.rYh/jShHh+hIh}h&}rZ(h(]h,]h*]h)]h-]uhOK®hQ]r[hZXjIn response to some trigger (time or number of commits), the DVC initiates a sync with other repositories.r\…r]}r^(h%jYh/jWubaubaubeubeubhC)r_}r`(h%Uh/jëhHh+hIhJh&}ra(h(]h,]h*]h)]rbU advantagesrcah-]rdhauhOK³hPhhQ]re(hS)rf}rg(h%X Advantagesrhh/j_hHh+hIhWh&}ri(h(]h,]h*]h)]h-]uhOK³hPhhQ]rjhZX Advantagesrk…rl}rm(h%jhh/jfubaubhü)rn}ro(h%Uh/j_hHh+hIj&h&}rp(jX-h)]h*]h(]h,]h-]uhOKµhPhhQ]rq(hª)rr}rs(h%X!Very simple replication mechanismrth/jnhHh+hIh·h&}ru(h(]h,]h*]h)]h-]uhONhPhhQ]rvhy)rw}rx(h%jth/jrhHh+hIh}h&}ry(h(]h,]h*]h)]h-]uhOKµhQ]rzhZX!Very simple replication mechanismr{…r|}r}(h%jth/jwubaubaubhª)r~}r(h%X<Scalable, especially through partitioning of the file systemr€h/jnhHh+hIh·h&}r(h(]h,]h*]h)]h-]uhONhPhhQ]r‚hy)rƒ}r„(h%j€h/j~hHh+hIh}h&}r…(h(]h,]h*]h)]h-]uhOK¶hQ]r†hZX<Scalable, especially through partitioning of the file systemr‡…rˆ}r‰(h%j€h/jƒubaubaubhª)rŠ}r‹(h%XNo global write lock necessaryrŒh/jnhHh+hIh·h&}r(h(]h,]h*]h)]h-]uhONhPhhQ]rŽhy)r}r(h%jŒh/jŠhHh+hIh}h&}r‘(h(]h,]h*]h)]h-]uhOK·hQ]r’hZXNo global write lock necessaryr“…r”}r•(h%jŒh/jubaubaubhª)r–}r—(h%X'Agnostic with respect to the file typesr˜h/jnhHh+hIh·h&}r™(h(]h,]h*]h)]h-]uhONhPhhQ]ršhy)r›}rœ(h%j˜h/j–hHh+hIh}h&}r(h(]h,]h*]h)]h-]uhOK¸hQ]ržhZX'Agnostic with respect to the file typesrŸ…r }r¡(h%j˜h/j›ubaubaubhª)r¢}r£(h%XMany existing toolsr¤h/jnhHh+hIh·h&}r¥(h(]h,]h*]h)]h-]uhONhPhhQ]r¦hy)r§}r¨(h%j¤h/j¢hHh+hIh}h&}r©(h(]h,]h*]h)]h-]uhOK¹hQ]rªhZXMany existing toolsr«…r¬}r­(h%j¤h/j§ubaubaubhª)r®}r¯(h%X Changes replicated through diffsr°h/jnhHh+hIh·h&}r±(h(]h,]h*]h)]h-]uhONhPhhQ]r²hy)r³}r´(h%j°h/j®hHh+hIh}h&}rµ(h(]h,]h*]h)]h-]uhOKºhQ]r¶hZX Changes replicated through diffsr·…r¸}r¹(h%j°h/j³ubaubaubhª)rº}r»(h%X<Enable segmentation of all content through a simple taxonomyr¼h/jnhHh+hIh·h&}r½(h(]h,]h*]h)]h-]uhONhPhhQ]r¾hy)r¿}rÀ(h%j¼h/jºhHh+hIh}h&}rÁ(h(]h,]h*]h)]h-]uhOK»hQ]rÂhZX<Enable segmentation of all content through a simple taxonomyrÃ…rÄ}rÅ(h%j¼h/j¿ubaubaubhª)rÆ}rÇ(h%X\General approach is RCS agnostic - could use Git, Bazaar or any other distributed RCS systemh/jnhHh+hIh·h&}rÈ(h(]h,]h*]h)]h-]uhONhPhhQ]rÉhy)rÊ}rË(h%X\General approach is RCS agnostic - could use Git, Bazaar or any other distributed RCS systemrÌh/jÆhHh+hIh}h&}rÍ(h(]h,]h*]h)]h-]uhOK¼hQ]rÎhZX\General approach is RCS agnostic - could use Git, Bazaar or any other distributed RCS systemrÏ…rÐ}rÑ(h%jÌh/jÊubaubaubhª)rÒ}rÓ(h%XChange detection is trivial h/jnhHh+hIh·h&}rÔ(h(]h,]h*]h)]h-]uhONhPhhQ]rÕhy)rÖ}r×(h%XChange detection is trivialrØh/jÒhHh+hIh}h&}rÙ(h(]h,]h*]h)]h-]uhOK¾hQ]rÚhZXChange detection is trivialrÛ…rÜ}rÝ(h%jØh/jÖubaubaubeubeubhC)rÞ}rß(h%Uh/jëhHh+hIhJh&}rà(h(]h,]h*]h)]ráU disadvantagesrâah-]rãhauhOKÁhPhhQ]rä(hS)rå}ræ(h%X Disadvantagesrçh/jÞhHh+hIhWh&}rè(h(]h,]h*]h)]h-]uhOKÁhPhhQ]réhZX Disadvantagesrê…rë}rì(h%jçh/jåubaubhü)rí}rî(h%Uh/jÞhHh+hIj&h&}rï(jX-h)]h*]h(]h,]h-]uhOKÃhPhhQ]rð(hª)rñ}rò(h%XBFile replication only, need to implement mechanisms for search etcróh/jíhHh+hIh·h&}rô(h(]h,]h*]h)]h-]uhONhPhhQ]rõhy)rö}r÷(h%jóh/jñhHh+hIh}h&}rø(h(]h,]h*]h)]h-]uhOKÃhQ]rùhZXBFile replication only, need to implement mechanisms for search etcrú…rû}rü(h%jóh/jöubaubaubhª)rý}rþ(h%XNo per-object access controlrÿh/jíhHh+hIh·h&}r(h(]h,]h*]h)]h-]uhONhPhhQ]rhy)r}r(h%jÿh/jýhHh+hIh}h&}r(h(]h,]h*]h)]h-]uhOKÄhQ]rhZXNo per-object access controlr…r}r(h%jÿh/jubaubaubhª)r }r (h%X-Potential for collisions for object instancesr h/jíhHh+hIh·h&}r (h(]h,]h*]h)]h-]uhONhPhhQ]r hy)r}r(h%j h/j hHh+hIh}h&}r(h(]h,]h*]h)]h-]uhOKÅhQ]rhZX-Potential for collisions for object instancesr…r}r(h%j h/jubaubaubhª)r}r(h%X)How to (automatically) resolve conflicts?rh/jíhHh+hIh·h&}r(h(]h,]h*]h)]h-]uhONhPhhQ]rhy)r}r(h%jh/jhHh+hIh}h&}r(h(]h,]h*]h)]h-]uhOKÆhQ]rhZX)How to (automatically) resolve conflicts?r…r}r (h%jh/jubaubaubhª)r!}r"(h%XCLimitations on the absolute number of files per folder/filesystem h/jíhHh+hIh·h&}r#(h(]h,]h*]h)]h-]uhONhPhhQ]r$hy)r%}r&(h%XALimitations on the absolute number of files per folder/filesystemr'h/j!hHh+hIh}h&}r((h(]h,]h*]h)]h-]uhOKÇhQ]r)hZXALimitations on the absolute number of files per folder/filesystemr*…r+}r,(h%j'h/j%ubaubaubeubcdocutils.nodes target r-)r.}r/(h%X0.. _DRBD: http://www.drbd.org/home/what-is-drbd/U referencedr0Kh/jÞhHh+hIUtargetr1h&}r2(jÜjÝh)]r3Udrbdr4ah*]h(]h,]h-]r5hauhOKÊhPhhQ]ubj-)r6}r7(h%XX.. _mm_replication: http://www.dbspecialists.com/files/presentations/mm_replication.htmlh/jÞhHh+hIj1h&}r8(jÜXDhttp://www.dbspecialists.com/files/presentations/mm_replication.htmlh)]r9Umm-replicationr:ah*]h(]h,]h-]r;hauhOKÌhPhhQ]ubj-)r<}r=(h%XQ.. _389 Directory Server: https://help.Ubuntu.com/community/FedoraDirectoryServerh/jÞhHh+hIj1h&}r>(jÜX7https://help.Ubuntu.com/community/FedoraDirectoryServerh)]r?Udirectory-serverr@ah*]h(]h,]h-]rAhauhOKÎhPhhQ]ubj-)rB}rC(h%XZ.. _distributed version control: http://en.wikipedia.org/wiki/Distributed_revision_controlj0Kh/jÞhHh+hIj1h&}rD(jÜjh)]rEUdistributed-version-controlrFah*]h(]h,]h-]rGhauhOKÐhPhhQ]ubj-)rH}rI(h%X,.. _Mercurial: http://mercurial.selenic.com/j0Kh/jÞhHh+hIj1h&}rJ(jÜjh)]rKU mercurialrLah*]h(]h,]h-]rMhauhOKÒhPhhQ]ubj-)rN}rO(h%X.. _Git: http://git-scm.com/j0Kh/jÞhHh+hIj1h&}rP(jÜjñh)]rQUgitrRah*]h(]h,]h-]rSh auhOKÔhPhhQ]ubj-)rT}rU(h%X1.. _Zookeeper: http://hadoop.apache.org/zookeeperj0Kh/jÞhHh+hIj1h&}rV(jÜj4h)]rWU zookeeperrXah*]h(]h,]h-]rYhauhOKÖhPhhQ]ubj-)rZ}r[(h%Xc.. _Zookeeper recipes: http://hadoop.apache.org/zookeeper/docs/r3.1.1/recipes.html#sc_recipes_Locksj0Kh/jÞhHh+hIj1h&}r\(jÜjÂh)]r]Uzookeeper-recipesr^ah*]h(]h,]h-]r_hauhOKØhPhhQ]ubj-)r`}ra(h%X<.. _Metacat: http://knb.ecoinformatics.org/software/metacat/j0Kh/jÞhHh+hIj1h&}rb(jÜj$h)]rcUmetacatrdah*]h(]h,]h-]rehauhOKÚhPhhQ]ubj-)rf}rg(h%X%.. _Bazaar: http://bazaar-vcs.org/en/j0Kh/jÞhHh+hIj1h&}rh(jÜjh)]riUbazaarrjah*]h(]h,]h-]rkhauhOKÜhPhhQ]ubj-)rl}rm(h%X(.. _hazelcast: http://www.hazelcast.com/j0Kh/jÞhHh+hIj1h&}rn(jÜjãh)]roU hazelcastrpah*]h(]h,]h-]rqhauhOKÞhPhhQ]ubeubeubeubhHh+hIhJh&}rr(h(]h,]h*]h)]rsU%metacat-as-replicating-object-managerrtah-]ruhauhOK`hPhhQ]rv(hS)rw}rx(h%X%Metacat As Replicating Object Managerryh/hDhHh+hIhWh&}rz(h(]h,]h*]h)]h-]uhOK`hPhhQ]r{hZX%Metacat As Replicating Object Managerr|…r}}r~(h%jyh/jwubaubhy)r}r€(h%XËMetacat_ is a flexible metadata database that utilizes XML as a common syntax for representing various types of metadata. In general, Metacat can be considered functionally equivalent to an XML database.h/hDhHh+hIh}h&}r(h(]h,]h*]h)]h-]uhOKbhPhhQ]r‚(jÖ)rƒ}r„(h%XMetacat_jÙKh/jhIjÚh&}r…(UnameXMetacatjÜj$h)]h*]h(]h,]h-]uhQ]r†hZXMetacatr‡…rˆ}r‰(h%Uh/jƒubaubhZXà is a flexible metadata database that utilizes XML as a common syntax for representing various types of metadata. In general, Metacat can be considered functionally equivalent to an XML database.rŠ…r‹}rŒ(h%Xà is a flexible metadata database that utilizes XML as a common syntax for representing various types of metadata. In general, Metacat can be considered functionally equivalent to an XML database.h/jubeubhy)r}rŽ(h%XpMetacat supports replication of documents between instances, with replication being triggered by several events:rh/hDhHh+hIh}h&}r(h(]h,]h*]h)]h-]uhOKfhPhhQ]r‘hZXpMetacat supports replication of documents between instances, with replication being triggered by several events:r’…r“}r”(h%jh/jubaubhü)r•}r–(h%Uh/hDhHh+hIj&h&}r—(jX-h)]h*]h(]h,]h-]uhOKihPhhQ]r˜(hª)r™}rš(h%X!Timer, at pre-specified intervalsr›h/j•hHh+hIh·h&}rœ(h(]h,]h*]h)]h-]uhONhPhhQ]rhy)rž}rŸ(h%j›h/j™hHh+hIh}h&}r (h(]h,]h*]h)]h-]uhOKihQ]r¡hZX!Timer, at pre-specified intervalsr¢…r£}r¤(h%j›h/jžubaubaubhª)r¥}r¦(h%X,Inserts, when a document is inserted locallyr§h/j•hHh+hIh·h&}r¨(h(]h,]h*]h)]h-]uhONhPhhQ]r©hy)rª}r«(h%j§h/j¥hHh+hIh}h&}r¬(h(]h,]h*]h)]h-]uhOKjhQ]r­hZX,Inserts, when a document is inserted locallyr®…r¯}r°(h%j§h/jªubaubaubhª)r±}r²(h%X+Updates, when a document is updated locallyr³h/j•hHh+hIh·h&}r´(h(]h,]h*]h)]h-]uhONhPhhQ]rµhy)r¶}r·(h%j³h/j±hHh+hIh}h&}r¸(h(]h,]h*]h)]h-]uhOKkhQ]r¹hZX+Updates, when a document is updated locallyrº…r»}r¼(h%j³h/j¶ubaubaubhª)r½}r¾(h%XOLock, when a lock is requested on a document (replication after lock received) h/j•hHh+hIh·h&}r¿(h(]h,]h*]h)]h-]uhONhPhhQ]rÀhy)rÁ}rÂ(h%XNLock, when a lock is requested on a document (replication after lock received)rÃh/j½hHh+hIh}h&}rÄ(h(]h,]h*]h)]h-]uhOKlhQ]rÅhZXNLock, when a lock is requested on a document (replication after lock received)rÆ…rÇ}rÈ(h%jÃh/jÁubaubaubeubhy)rÉ}rÊ(h%XÍWith Metacat filling the role of the Coordinating Node Object Store, each CN Metacat instance would replicate with the other instances on the CNs. The configuration for DataONE CNs would be something like:rËh/hDhHh+hIh}h&}rÌ(h(]h,]h*]h)]h-]uhOKnhPhhQ]rÍhZXÍWith Metacat filling the role of the Coordinating Node Object Store, each CN Metacat instance would replicate with the other instances on the CNs. The configuration for DataONE CNs would be something like:rÎ…rÏ}rÐ(h%jËh/jÉubaubhAeubhHh+hIUtablerÑh&}rÒ(h(]h,]h*]h)]h-]uhONhPhhQ]rÓh=aubhQ]rÔ(cdocutils.nodes colspec rÕ)rÖ}r×(h%Uh&}rØ(h)]h*]h(]h,]h-]UcolwidthKuh/h=hQ]hIUcolspecrÙubjÕ)rÚ}rÛ(h%Uh&}rÜ(h)]h*]h(]h,]h-]UcolwidthK uh/h=hQ]hIjÙubjÕ)rÝ}rÞ(h%Uh&}rß(h)]h*]h(]h,]h-]UcolwidthK uh/h=hQ]hIjÙubjÕ)rà}rá(h%Uh&}râ(h)]h*]h(]h,]h-]UcolwidthK uh/h=hQ]hIjÙubjÕ)rã}rä(h%Uh&}rå(h)]h*]h(]h,]h-]UcolwidthKuh/h=hQ]hIjÙubcdocutils.nodes thead ræ)rç}rè(h%Uh&}ré(h(]h,]h*]h)]h-]uh/h=hQ]rêh4)rë}rì(h%Uh&}rí(h(]h,]h*]h)]h-]uh/jçhQ]rî(h0)rï}rð(h%Uh&}rñ(h(]h,]h*]h)]h-]uh/jëhQ]ròhy)ró}rô(h%Xhostrõh/jïhHh+hIh}h&}rö(h(]h,]h*]h)]h-]uhOKshQ]r÷hZXhostrø…rù}rú(h%jõh/jóubaubahIUentryrûubh0)rü}rý(h%Uh&}rþ(h(]h,]h*]h)]h-]uh/jëhQ]rÿhy)r}r(h%Xserverrh/jühHh+hIh}h&}r(h(]h,]h*]h)]h-]uhOKshQ]rhZXserverr…r}r(h%jh/jubaubahIjûubh0)r}r (h%Uh&}r (h(]h,]h*]h)]h-]uh/jëhQ]r hy)r }r (h%X replicaterh/jhHh+hIh}h&}r(h(]h,]h*]h)]h-]uhOKshQ]rhZX replicater…r}r(h%jh/j ubaubahIjûubh0)r}r(h%Uh&}r(h(]h,]h*]h)]h-]uh/jëhQ]rhy)r}r(h%X datareplicaterh/jhHh+hIh}h&}r(h(]h,]h*]h)]h-]uhOKshQ]rhZX datareplicater…r}r(h%jh/jubaubahIjûubh0)r }r!(h%Uh&}r"(h(]h,]h*]h)]h-]uh/jëhQ]r#hy)r$}r%(h%Xhubr&h/j hHh+hIh}h&}r'(h(]h,]h*]h)]h-]uhOKshQ]r(hZXhubr)…r*}r+(h%j&h/j$ubaubahIjûubehIUrowr,ubahIUtheadr-ubh9ehIUtgroupr.ubhQ]r/(h4)r0}r1(h%Uh&}r2(h(]h,]h*]h)]h-]uh/h9hQ]r3(h0)r4}r5(h%Uh&}r6(h(]h,]h*]h)]h-]uh/j0hQ]r7hy)r8}r9(h%Xcn1r:h/j4hHh+hIh}h&}r;(h(]h,]h*]h)]h-]uhOKuhQ]r<hZXcn1r=…r>}r?(h%j:h/j8ubaubahIjûubh0)r@}rA(h%Uh&}rB(h(]h,]h*]h)]h-]uh/j0hQ]rChy)rD}rE(h%X localhostrFh/j@hHh+hIh}h&}rG(h(]h,]h*]h)]h-]uhOKuhQ]rHhZX localhostrI…rJ}rK(h%jFh/jDubaubahIjûubh0)rL}rM(h%Uh&}rN(h(]h,]h*]h)]h-]uh/j0hQ]rOhy)rP}rQ(h%X0h/jLhHh+hIh}h&}rR(h(]h,]h*]h)]h-]uhOKuhQ]rShZX0…rT}rU(h%X0h/jPubaubahIjûubh0)rV}rW(h%Uh&}rX(h(]h,]h*]h)]h-]uh/j0hQ]rYhy)rZ}r[(h%X0h/jVhHh+hIh}h&}r\(h(]h,]h*]h)]h-]uhOKuhQ]r]hZX0…r^}r_(h%X0h/jZubaubahIjûubh0)r`}ra(h%Uh&}rb(h(]h,]h*]h)]h-]uh/j0hQ]rchy)rd}re(h%X1h/j`hHh+hIh}h&}rf(h(]h,]h*]h)]h-]uhOKuhQ]rghZX1…rh}ri(h%X1h/jdubaubahIjûubehIj,ubh5h4)rj}rk(h%Uh&}rl(h(]h,]h*]h)]h-]uh/h9hQ]rm(h0)rn}ro(h%Uh&}rp(h(]h,]h*]h)]h-]uh/jjhQ]rqhy)rr}rs(h%X.h/jnhHh+hIh}h&}rt(h(]h,]h*]h)]h-]uhOKwhQ]ruhZX.…rv}rw(h%X.h/jrubaubahIjûubh0)rx}ry(h%Uh&}rz(h(]h,]h*]h)]h-]uh/jjhQ]r{hy)r|}r}(h%Xcn3r~h/jxhHh+hIh}h&}r(h(]h,]h*]h)]h-]uhOKwhQ]r€hZXcn3r…r‚}rƒ(h%j~h/j|ubaubahIjûubh0)r„}r…(h%Uh&}r†(h(]h,]h*]h)]h-]uh/jjhQ]r‡hy)rˆ}r‰(h%X1h/j„hHh+hIh}h&}rŠ(h(]h,]h*]h)]h-]uhOKwhQ]r‹hZX1…rŒ}r(h%X1h/jˆubaubahIjûubh0)rŽ}r(h%Uh&}r(h(]h,]h*]h)]h-]uh/jjhQ]r‘hy)r’}r“(h%X0h/jŽhHh+hIh}h&}r”(h(]h,]h*]h)]h-]uhOKwhQ]r•hZX0…r–}r—(h%X0h/j’ubaubahIjûubh0)r˜}r™(h%Uh&}rš(h(]h,]h*]h)]h-]uh/jjhQ]r›hy)rœ}r(h%X1h/j˜hHh+hIh}h&}rž(h(]h,]h*]h)]h-]uhOKwhQ]rŸhZX1…r }r¡(h%X1h/jœubaubahIjûubehIj,ubh4)r¢}r£(h%Uh&}r¤(h(]h,]h*]h)]h-]uh/h9hQ]r¥(h0)r¦}r§(h%Uh&}r¨(h(]h,]h*]h)]h-]uh/j¢hQ]r©hy)rª}r«(h%Xcn2r¬h/j¦hHh+hIh}h&}r­(h(]h,]h*]h)]h-]uhOKxhQ]r®hZXcn2r¯…r°}r±(h%j¬h/jªubaubahIjûubh0)r²}r³(h%Uh&}r´(h(]h,]h*]h)]h-]uh/j¢hQ]rµhy)r¶}r·(h%X localhostr¸h/j²hHh+hIh}h&}r¹(h(]h,]h*]h)]h-]uhOKxhQ]rºhZX localhostr»…r¼}r½(h%j¸h/j¶ubaubahIjûubh0)r¾}r¿(h%Uh&}rÀ(h(]h,]h*]h)]h-]uh/j¢hQ]rÁhy)rÂ}rÃ(h%X0h/j¾hHh+hIh}h&}rÄ(h(]h,]h*]h)]h-]uhOKxhQ]rÅhZX0…rÆ}rÇ(h%X0h/jÂubaubahIjûubh0)rÈ}rÉ(h%Uh&}rÊ(h(]h,]h*]h)]h-]uh/j¢hQ]rËhy)rÌ}rÍ(h%X0h/jÈhHh+hIh}h&}rÎ(h(]h,]h*]h)]h-]uhOKxhQ]rÏhZX0…rÐ}rÑ(h%X0h/jÌubaubahIjûubh0)rÒ}rÓ(h%Uh&}rÔ(h(]h,]h*]h)]h-]uh/j¢hQ]rÕhy)rÖ}r×(h%X1h/jÒhHh+hIh}h&}rØ(h(]h,]h*]h)]h-]uhOKxhQ]rÙhZX1…rÚ}rÛ(h%X1h/jÖubaubahIjûubehIj,ubh4)rÜ}rÝ(h%Uh&}rÞ(h(]h,]h*]h)]h-]uh/h9hQ]rß(h0)rà}rá(h%Uh&}râ(h(]h,]h*]h)]h-]uh/jÜhQ]rãhy)rä}rå(h%X.h/jàhHh+hIh}h&}ræ(h(]h,]h*]h)]h-]uhOKyhQ]rçhZX.…rè}ré(h%X.h/jäubaubahIjûubh0)rê}rë(h%Uh&}rì(h(]h,]h*]h)]h-]uh/jÜhQ]ríhy)rî}rï(h%Xcn1rðh/jêhHh+hIh}h&}rñ(h(]h,]h*]h)]h-]uhOKyhQ]ròhZXcn1ró…rô}rõ(h%jðh/jîubaubahIjûubh0)rö}r÷(h%Uh&}rø(h(]h,]h*]h)]h-]uh/jÜhQ]rùhy)rú}rû(h%X1h/jöhHh+hIh}h&}rü(h(]h,]h*]h)]h-]uhOKyhQ]rýhZX1…rþ}rÿ(h%X1h/júubaubahIjûubh0)r}r(h%Uh&}r(h(]h,]h*]h)]h-]uh/jÜhQ]rhy)r}r(h%X0h/jhHh+hIh}h&}r(h(]h,]h*]h)]h-]uhOKyhQ]rhZX0…r}r (h%X0h/jubaubahIjûubh0)r }r (h%Uh&}r (h(]h,]h*]h)]h-]uh/jÜhQ]r hy)r}r(h%X1h/j hHh+hIh}h&}r(h(]h,]h*]h)]h-]uhOKyhQ]rhZX1…r}r(h%X1h/jubaubahIjûubehIj,ubh4)r}r(h%Uh&}r(h(]h,]h*]h)]h-]uh/h9hQ]r(h0)r}r(h%Uh&}r(h(]h,]h*]h)]h-]uh/jhQ]rhy)r}r(h%X.h/jhHh+hIh}h&}r(h(]h,]h*]h)]h-]uhOKzhQ]rhZX.…r }r!(h%X.h/jubaubahIjûubh0)r"}r#(h%Uh&}r$(h(]h,]h*]h)]h-]uh/jhQ]r%hy)r&}r'(h%Xcn3r(h/j"hHh+hIh}h&}r)(h(]h,]h*]h)]h-]uhOKzhQ]r*hZXcn3r+…r,}r-(h%j(h/j&ubaubahIjûubh0)r.}r/(h%Uh&}r0(h(]h,]h*]h)]h-]uh/jhQ]r1hy)r2}r3(h%X1h/j.hHh+hIh}h&}r4(h(]h,]h*]h)]h-]uhOKzhQ]r5hZX1…r6}r7(h%X1h/j2ubaubahIjûubh0)r8}r9(h%Uh&}r:(h(]h,]h*]h)]h-]uh/jhQ]r;hy)r<}r=(h%X0h/j8hHh+hIh}h&}r>(h(]h,]h*]h)]h-]uhOKzhQ]r?hZX0…r@}rA(h%X0h/j<ubaubahIjûubh0)rB}rC(h%Uh&}rD(h(]h,]h*]h)]h-]uh/jhQ]rEhy)rF}rG(h%X1h/jBhHh+hIh}h&}rH(h(]h,]h*]h)]h-]uhOKzhQ]rIhZX1…rJ}rK(h%X1h/jFubaubahIjûubehIj,ubh4)rL}rM(h%Uh&}rN(h(]h,]h*]h)]h-]uh/h9hQ]rO(h0)rP}rQ(h%Uh&}rR(h(]h,]h*]h)]h-]uh/jLhQ]rShy)rT}rU(h%Xcn3rVh/jPhHh+hIh}h&}rW(h(]h,]h*]h)]h-]uhOK{hQ]rXhZXcn3rY…rZ}r[(h%jVh/jTubaubahIjûubh0)r\}r](h%Uh&}r^(h(]h,]h*]h)]h-]uh/jLhQ]r_hy)r`}ra(h%X localhostrbh/j\hHh+hIh}h&}rc(h(]h,]h*]h)]h-]uhOK{hQ]rdhZX localhostre…rf}rg(h%jbh/j`ubaubahIjûubh0)rh}ri(h%Uh&}rj(h(]h,]h*]h)]h-]uh/jLhQ]rkhy)rl}rm(h%X0h/jhhHh+hIh}h&}rn(h(]h,]h*]h)]h-]uhOK{hQ]rohZX0…rp}rq(h%X0h/jlubaubahIjûubh0)rr}rs(h%Uh&}rt(h(]h,]h*]h)]h-]uh/jLhQ]ruhy)rv}rw(h%X0h/jrhHh+hIh}h&}rx(h(]h,]h*]h)]h-]uhOK{hQ]ryhZX0…rz}r{(h%X0h/jvubaubahIjûubh0)r|}r}(h%Uh&}r~(h(]h,]h*]h)]h-]uh/jLhQ]rhy)r€}r(h%X1h/j|hHh+hIh}h&}r‚(h(]h,]h*]h)]h-]uhOK{hQ]rƒhZX1…r„}r…(h%X1h/j€ubaubahIjûubehIj,ubh4)r†}r‡(h%Uh&}rˆ(h(]h,]h*]h)]h-]uh/h9hQ]r‰(h0)rŠ}r‹(h%Uh&}rŒ(h(]h,]h*]h)]h-]uh/j†hQ]rhy)rŽ}r(h%X.h/jŠhHh+hIh}h&}r(h(]h,]h*]h)]h-]uhOK|hQ]r‘hZX.…r’}r“(h%X.h/jŽubaubahIjûubh0)r”}r•(h%Uh&}r–(h(]h,]h*]h)]h-]uh/j†hQ]r—hy)r˜}r™(h%Xcn1ršh/j”hHh+hIh}h&}r›(h(]h,]h*]h)]h-]uhOK|hQ]rœhZXcn1r…rž}rŸ(h%jšh/j˜ubaubahIjûubh0)r }r¡(h%Uh&}r¢(h(]h,]h*]h)]h-]uh/j†hQ]r£hy)r¤}r¥(h%X1h/j hHh+hIh}h&}r¦(h(]h,]h*]h)]h-]uhOK|hQ]r§hZX1…r¨}r©(h%X1h/j¤ubaubahIjûubh0)rª}r«(h%Uh&}r¬(h(]h,]h*]h)]h-]uh/j†hQ]r­hy)r®}r¯(h%X0h/jªhHh+hIh}h&}r°(h(]h,]h*]h)]h-]uhOK|hQ]r±hZX0…r²}r³(h%X0h/j®ubaubahIjûubh0)r´}rµ(h%Uh&}r¶(h(]h,]h*]h)]h-]uh/j†hQ]r·hy)r¸}r¹(h%X1h/j´hHh+hIh}h&}rº(h(]h,]h*]h)]h-]uhOK|hQ]r»hZX1…r¼}r½(h%X1h/j¸ubaubahIjûubehIj,ubh4)r¾}r¿(h%Uh&}rÀ(h(]h,]h*]h)]h-]uh/h9hQ]rÁ(h0)rÂ}rÃ(h%Uh&}rÄ(h(]h,]h*]h)]h-]uh/j¾hQ]rÅhy)rÆ}rÇ(h%X.h/jÂhHh+hIh}h&}rÈ(h(]h,]h*]h)]h-]uhOK}hQ]rÉhZX.…rÊ}rË(h%X.h/jÆubaubahIjûubh0)rÌ}rÍ(h%Uh&}rÎ(h(]h,]h*]h)]h-]uh/j¾hQ]rÏhy)rÐ}rÑ(h%Xcn2rÒh/jÌhHh+hIh}h&}rÓ(h(]h,]h*]h)]h-]uhOK}hQ]rÔhZXcn2rÕ…rÖ}r×(h%jÒh/jÐubaubahIjûubh0)rØ}rÙ(h%Uh&}rÚ(h(]h,]h*]h)]h-]uh/j¾hQ]rÛhy)rÜ}rÝ(h%X1h/jØhHh+hIh}h&}rÞ(h(]h,]h*]h)]h-]uhOK}hQ]rßhZX1…rà}rá(h%X1h/jÜubaubahIjûubh0)râ}rã(h%Uh&}rä(h(]h,]h*]h)]h-]uh/j¾hQ]råhy)ræ}rç(h%X0h/jâhHh+hIh}h&}rè(h(]h,]h*]h)]h-]uhOK}hQ]réhZX0…rê}rë(h%X0h/jæubaubahIjûubh0)rì}rí(h%Uh&}rî(h(]h,]h*]h)]h-]uh/j¾hQ]rïhy)rð}rñ(h%X1h/jìhHh+hIh}h&}rò(h(]h,]h*]h)]h-]uhOK}hQ]róhZX1…rô}rõ(h%X1h/jðubaubahIjûubehIj,ubehIUtbodyröubhQ]r÷(h1h0)rø}rù(h%Uh&}rú(h(]h,]h*]h)]h-]uh/h5hQ]rûhy)rü}rý(h%Xcn2rþh/jøhHh+hIh}h&}rÿ(h(]h,]h*]h)]h-]uhOKvhQ]rhZXcn2r…r}r(h%jþh/jüubaubahIjûubh0)r}r(h%Uh&}r(h(]h,]h*]h)]h-]uh/h5hQ]rhy)r}r (h%X1h/jhHh+hIh}h&}r (h(]h,]h*]h)]h-]uhOKvhQ]r hZX1…r }r (h%X1h/jubaubahIjûubh0)r}r(h%Uh&}r(h(]h,]h*]h)]h-]uh/h5hQ]rhy)r}r(h%X0h/jhHh+hIh}h&}r(h(]h,]h*]h)]h-]uhOKvhQ]rhZX0…r}r(h%X0h/jubaubahIjûubh0)r}r(h%Uh&}r(h(]h,]h*]h)]h-]uh/h5hQ]rhy)r}r(h%X1h/jhHh+hIh}h&}r(h(]h,]h*]h)]h-]uhOKvhQ]rhZX1…r }r!(h%X1h/jubaubahIjûubehIj,ubhQ]r"hy)r#}r$(h%X.h/h1hHh+hIh}h&}r%(h(]h,]h*]h)]h-]uhOKvhQ]r&hZX.…r'}r((h%X.h/j#ubaubahIjûubhQ]r)hy)r*}r+(h%XeUnexpected possible title overline or transition. Treating it as ordinary text because it's so short.h&}r,(h(]h,]h*]h)]h-]uh/h#hQ]r-hZXeUnexpected possible title overline or transition. Treating it as ordinary text because it's so short.r.…r/}r0(h%Uh/j*ubahIh}ubahIUsystem_messager1ubh")r2}r3(h%Uh&}r4(h(]UlevelKh)]h*]Usourceh+h,]h-]UlineKxUtypeh.uh/jnhQ]r5hy)r6}r7(h%XeUnexpected possible title overline or transition. Treating it as ordinary text because it's so short.h&}r8(h(]h,]h*]h)]h-]uh/j2hQ]r9hZXeUnexpected possible title overline or transition. Treating it as ordinary text because it's so short.r:…r;}r<(h%Uh/j6ubahIh}ubahIj1ubh")r=}r>(h%Uh&}r?(h(]UlevelKh)]h*]Usourceh+h,]h-]UlineKzUtypeh.uh/jàhQ]r@hy)rA}rB(h%XeUnexpected possible title overline or transition. Treating it as ordinary text because it's so short.h&}rC(h(]h,]h*]h)]h-]uh/j=hQ]rDhZXeUnexpected possible title overline or transition. Treating it as ordinary text because it's so short.rE…rF}rG(h%Uh/jAubahIh}ubahIj1ubh")rH}rI(h%Uh&}rJ(h(]UlevelKh)]h*]Usourceh+h,]h-]UlineK{Utypeh.uh/jhQ]rKhy)rL}rM(h%XeUnexpected possible title overline or transition. Treating it as ordinary text because it's so short.h&}rN(h(]h,]h*]h)]h-]uh/jHhQ]rOhZXeUnexpected possible title overline or transition. Treating it as ordinary text because it's so short.rP…rQ}rR(h%Uh/jLubahIh}ubahIj1ubh")rS}rT(h%Uh&}rU(h(]UlevelKh)]h*]Usourceh+h,]h-]UlineK}Utypeh.uh/jŠhQ]rVhy)rW}rX(h%XeUnexpected possible title overline or transition. Treating it as ordinary text because it's so short.h&}rY(h(]h,]h*]h)]h-]uh/jShQ]rZhZXeUnexpected possible title overline or transition. Treating it as ordinary text because it's so short.r[…r\}r](h%Uh/jWubahIh}ubahIj1ubh")r^}r_(h%Uh&}r`(h(]UlevelKh)]h*]Usourceh+h,]h-]UlineK~Utypeh.uh/jÂhQ]rahy)rb}rc(h%XeUnexpected possible title overline or transition. Treating it as ordinary text because it's so short.h&}rd(h(]h,]h*]h)]h-]uh/j^hQ]rehZXeUnexpected possible title overline or transition. Treating it as ordinary text because it's so short.rf…rg}rh(h%Uh/jbubahIh}ubahIj1ubeUcurrent_sourceriNU decorationrjNUautofootnote_startrkKUnameidsrl}rm(hj^hj4hjXh hh jïh hMh j,h jRhjphj[hjœhjFhjrhjÍhhÕhjâhjdhj=hjchjjhjLhjthj@hj:uhQ]rnhFah%UU transformerroNU footnote_refsrp}rqUrefnamesrr}rs(Xzookeeper recipes]rtj¿aXgit]ru(jîj eXdrbd]rvj×aX mercurial]rw(jÿjeXmetacat]rx(j!jƒeX zookeeper]ry(j1j®eXdistributed version control]rzjaXbazaar]r{jajâ]r|jßauUsymbol_footnotesr}]r~Uautofootnote_refsr]r€Usymbol_footnote_refsr]r‚U citationsrƒ]r„hPhU current_liner…NUtransform_messagesr†]r‡(h")rˆ}r‰(h%Uh&}rŠ(h(]UlevelKh)]h*]Usourceh+h,]h-]UlineKÌUtypeh.uhQ]r‹hy)rŒ}r(h%Uh&}rŽ(h(]h,]h*]h)]h-]uh/jˆhQ]rhZX4Hyperlink target "mm_replication" is not referenced.r…r‘}r’(h%Uh/jŒubahIh}ubahIj1ubh")r“}r”(h%Uh&}r•(h(]UlevelKh)]h*]Usourceh+h,]h-]UlineKÎUtypeh.uhQ]r–hy)r—}r˜(h%Uh&}r™(h(]h,]h*]h)]h-]uh/j“hQ]ršhZX:Hyperlink target "389 directory server" is not referenced.r›…rœ}r(h%Uh/j—ubahIh}ubahIj1ubeUreporterržNUid_startrŸKU autofootnotesr ]r¡U citation_refsr¢}r£Uindirect_targetsr¤]r¥Usettingsr¦(cdocutils.frontend Values r§or¨}r©(Ufootnote_backlinksrªKUrecord_dependenciesr«NU rfc_base_urlr¬Uhttps://tools.ietf.org/html/r­U tracebackr®ˆUpep_referencesr¯NUstrip_commentsr°NU toc_backlinksr±jûU language_coder²Uenr³U datestampr´NU report_levelrµKU _destinationr¶NU halt_levelr·KU strip_classesr¸NhWNUerror_encoding_error_handlerr¹UbackslashreplacerºUdebugr»NUembed_stylesheetr¼‰Uoutput_encoding_error_handlerr½Ustrictr¾U sectnum_xformr¿KUdump_transformsrÀNU docinfo_xformrÁKUwarning_streamrÂNUpep_file_url_templaterÃUpep-%04drÄUexit_status_levelrÅKUconfigrÆNUstrict_visitorrÇNUcloak_email_addressesrȈUtrim_footnote_reference_spacerɉUenvrÊNUdump_pseudo_xmlrËNUexpose_internalsrÌNUsectsubtitle_xformr͉U source_linkrÎNUrfc_referencesrÏNUoutput_encodingrÐUutf-8rÑU source_urlrÒNUinput_encodingrÓU utf-8-sigrÔU_disable_configrÕNU id_prefixrÖUU tab_widthr×KUerror_encodingrØUUTF-8rÙU_sourcerÚh+Ugettext_compactrÛˆU generatorrÜNUdump_internalsrÝNU smart_quotesrÞ‰U pep_base_urlrßU https://www.python.org/dev/peps/ràUsyntax_highlightráUlongrâUinput_encoding_error_handlerrãj¾Uauto_id_prefixräUidråUdoctitle_xformræ‰Ustrip_elements_with_classesrçNU _config_filesrè]Ufile_insertion_enabledréˆU raw_enabledrêKU dump_settingsrëNubUsymbol_footnote_startrìKUidsrí}rî(j=j9j4j.j^jZjXjThhŒhMhFjjjfjpjlj@j<hÕhÑjïjëjdj`jrjnjâjÞj[jWjRjNjcj_jÍjÉjFjBjthDj:j6jLjHjœj˜j,j(uUsubstitution_namesrï}rðhIhPh&}rñ(h(]h)]h*]Usourceh+h,]h-]uU footnotesrò]róUrefidsrô}rõub.