http://git-wip-us.apache.org/repos/asf/zookeeper/blob/4607a3e1/src/docs/src/documentation/content/xdocs/zookeeperTutorial.xml ---------------------------------------------------------------------- diff --git a/src/docs/src/documentation/content/xdocs/zookeeperTutorial.xml b/src/docs/src/documentation/content/xdocs/zookeeperTutorial.xml deleted file mode 100644 index e320ed6..0000000 --- a/src/docs/src/documentation/content/xdocs/zookeeperTutorial.xml +++ /dev/null @@ -1,712 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - Copyright 2002-2004 The Apache Software Foundation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---> - -<!DOCTYPE article PUBLIC "-//OASIS//DTD Simplified DocBook XML V1.0//EN" -"http://www.oasis-open.org/docbook/xml/simple/1.0/sdocbook.dtd"> -<article id="ar_Tutorial"> - <title>Programming with ZooKeeper - A basic tutorial</title> - - <articleinfo> - <legalnotice> - <para>Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. You may - obtain a copy of the License at <ulink - url="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</ulink>.</para> - - <para>Unless required by applicable law or agreed to in writing, - software distributed under the License is distributed on an "AS IS" - BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied. See the License for the specific language governing permissions - and limitations under the License.</para> - </legalnotice> - - <abstract> - <para>This article contains sample Java code for simple implementations of barrier - and consumers queues..</para> - - </abstract> - </articleinfo> - - <section id="ch_Introduction"> - <title>Introduction</title> - - <para>In this tutorial, we show simple implementations of barriers and - producer-consumer queues using ZooKeeper. We call the respective classes Barrier and Queue. - These examples assume that you have at least one ZooKeeper server running.</para> - - <para>Both primitives use the following common excerpt of code:</para> - - <programlisting> - static ZooKeeper zk = null; - static Integer mutex; - - String root; - - SyncPrimitive(String address) { - if(zk == null){ - try { - System.out.println("Starting ZK:"); - zk = new ZooKeeper(address, 3000, this); - mutex = new Integer(-1); - System.out.println("Finished starting ZK: " + zk); - } catch (IOException e) { - System.out.println(e.toString()); - zk = null; - } - } - } - - synchronized public void process(WatchedEvent event) { - synchronized (mutex) { - mutex.notify(); - } - } -</programlisting> - -<para>Both classes extend SyncPrimitive. In this way, we execute steps that are -common to all primitives in the constructor of SyncPrimitive. To keep the examples -simple, we create a ZooKeeper object the first time we instantiate either a barrier -object or a queue object, and we declare a static variable that is a reference -to this object. The subsequent instances of Barrier and Queue check whether a -ZooKeeper object exists. Alternatively, we could have the application creating a -ZooKeeper object and passing it to the constructor of Barrier and Queue.</para> -<para> -We use the process() method to process notifications triggered due to watches. -In the following discussion, we present code that sets watches. A watch is internal -structure that enables ZooKeeper to notify a client of a change to a node. For example, -if a client is waiting for other clients to leave a barrier, then it can set a watch and -wait for modifications to a particular node, which can indicate that it is the end of the wait. -This point becomes clear once we go over the examples. -</para> -</section> - - <section id="sc_barriers"><title>Barriers</title> - - <para> - A barrier is a primitive that enables a group of processes to synchronize the - beginning and the end of a computation. The general idea of this implementation - is to have a barrier node that serves the purpose of being a parent for individual - process nodes. Suppose that we call the barrier node "/b1". Each process "p" then - creates a node "/b1/p". Once enough processes have created their corresponding - nodes, joined processes can start the computation. - </para> - - <para>In this example, each process instantiates a Barrier object, and its constructor takes as parameters:</para> - - <itemizedlist><listitem><para>the address of a ZooKeeper server (e.g., "zoo1.foo.com:2181")</para></listitem> -<listitem><para>the path of the barrier node on ZooKeeper (e.g., "/b1")</para></listitem> -<listitem><para>the size of the group of processes</para></listitem> -</itemizedlist> - -<para>The constructor of Barrier passes the address of the Zookeeper server to the -constructor of the parent class. The parent class creates a ZooKeeper instance if -one does not exist. The constructor of Barrier then creates a -barrier node on ZooKeeper, which is the parent node of all process nodes, and -we call root (<emphasis role="bold">Note:</emphasis> This is not the ZooKeeper root "/").</para> - -<programlisting> - /** - * Barrier constructor - * - * @param address - * @param root - * @param size - */ - Barrier(String address, String root, int size) { - super(address); - this.root = root; - this.size = size; - - // Create barrier node - if (zk != null) { - try { - Stat s = zk.exists(root, false); - if (s == null) { - zk.create(root, new byte[0], Ids.OPEN_ACL_UNSAFE, - CreateMode.PERSISTENT); - } - } catch (KeeperException e) { - System.out - .println("Keeper exception when instantiating queue: " - + e.toString()); - } catch (InterruptedException e) { - System.out.println("Interrupted exception"); - } - } - - // My node name - try { - name = new String(InetAddress.getLocalHost().getCanonicalHostName().toString()); - } catch (UnknownHostException e) { - System.out.println(e.toString()); - } - - } -</programlisting> -<para> -To enter the barrier, a process calls enter(). The process creates a node under -the root to represent it, using its host name to form the node name. It then wait -until enough processes have entered the barrier. A process does it by checking -the number of children the root node has with "getChildren()", and waiting for -notifications in the case it does not have enough. To receive a notification when -there is a change to the root node, a process has to set a watch, and does it -through the call to "getChildren()". In the code, we have that "getChildren()" -has two parameters. The first one states the node to read from, and the second is -a boolean flag that enables the process to set a watch. In the code the flag is true. -</para> - -<programlisting> - /** - * Join barrier - * - * @return - * @throws KeeperException - * @throws InterruptedException - */ - - boolean enter() throws KeeperException, InterruptedException{ - zk.create(root + "/" + name, new byte[0], Ids.OPEN_ACL_UNSAFE, - CreateMode.EPHEMERAL_SEQUENTIAL); - while (true) { - synchronized (mutex) { - List<String> list = zk.getChildren(root, true); - - if (list.size() < size) { - mutex.wait(); - } else { - return true; - } - } - } - } -</programlisting> -<para> -Note that enter() throws both KeeperException and InterruptedException, so it is -the responsibility of the application to catch and handle such exceptions.</para> - -<para> -Once the computation is finished, a process calls leave() to leave the barrier. -First it deletes its corresponding node, and then it gets the children of the root -node. If there is at least one child, then it waits for a notification (obs: note -that the second parameter of the call to getChildren() is true, meaning that -ZooKeeper has to set a watch on the the root node). Upon reception of a notification, -it checks once more whether the root node has any children.</para> - -<programlisting> - /** - * Wait until all reach barrier - * - * @return - * @throws KeeperException - * @throws InterruptedException - */ - - boolean leave() throws KeeperException, InterruptedException{ - zk.delete(root + "/" + name, 0); - while (true) { - synchronized (mutex) { - List<String> list = zk.getChildren(root, true); - if (list.size() > 0) { - mutex.wait(); - } else { - return true; - } - } - } - } - } -</programlisting> -</section> -<section id="sc_producerConsumerQueues"><title>Producer-Consumer Queues</title> -<para> -A producer-consumer queue is a distributed data structure that groups of processes -use to generate and consume items. Producer processes create new elements and add -them to the queue. Consumer processes remove elements from the list, and process them. -In this implementation, the elements are simple integers. The queue is represented -by a root node, and to add an element to the queue, a producer process creates a new node, -a child of the root node. -</para> - -<para> -The following excerpt of code corresponds to the constructor of the object. As -with Barrier objects, it first calls the constructor of the parent class, SyncPrimitive, -that creates a ZooKeeper object if one doesn't exist. It then verifies if the root -node of the queue exists, and creates if it doesn't. -</para> -<programlisting> - /** - * Constructor of producer-consumer queue - * - * @param address - * @param name - */ - Queue(String address, String name) { - super(address); - this.root = name; - // Create ZK node name - if (zk != null) { - try { - Stat s = zk.exists(root, false); - if (s == null) { - zk.create(root, new byte[0], Ids.OPEN_ACL_UNSAFE, - CreateMode.PERSISTENT); - } - } catch (KeeperException e) { - System.out - .println("Keeper exception when instantiating queue: " - + e.toString()); - } catch (InterruptedException e) { - System.out.println("Interrupted exception"); - } - } - } -</programlisting> - -<para> -A producer process calls "produce()" to add an element to the queue, and passes -an integer as an argument. To add an element to the queue, the method creates a -new node using "create()", and uses the SEQUENCE flag to instruct ZooKeeper to -append the value of the sequencer counter associated to the root node. In this way, -we impose a total order on the elements of the queue, thus guaranteeing that the -oldest element of the queue is the next one consumed. -</para> - -<programlisting> - /** - * Add element to the queue. - * - * @param i - * @return - */ - - boolean produce(int i) throws KeeperException, InterruptedException{ - ByteBuffer b = ByteBuffer.allocate(4); - byte[] value; - - // Add child with value i - b.putInt(i); - value = b.array(); - zk.create(root + "/element", value, Ids.OPEN_ACL_UNSAFE, - CreateMode.PERSISTENT_SEQUENTIAL); - - return true; - } -</programlisting> -<para> -To consume an element, a consumer process obtains the children of the root node, -reads the node with smallest counter value, and returns the element. Note that -if there is a conflict, then one of the two contending processes won't be able to -delete the node and the delete operation will throw an exception.</para> - -<para> -A call to getChildren() returns the list of children in lexicographic order. -As lexicographic order does not necessary follow the numerical order of the counter -values, we need to decide which element is the smallest. To decide which one has -the smallest counter value, we traverse the list, and remove the prefix "element" -from each one.</para> - -<programlisting> - /** - * Remove first element from the queue. - * - * @return - * @throws KeeperException - * @throws InterruptedException - */ - int consume() throws KeeperException, InterruptedException{ - int retvalue = -1; - Stat stat = null; - - // Get the first element available - while (true) { - synchronized (mutex) { - List<String> list = zk.getChildren(root, true); - if (list.size() == 0) { - System.out.println("Going to wait"); - mutex.wait(); - } else { - Integer min = new Integer(list.get(0).substring(7)); - for(String s : list){ - Integer tempValue = new Integer(s.substring(7)); - //System.out.println("Temporary value: " + tempValue); - if(tempValue < min) min = tempValue; - } - System.out.println("Temporary value: " + root + "/element" + min); - byte[] b = zk.getData(root + "/element" + min, - false, stat); - zk.delete(root + "/element" + min, 0); - ByteBuffer buffer = ByteBuffer.wrap(b); - retvalue = buffer.getInt(); - - return retvalue; - } - } - } - } - } -</programlisting> - -</section> - -<section> -<title>Complete example</title> -<para> -In the following section you can find a complete command line application to demonstrate the above mentioned -recipes. Use the following command to run it. -</para> -<programlisting> -ZOOBINDIR="[path_to_distro]/bin" -. "$ZOOBINDIR"/zkEnv.sh -java SyncPrimitive [Test Type] [ZK server] [No of elements] [Client type] -</programlisting> - -<section> -<title>Queue test</title> -<para>Start a producer to create 100 elements</para> -<programlisting> -java SyncPrimitive qTest localhost 100 p -</programlisting> - -<para>Start a consumer to consume 100 elements</para> -<programlisting> -java SyncPrimitive qTest localhost 100 c -</programlisting> -</section> - -<section> -<title>Barrier test</title> -<para>Start a barrier with 2 participants (start as many times as many participants you'd like to enter)</para> -<programlisting> -java SyncPrimitive bTest localhost 2 -</programlisting> -</section> - -<section id="sc_sourceListing"><title>Source Listing</title> -<example id="eg_SyncPrimitive_java"> -<title>SyncPrimitive.Java</title> -<programlisting> -import java.io.IOException; -import java.net.InetAddress; -import java.net.UnknownHostException; -import java.nio.ByteBuffer; -import java.util.List; -import java.util.Random; - -import org.apache.zookeeper.CreateMode; -import org.apache.zookeeper.KeeperException; -import org.apache.zookeeper.WatchedEvent; -import org.apache.zookeeper.Watcher; -import org.apache.zookeeper.ZooKeeper; -import org.apache.zookeeper.ZooDefs.Ids; -import org.apache.zookeeper.data.Stat; - -public class SyncPrimitive implements Watcher { - - static ZooKeeper zk = null; - static Integer mutex; - - String root; - - SyncPrimitive(String address) { - if(zk == null){ - try { - System.out.println("Starting ZK:"); - zk = new ZooKeeper(address, 3000, this); - mutex = new Integer(-1); - System.out.println("Finished starting ZK: " + zk); - } catch (IOException e) { - System.out.println(e.toString()); - zk = null; - } - } - //else mutex = new Integer(-1); - } - - synchronized public void process(WatchedEvent event) { - synchronized (mutex) { - //System.out.println("Process: " + event.getType()); - mutex.notify(); - } - } - - /** - * Barrier - */ - static public class Barrier extends SyncPrimitive { - int size; - String name; - - /** - * Barrier constructor - * - * @param address - * @param root - * @param size - */ - Barrier(String address, String root, int size) { - super(address); - this.root = root; - this.size = size; - - // Create barrier node - if (zk != null) { - try { - Stat s = zk.exists(root, false); - if (s == null) { - zk.create(root, new byte[0], Ids.OPEN_ACL_UNSAFE, - CreateMode.PERSISTENT); - } - } catch (KeeperException e) { - System.out - .println("Keeper exception when instantiating queue: " - + e.toString()); - } catch (InterruptedException e) { - System.out.println("Interrupted exception"); - } - } - - // My node name - try { - name = new String(InetAddress.getLocalHost().getCanonicalHostName().toString()); - } catch (UnknownHostException e) { - System.out.println(e.toString()); - } - - } - - /** - * Join barrier - * - * @return - * @throws KeeperException - * @throws InterruptedException - */ - - boolean enter() throws KeeperException, InterruptedException{ - zk.create(root + "/" + name, new byte[0], Ids.OPEN_ACL_UNSAFE, - CreateMode.EPHEMERAL_SEQUENTIAL); - while (true) { - synchronized (mutex) { - List<String> list = zk.getChildren(root, true); - - if (list.size() < size) { - mutex.wait(); - } else { - return true; - } - } - } - } - - /** - * Wait until all reach barrier - * - * @return - * @throws KeeperException - * @throws InterruptedException - */ - - boolean leave() throws KeeperException, InterruptedException{ - zk.delete(root + "/" + name, 0); - while (true) { - synchronized (mutex) { - List<String> list = zk.getChildren(root, true); - if (list.size() > 0) { - mutex.wait(); - } else { - return true; - } - } - } - } - } - - /** - * Producer-Consumer queue - */ - static public class Queue extends SyncPrimitive { - - /** - * Constructor of producer-consumer queue - * - * @param address - * @param name - */ - Queue(String address, String name) { - super(address); - this.root = name; - // Create ZK node name - if (zk != null) { - try { - Stat s = zk.exists(root, false); - if (s == null) { - zk.create(root, new byte[0], Ids.OPEN_ACL_UNSAFE, - CreateMode.PERSISTENT); - } - } catch (KeeperException e) { - System.out - .println("Keeper exception when instantiating queue: " - + e.toString()); - } catch (InterruptedException e) { - System.out.println("Interrupted exception"); - } - } - } - - /** - * Add element to the queue. - * - * @param i - * @return - */ - - boolean produce(int i) throws KeeperException, InterruptedException{ - ByteBuffer b = ByteBuffer.allocate(4); - byte[] value; - - // Add child with value i - b.putInt(i); - value = b.array(); - zk.create(root + "/element", value, Ids.OPEN_ACL_UNSAFE, - CreateMode.PERSISTENT_SEQUENTIAL); - - return true; - } - - - /** - * Remove first element from the queue. - * - * @return - * @throws KeeperException - * @throws InterruptedException - */ - int consume() throws KeeperException, InterruptedException{ - int retvalue = -1; - Stat stat = null; - - // Get the first element available - while (true) { - synchronized (mutex) { - List<String> list = zk.getChildren(root, true); - if (list.size() == 0) { - System.out.println("Going to wait"); - mutex.wait(); - } else { - Integer min = new Integer(list.get(0).substring(7)); - String minNode = list.get(0); - for(String s : list){ - Integer tempValue = new Integer(s.substring(7)); - //System.out.println("Temporary value: " + tempValue); - if(tempValue < min) { - min = tempValue; - minNode = s; - } - } - System.out.println("Temporary value: " + root + "/" + minNode); - byte[] b = zk.getData(root + "/" + minNode, - false, stat); - zk.delete(root + "/" + minNode, 0); - ByteBuffer buffer = ByteBuffer.wrap(b); - retvalue = buffer.getInt(); - - return retvalue; - } - } - } - } - } - - public static void main(String args[]) { - if (args[0].equals("qTest")) - queueTest(args); - else - barrierTest(args); - - } - - public static void queueTest(String args[]) { - Queue q = new Queue(args[1], "/app1"); - - System.out.println("Input: " + args[1]); - int i; - Integer max = new Integer(args[2]); - - if (args[3].equals("p")) { - System.out.println("Producer"); - for (i = 0; i < max; i++) - try{ - q.produce(10 + i); - } catch (KeeperException e){ - - } catch (InterruptedException e){ - - } - } else { - System.out.println("Consumer"); - - for (i = 0; i < max; i++) { - try{ - int r = q.consume(); - System.out.println("Item: " + r); - } catch (KeeperException e){ - i--; - } catch (InterruptedException e){ - - } - } - } - } - - public static void barrierTest(String args[]) { - Barrier b = new Barrier(args[1], "/b1", new Integer(args[2])); - try{ - boolean flag = b.enter(); - System.out.println("Entered barrier: " + args[2]); - if(!flag) System.out.println("Error when entering the barrier"); - } catch (KeeperException e){ - - } catch (InterruptedException e){ - - } - - // Generate random integer - Random rand = new Random(); - int r = rand.nextInt(100); - // Loop for rand iterations - for (int i = 0; i < r; i++) { - try { - Thread.sleep(100); - } catch (InterruptedException e) { - - } - } - try{ - b.leave(); - } catch (KeeperException e){ - - } catch (InterruptedException e){ - - } - System.out.println("Left barrier"); - } -} -</programlisting></example> -</section> -</section> - -</article>
http://git-wip-us.apache.org/repos/asf/zookeeper/blob/4607a3e1/src/docs/src/documentation/resources/images/2pc.jpg ---------------------------------------------------------------------- diff --git a/src/docs/src/documentation/resources/images/2pc.jpg b/src/docs/src/documentation/resources/images/2pc.jpg deleted file mode 100755 index fe4488f..0000000 Binary files a/src/docs/src/documentation/resources/images/2pc.jpg and /dev/null differ http://git-wip-us.apache.org/repos/asf/zookeeper/blob/4607a3e1/src/docs/src/documentation/resources/images/bk-overview.jpg ---------------------------------------------------------------------- diff --git a/src/docs/src/documentation/resources/images/bk-overview.jpg b/src/docs/src/documentation/resources/images/bk-overview.jpg deleted file mode 100644 index 6e12fb4..0000000 Binary files a/src/docs/src/documentation/resources/images/bk-overview.jpg and /dev/null differ http://git-wip-us.apache.org/repos/asf/zookeeper/blob/4607a3e1/src/docs/src/documentation/resources/images/favicon.ico ---------------------------------------------------------------------- diff --git a/src/docs/src/documentation/resources/images/favicon.ico b/src/docs/src/documentation/resources/images/favicon.ico deleted file mode 100644 index 161bcf7..0000000 Binary files a/src/docs/src/documentation/resources/images/favicon.ico and /dev/null differ http://git-wip-us.apache.org/repos/asf/zookeeper/blob/4607a3e1/src/docs/src/documentation/resources/images/hadoop-logo.jpg ---------------------------------------------------------------------- diff --git a/src/docs/src/documentation/resources/images/hadoop-logo.jpg b/src/docs/src/documentation/resources/images/hadoop-logo.jpg deleted file mode 100644 index 809525d..0000000 Binary files a/src/docs/src/documentation/resources/images/hadoop-logo.jpg and /dev/null differ http://git-wip-us.apache.org/repos/asf/zookeeper/blob/4607a3e1/src/docs/src/documentation/resources/images/state_dia.dia ---------------------------------------------------------------------- diff --git a/src/docs/src/documentation/resources/images/state_dia.dia b/src/docs/src/documentation/resources/images/state_dia.dia deleted file mode 100755 index 4a58a00..0000000 Binary files a/src/docs/src/documentation/resources/images/state_dia.dia and /dev/null differ http://git-wip-us.apache.org/repos/asf/zookeeper/blob/4607a3e1/src/docs/src/documentation/resources/images/state_dia.jpg ---------------------------------------------------------------------- diff --git a/src/docs/src/documentation/resources/images/state_dia.jpg b/src/docs/src/documentation/resources/images/state_dia.jpg deleted file mode 100755 index b6f4a8b..0000000 Binary files a/src/docs/src/documentation/resources/images/state_dia.jpg and /dev/null differ http://git-wip-us.apache.org/repos/asf/zookeeper/blob/4607a3e1/src/docs/src/documentation/resources/images/zkarch.jpg ---------------------------------------------------------------------- diff --git a/src/docs/src/documentation/resources/images/zkarch.jpg b/src/docs/src/documentation/resources/images/zkarch.jpg deleted file mode 100644 index a0e5fcc..0000000 Binary files a/src/docs/src/documentation/resources/images/zkarch.jpg and /dev/null differ http://git-wip-us.apache.org/repos/asf/zookeeper/blob/4607a3e1/src/docs/src/documentation/resources/images/zkcomponents.jpg ---------------------------------------------------------------------- diff --git a/src/docs/src/documentation/resources/images/zkcomponents.jpg b/src/docs/src/documentation/resources/images/zkcomponents.jpg deleted file mode 100644 index 7690578..0000000 Binary files a/src/docs/src/documentation/resources/images/zkcomponents.jpg and /dev/null differ http://git-wip-us.apache.org/repos/asf/zookeeper/blob/4607a3e1/src/docs/src/documentation/resources/images/zknamespace.jpg ---------------------------------------------------------------------- diff --git a/src/docs/src/documentation/resources/images/zknamespace.jpg b/src/docs/src/documentation/resources/images/zknamespace.jpg deleted file mode 100644 index 05534bc..0000000 Binary files a/src/docs/src/documentation/resources/images/zknamespace.jpg and /dev/null differ http://git-wip-us.apache.org/repos/asf/zookeeper/blob/4607a3e1/src/docs/src/documentation/resources/images/zkperfRW-3.2.jpg ---------------------------------------------------------------------- diff --git a/src/docs/src/documentation/resources/images/zkperfRW-3.2.jpg b/src/docs/src/documentation/resources/images/zkperfRW-3.2.jpg deleted file mode 100644 index 594b50b..0000000 Binary files a/src/docs/src/documentation/resources/images/zkperfRW-3.2.jpg and /dev/null differ http://git-wip-us.apache.org/repos/asf/zookeeper/blob/4607a3e1/src/docs/src/documentation/resources/images/zkperfRW.jpg ---------------------------------------------------------------------- diff --git a/src/docs/src/documentation/resources/images/zkperfRW.jpg b/src/docs/src/documentation/resources/images/zkperfRW.jpg deleted file mode 100644 index ad3019f..0000000 Binary files a/src/docs/src/documentation/resources/images/zkperfRW.jpg and /dev/null differ http://git-wip-us.apache.org/repos/asf/zookeeper/blob/4607a3e1/src/docs/src/documentation/resources/images/zkperfreliability.jpg ---------------------------------------------------------------------- diff --git a/src/docs/src/documentation/resources/images/zkperfreliability.jpg b/src/docs/src/documentation/resources/images/zkperfreliability.jpg deleted file mode 100644 index 232bba8..0000000 Binary files a/src/docs/src/documentation/resources/images/zkperfreliability.jpg and /dev/null differ http://git-wip-us.apache.org/repos/asf/zookeeper/blob/4607a3e1/src/docs/src/documentation/resources/images/zkservice.jpg ---------------------------------------------------------------------- diff --git a/src/docs/src/documentation/resources/images/zkservice.jpg b/src/docs/src/documentation/resources/images/zkservice.jpg deleted file mode 100644 index 1ec9154..0000000 Binary files a/src/docs/src/documentation/resources/images/zkservice.jpg and /dev/null differ http://git-wip-us.apache.org/repos/asf/zookeeper/blob/4607a3e1/src/docs/src/documentation/resources/images/zookeeper_small.gif ---------------------------------------------------------------------- diff --git a/src/docs/src/documentation/resources/images/zookeeper_small.gif b/src/docs/src/documentation/resources/images/zookeeper_small.gif deleted file mode 100644 index 4e8014f..0000000 Binary files a/src/docs/src/documentation/resources/images/zookeeper_small.gif and /dev/null differ http://git-wip-us.apache.org/repos/asf/zookeeper/blob/4607a3e1/src/docs/src/documentation/skinconf.xml ---------------------------------------------------------------------- diff --git a/src/docs/src/documentation/skinconf.xml b/src/docs/src/documentation/skinconf.xml deleted file mode 100644 index 9edf69e..0000000 --- a/src/docs/src/documentation/skinconf.xml +++ /dev/null @@ -1,360 +0,0 @@ -<?xml version="1.0"?> -<!-- - Copyright 2002-2004 The Apache Software Foundation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---> - -<!-- -Skin configuration file. This file contains details of your project, -which will be used to configure the chosen Forrest skin. ---> - -<!DOCTYPE skinconfig PUBLIC "-//APACHE//DTD Skin Configuration V0.6-3//EN" "http://forrest.apache.org/dtd/skinconfig-v06-3.dtd"> -<skinconfig> - <!-- To enable lucene search add provider="lucene" (default is google). - Add box-location="alt" to move the search box to an alternate location - (if the skin supports it) and box-location="all" to show it in all - available locations on the page. Remove the <search> element to show - no search box. @domain will enable sitesearch for the specific domain with google. - In other words google will search the @domain for the query string. - - --> - <search name="ZooKeeper" domain="zookeeper.apache.org" provider="google"/> - - <!-- Disable the print link? If enabled, invalid HTML 4.0.1 --> - <disable-print-link>true</disable-print-link> - <!-- Disable the PDF link? --> - <disable-pdf-link>false</disable-pdf-link> - <!-- Disable the POD link? --> - <disable-pod-link>true</disable-pod-link> - <!-- Disable the Text link? FIXME: NOT YET IMPLEMENETED. --> - <disable-txt-link>true</disable-txt-link> - <!-- Disable the xml source link? --> - <!-- The xml source link makes it possible to access the xml rendition - of the source frim the html page, and to have it generated statically. - This can be used to enable other sites and services to reuse the - xml format for their uses. Keep this disabled if you don't want other - sites to easily reuse your pages.--> - <disable-xml-link>true</disable-xml-link> - - <!-- Disable navigation icons on all external links? --> - <disable-external-link-image>true</disable-external-link-image> - - <!-- Disable w3c compliance links? - Use e.g. align="center" to move the compliance links logos to - an alternate location default is left. - (if the skin supports it) --> - <disable-compliance-links>true</disable-compliance-links> - - <!-- Render mailto: links unrecognisable by spam harvesters? --> - <obfuscate-mail-links>false</obfuscate-mail-links> - - <!-- Disable the javascript facility to change the font size --> - <disable-font-script>true</disable-font-script> - - <!-- project logo --> - <project-name>ZooKeeper</project-name> - <project-description>ZooKeeper: distributed coordination</project-description> - <project-url>http://zookeeper.apache.org/</project-url> - <project-logo>images/zookeeper_small.gif</project-logo> - - <!-- group logo --> - <group-name>Hadoop</group-name> - <group-description>Apache Hadoop</group-description> - <group-url>http://hadoop.apache.org/</group-url> - <group-logo>images/hadoop-logo.jpg</group-logo> - - <!-- optional host logo (e.g. sourceforge logo) - default skin: renders it at the bottom-left corner --> - <host-url></host-url> - <host-logo></host-logo> - - <!-- relative url of a favicon file, normally favicon.ico --> - <favicon-url>images/favicon.ico</favicon-url> - - <!-- The following are used to construct a copyright statement --> - <year></year> - <vendor>The Apache Software Foundation.</vendor> - <copyright-link>http://www.apache.org/licenses/</copyright-link> - - <!-- Some skins use this to form a 'breadcrumb trail' of links. - Use location="alt" to move the trail to an alternate location - (if the skin supports it). - Omit the location attribute to display the trail in the default location. - Use location="none" to not display the trail (if the skin supports it). - For some skins just set the attributes to blank. - --> - <trail> - <link1 name="Apache" href="http://www.apache.org/"/> - <link2 name="ZooKeeper" href="http://zookeeper.apache.org/"/> - <link3 name="ZooKeeper" href="http://zookeeper.apache.org/"/> - </trail> - - <!-- Configure the TOC, i.e. the Table of Contents. - @max-depth - how many "section" levels need to be included in the - generated Table of Contents (TOC). - @min-sections - Minimum required to create a TOC. - @location ("page","menu","page,menu", "none") - Where to show the TOC. - --> - <toc max-depth="2" min-sections="1" location="page"/> - - <!-- Heading types can be clean|underlined|boxed --> - <headings type="clean"/> - - <!-- The optional feedback element will be used to construct a - feedback link in the footer with the page pathname appended: - <a href="@href">{@to}</a> - <feedback to="[email protected]" - href="mailto:[email protected]?subject=Feedback " > - Send feedback about the website to: - </feedback> - --> - <!-- - extra-css - here you can define custom css-elements that are - a. overriding the fallback elements or - b. adding the css definition from new elements that you may have - used in your documentation. - --> - <extra-css> - <!--Example of b. - To define the css definition of a new element that you may have used - in the class attribute of a <p> node. - e.g. <p class="quote"/> - --> - p.quote { - margin-left: 2em; - padding: .5em; - background-color: #f0f0f0; - font-family: monospace; - } - - pre.code { - margin-left: 0em; - padding: 0.5em; - background-color: #f0f0f0; - font-family: monospace; - } - -<!-- patricks - .code { - font-family: "Courier New", Courier, monospace; - font-size: 110%; - } ---> - - </extra-css> - - <colors> - <!-- These values are used for the generated CSS files. --> - - <!-- Krysalis --> -<!-- - <color name="header" value="#FFFFFF"/> - - <color name="tab-selected" value="#a5b6c6" link="#000000" vlink="#000000" hlink="#000000"/> - <color name="tab-unselected" value="#F7F7F7" link="#000000" vlink="#000000" hlink="#000000"/> - <color name="subtab-selected" value="#a5b6c6" link="#000000" vlink="#000000" hlink="#000000"/> - <color name="subtab-unselected" value="#a5b6c6" link="#000000" vlink="#000000" hlink="#000000"/> - - <color name="heading" value="#a5b6c6"/> - <color name="subheading" value="#CFDCED"/> - - <color name="navstrip" value="#CFDCED" font="#000000" link="#000000" vlink="#000000" hlink="#000000"/> - <color name="toolbox" value="#a5b6c6"/> - <color name="border" value="#a5b6c6"/> - - <color name="menu" value="#F7F7F7" link="#000000" vlink="#000000" hlink="#000000"/> - <color name="dialog" value="#F7F7F7"/> - - <color name="body" value="#ffffff" link="#0F3660" vlink="#009999" hlink="#000066"/> - - <color name="table" value="#a5b6c6"/> - <color name="table-cell" value="#ffffff"/> - <color name="highlight" value="#ffff00"/> - <color name="fixme" value="#cc6600"/> - <color name="note" value="#006699"/> - <color name="warning" value="#990000"/> - <color name="code" value="#a5b6c6"/> - - <color name="footer" value="#a5b6c6"/> ---> - - <!-- Forrest --> -<!-- - <color name="header" value="#294563"/> - - <color name="tab-selected" value="#4a6d8c" link="#0F3660" vlink="#0F3660" hlink="#000066"/> - <color name="tab-unselected" value="#b5c7e7" link="#0F3660" vlink="#0F3660" hlink="#000066"/> - <color name="subtab-selected" value="#4a6d8c" link="#0F3660" vlink="#0F3660" hlink="#000066"/> - <color name="subtab-unselected" value="#4a6d8c" link="#0F3660" vlink="#0F3660" hlink="#000066"/> - - <color name="heading" value="#294563"/> - <color name="subheading" value="#4a6d8c"/> - - <color name="navstrip" value="#cedfef" font="#0F3660" link="#0F3660" vlink="#0F3660" hlink="#000066"/> - <color name="toolbox" value="#4a6d8c"/> - <color name="border" value="#294563"/> - - <color name="menu" value="#4a6d8c" font="#cedfef" link="#ffffff" vlink="#ffffff" hlink="#ffcf00"/> - <color name="dialog" value="#4a6d8c"/> - - <color name="body" value="#ffffff" link="#0F3660" vlink="#009999" hlink="#000066"/> - - <color name="table" value="#7099C5"/> - <color name="table-cell" value="#f0f0ff"/> - <color name="highlight" value="#ffff00"/> - <color name="fixme" value="#cc6600"/> - <color name="note" value="#006699"/> - <color name="warning" value="#990000"/> - <color name="code" value="#CFDCED"/> - - <color name="footer" value="#cedfef"/> ---> - - <!-- Collabnet --> -<!-- - <color name="header" value="#003366"/> - - <color name="tab-selected" value="#dddddd" link="#555555" vlink="#555555" hlink="#555555"/> - <color name="tab-unselected" value="#999999" link="#ffffff" vlink="#ffffff" hlink="#ffffff"/> - <color name="subtab-selected" value="#cccccc" link="#000000" vlink="#000000" hlink="#000000"/> - <color name="subtab-unselected" value="#cccccc" link="#555555" vlink="#555555" hlink="#555555"/> - - <color name="heading" value="#003366"/> - <color name="subheading" value="#888888"/> - - <color name="navstrip" value="#dddddd" font="#555555"/> - <color name="toolbox" value="#dddddd" font="#555555"/> - <color name="border" value="#999999"/> - - <color name="menu" value="#ffffff"/> - <color name="dialog" value="#eeeeee"/> - - <color name="body" value="#ffffff"/> - - <color name="table" value="#ccc"/> - <color name="table-cell" value="#ffffff"/> - <color name="highlight" value="#ffff00"/> - <color name="fixme" value="#cc6600"/> - <color name="note" value="#006699"/> - <color name="warning" value="#990000"/> - <color name="code" value="#003366"/> - - <color name="footer" value="#ffffff"/> ---> - <!-- Lenya using pelt--> -<!-- - <color name="header" value="#ffffff"/> - - <color name="tab-selected" value="#4C6C8F" link="#ffffff" vlink="#ffffff" hlink="#ffffff"/> - <color name="tab-unselected" value="#E5E4D9" link="#000000" vlink="#000000" hlink="#000000"/> - <color name="subtab-selected" value="#000000" link="#000000" vlink="#000000" hlink="#000000"/> - <color name="subtab-unselected" value="#E5E4D9" link="#000000" vlink="#000000" hlink="#000000"/> - - <color name="heading" value="#E5E4D9"/> - <color name="subheading" value="#000000"/> - <color name="published" value="#4C6C8F" font="#FFFFFF"/> - <color name="feedback" value="#4C6C8F" font="#FFFFFF" align="center"/> - <color name="navstrip" value="#E5E4D9" font="#000000"/> - - <color name="toolbox" value="#CFDCED" font="#000000"/> - - <color name="border" value="#999999"/> - <color name="menu" value="#4C6C8F" font="#ffffff" link="#ffffff" vlink="#ffffff" hlink="#ffffff" current="#FFCC33" /> - <color name="menuheading" value="#cfdced" font="#000000" /> - <color name="searchbox" value="#E5E4D9" font="#000000"/> - - <color name="dialog" value="#CFDCED"/> - <color name="body" value="#ffffff" /> - - <color name="table" value="#ccc"/> - <color name="table-cell" value="#ffffff"/> - <color name="highlight" value="#ffff00"/> - <color name="fixme" value="#cc6600"/> - <color name="note" value="#006699"/> - <color name="warning" value="#990000"/> - <color name="code" value="#003366"/> - - <color name="footer" value="#E5E4D9"/> ---> - </colors> - - <!-- Settings specific to PDF output. --> - <pdf> - <!-- - Supported page sizes are a0, a1, a2, a3, a4, a5, executive, - folio, legal, ledger, letter, quarto, tabloid (default letter). - Supported page orientations are portrait, landscape (default - portrait). - Supported text alignments are left, right, justify (default left). - --> - <page size="letter" orientation="portrait" text-align="left"/> - - <!-- - Margins can be specified for top, bottom, inner, and outer - edges. If double-sided="false", the inner edge is always left - and the outer is always right. If double-sided="true", the - inner edge will be left on odd pages, right on even pages, - the outer edge vice versa. - Specified below are the default settings. - --> - <margins double-sided="false"> - <top>1in</top> - <bottom>1in</bottom> - <inner>1.25in</inner> - <outer>1in</outer> - </margins> - - <!-- - Print the URL text next to all links going outside the file - --> - <show-external-urls>false</show-external-urls> - - <!-- - Disable the copyright footer on each page of the PDF. - A footer is composed for each page. By default, a "credit" with role=pdf - will be used, as explained below. Otherwise a copyright statement - will be generated. This latter can be disabled. - --> - <disable-copyright-footer>false</disable-copyright-footer> - </pdf> - - <!-- Credits are typically rendered as a set of small clickable - images in the page footer. - Use box-location="alt" to move the credit to an alternate location - (if the skin supports it). - --> - <credits> - <credit box-location="alt"> - <name>Built with Apache Forrest</name> - <url>http://forrest.apache.org/</url> - <image>images/built-with-forrest-button.png</image> - <width>88</width> - <height>31</height> - </credit> - <!-- A credit with @role="pdf" will be used to compose a footer - for each page in the PDF, using either "name" or "url" or both. - --> - <!-- - <credit role="pdf"> - <name>Built with Apache Forrest</name> - <url>http://forrest.apache.org/</url> - </credit> - --> - </credits> - -</skinconfig> http://git-wip-us.apache.org/repos/asf/zookeeper/blob/4607a3e1/src/docs/status.xml ---------------------------------------------------------------------- diff --git a/src/docs/status.xml b/src/docs/status.xml deleted file mode 100644 index 3ac3fda..0000000 --- a/src/docs/status.xml +++ /dev/null @@ -1,74 +0,0 @@ -<?xml version="1.0"?> -<!-- - Copyright 2002-2004 The Apache Software Foundation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---> -<status> - - <developers> - <person name="Joe Bloggs" email="[email protected]" id="JB" /> - <!-- Add more people here --> - </developers> - - <changes> - <!-- Add new releases here --> - <release version="0.1" date="unreleased"> - <!-- Some action types have associated images. By default, images are - defined for 'add', 'fix', 'remove', 'update' and 'hack'. If you add - src/documentation/resources/images/<foo>.jpg images, these will - automatically be used for entries of type <foo>. --> - - <action dev="JB" type="add" context="admin"> - Initial Import - </action> - <!-- Sample action: - <action dev="JB" type="fix" due-to="Joe Contributor" - due-to-email="[email protected]" fixes-bug="123"> - Fixed a bug in the Foo class. - </action> - --> - </release> - </changes> - - <todo> - <actions priority="high"> - <action context="docs" dev="JB"> - Customize this template project with your project's details. This - TODO list is generated from 'status.xml'. - </action> - <action context="docs" dev="JB"> - Add lots of content. XML content goes in - <code>src/documentation/content/xdocs</code>, or wherever the - <code>${project.xdocs-dir}</code> property (set in - <code>forrest.properties</code>) points. - </action> - <action context="feedback" dev="JB"> - Mail <link - href="mailto:[email protected]">[email protected]</link> - with feedback. - </action> - </actions> - <!-- Add todo items. @context is an arbitrary string. Eg: - <actions priority="high"> - <action context="code" dev="SN"> - </action> - </actions> - <actions priority="medium"> - <action context="docs" dev="open"> - </action> - </actions> - --> - </todo> - -</status> http://git-wip-us.apache.org/repos/asf/zookeeper/blob/4607a3e1/zookeeper-docs/forrest.properties ---------------------------------------------------------------------- diff --git a/zookeeper-docs/forrest.properties b/zookeeper-docs/forrest.properties new file mode 100644 index 0000000..70cf81d --- /dev/null +++ b/zookeeper-docs/forrest.properties @@ -0,0 +1,109 @@ +# Copyright 2002-2004 The Apache Software Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +############## +# Properties used by forrest.build.xml for building the website +# These are the defaults, un-comment them if you need to change them. +############## + +# Prints out a summary of Forrest settings for this project +#forrest.echo=true + +# Project name (used to name .war file) +#project.name=my-project + +# Specifies name of Forrest skin to use +#project.skin=tigris +#project.skin=pelt + +# comma separated list, file:// is supported +#forrest.skins.descriptors=http://forrest.apache.org/skins/skins.xml,file:///c:/myskins/skins.xml + +############## +# behavioural properties +#project.menu-scheme=tab_attributes +#project.menu-scheme=directories + +############## +# layout properties + +# Properties that can be set to override the default locations +# +# Parent properties must be set. This usually means uncommenting +# project.content-dir if any other property using it is uncommented + +#project.status=status.xml +#project.content-dir=src/documentation +project.configfile=${project.home}/src/documentation/conf/cli.xconf +#project.raw-content-dir=${project.content-dir}/content +#project.conf-dir=${project.content-dir}/conf +#project.sitemap-dir=${project.content-dir} +#project.xdocs-dir=${project.content-dir}/content/xdocs +#project.resources-dir=${project.content-dir}/resources +#project.stylesheets-dir=${project.resources-dir}/stylesheets +#project.images-dir=${project.resources-dir}/images +#project.schema-dir=${project.resources-dir}/schema +#project.skins-dir=${project.content-dir}/skins +#project.skinconf=${project.content-dir}/skinconf.xml +#project.lib-dir=${project.content-dir}/lib +#project.classes-dir=${project.content-dir}/classes +#project.translations-dir=${project.content-dir}/translations + +############## +# validation properties + +# This set of properties determine if validation is performed +# Values are inherited unless overridden. +# e.g. if forrest.validate=false then all others are false unless set to true. +forrest.validate=true +forrest.validate.xdocs=${forrest.validate} +forrest.validate.skinconf=${forrest.validate} +forrest.validate.stylesheets=${forrest.validate} +forrest.validate.skins=${forrest.validate} +forrest.validate.skins.stylesheets=${forrest.validate.skins} + +# Make Forrest work with JDK6 +forrest.validate.sitemap=false + +# *.failonerror=(true|false) - stop when an XML file is invalid +forrest.validate.failonerror=true + +# *.excludes=(pattern) - comma-separated list of path patterns to not validate +# e.g. +#forrest.validate.xdocs.excludes=samples/subdir/**, samples/faq.xml +#forrest.validate.xdocs.excludes= + + +############## +# General Forrest properties + +# The URL to start crawling from +#project.start-uri=linkmap.html +# Set logging level for messages printed to the console +# (DEBUG, INFO, WARN, ERROR, FATAL_ERROR) +#project.debuglevel=ERROR +# Max memory to allocate to Java +#forrest.maxmemory=64m +# Any other arguments to pass to the JVM. For example, to run on an X-less +# server, set to -Djava.awt.headless=true +#forrest.jvmargs= +# The bugtracking URL - the issue number will be appended +#project.bugtracking-url=http://issues.apache.org/bugzilla/show_bug.cgi?id= +#project.bugtracking-url=http://issues.apache.org/jira/browse/ +# The issues list as rss +#project.issues-rss-url= +#I18n Property only works for the "forrest run" target. +#project.i18n=true + +project.required.plugins=org.apache.forrest.plugin.output.pdf,org.apache.forrest.plugin.input.simplifiedDocbook http://git-wip-us.apache.org/repos/asf/zookeeper/blob/4607a3e1/zookeeper-docs/src/documentation/README.txt ---------------------------------------------------------------------- diff --git a/zookeeper-docs/src/documentation/README.txt b/zookeeper-docs/src/documentation/README.txt new file mode 100644 index 0000000..9bc261b --- /dev/null +++ b/zookeeper-docs/src/documentation/README.txt @@ -0,0 +1,7 @@ +This is the base documentation directory. + +skinconf.xml # This file customizes Forrest for your project. In it, you + # tell forrest the project name, logo, copyright info, etc + +sitemap.xmap # Optional. This sitemap is consulted before all core sitemaps. + # See http://forrest.apache.org/docs/project-sitemap.html http://git-wip-us.apache.org/repos/asf/zookeeper/blob/4607a3e1/zookeeper-docs/src/documentation/TODO.txt ---------------------------------------------------------------------- diff --git a/zookeeper-docs/src/documentation/TODO.txt b/zookeeper-docs/src/documentation/TODO.txt new file mode 100644 index 0000000..84e7dfa --- /dev/null +++ b/zookeeper-docs/src/documentation/TODO.txt @@ -0,0 +1,227 @@ +This is a running list of todo documentation items. Feel free +to add to the list or take on an item as you wish (in the form +of a JIRA patch of course). +------------------------------------------------------------- + +recipes.xml:110: +[maybe an illustration would be nice for each recipe?] + +recipes.xml:167: +"wait for each watch event". [how do you wait?] + +recipes.xml:457: +<remark>[tbd: myabe helpful to indicate which step this refers to?]</remark> + +zookeeperAdmin.xml:77: +because requires a majority <remark>[tbd: why?]</remark>, it is best to use... + +zookeeperAdmin.xml:112: + <screen>$yinst -i jdk-1.6.0.00_3 -br test <remark>[y! prop - replace with open equiv]</remark></screen> + +zookeeperAdmin.xml:99: +- use a maximum heap size of 3GB for a 4GB machine. <remark>[tbd: where would they do this? Environment variable, etc?]</remark> + +zookeeperAdmin.xml:120 +<screen>$ yinst install -nostart zookeeper_server <remark>[Y! prop - replace with open eq]</remark></screen> + +zookeeperAdmin.xml:171: +In Java, you can run the following command to execute simple operations:<remark> [tbd: also, maybe give some of those simple operations?] + +zookeeperAdmin.xml:194: +Running either program gives you a shell in which to execute simple file-system-like operations. <remark>[tbd: again, sample + operations?] + +zookeeperAdmin.xml:252: +If servers use different configuration files, +care must be taken to ensure that the list of servers in all of the +standard form, with legal values, etc]</remark> + +zookeeperAdmin.xml:408: +(Note: The system property has no zookeeper +prefix, and the configuration variable name is different from +the system property. Yes - it's not consistent, and it's +annoying.<remark> [tbd: is there any explanation for +this?]</remark>) + +zookeeperAdmin.xml:445: When the election algorithm is + "0" a UDP port with the same port number as the port listed in + the <emphasis role="bold">server.num</emphasis> option will be + used. <remark>[tbd: should that be <emphasis + role="bold">server.id</emphasis>? Also, why isn't server.id + documented anywhere?]</remark> + +zookeeperAdmin.xml:481: The default to this option is yes, which + means that a leader will accept client connections. + <remark>[tbd: how do you specifiy which server is the + leader?]</remark> + +zookeeperAdmin.xml:495 When the server + starts up, it determines which server it is by looking for the + file <filename>myid</filename> in the data directory.<remark> + [tdb: should we mention somewhere about creating this file, + myid, in the setup procedure?]</remark> + +zookeeperAdmin.xml:508: [tbd: is the next sentence explanation an of what the + election port or is it a description of a special case?] + </remark>If you want to test multiple servers on a single + machine, the individual choices of electionPort for each + server can be defined in each server's config files using the + line electionPort=xxxx to avoid clashes. + +zookeeperAdmin.xml:524: If followers fall too far behind a + leader, they will be dropped. <remark>[tbd: is this a correct + rewording: if followers fall beyond this limit, they are + dropped?]</remark> + +zookeeperAdmin.xml:551: ZooKeeper will not require updates + to be synced to the media. <remark>[tbd: useful because..., + dangerous because...]</remark> + +zookeeperAdmin.xml:580: Skips ACL checks. <remark>[tbd: when? where?]</remark> + +zookeeperAdmin.xml:649: <remark>[tbd: Patrick, Ben, et al: I believe the Message Broker + team does perform routine monitoring of Zookeeper. But I might be + wrong. To your knowledge, is there any monitoring of a Zookeeper + deployment that will a Zookeeper sys admin will want to do, outside of + Yahoo?]</remark> + +zookeeperAdmin.xml:755: Also, + the server lists in each Zookeeper server configuration file + should be consistent with one another. <remark>[tbd: I'm assuming + this last part is true. Is it?]</remark> + +zookeeperAdmin.xml:812: For best results, take note of the following list of good + Zookeeper practices. <remark>[tbd: I just threw this section in. Do we + have list that is is different from the "things to avoid"? If not, I can + easily remove this section.]</remark> + + +zookeeperOver.xml:162: Ephemeral nodes are useful when you + want to implement <remark>[tbd]</remark>. + +zookeeperOver.xml:174: 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 <remark>[tbd]</remark> + +zookeeperOver.xml:215: <para>For more information on these (guarantees), and how they can be used, see + <remark>[tbd]</remark></para> + +zookeeperOver.xml:294: <para><xref linkend="fg_zkComponents" /> shows the high-level components + of the ZooKeeper service. With the exception of the request processor, + <remark>[tbd: where does the request processor live?]</remark> + +zookeeperOver.xml:298: <para><xref linkend="fg_zkComponents" /> 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. <remark>[tbd: I changed the wording in this + sentence from the white paper. Can someone please make sure it is still + correct?]</remark> + +zookeeperOver.xml:342: 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: <remark>[tbd: add uses from + white paper and video presentation.]</remark> + + +zookeeperProgrammers.xml:94: <listitem> + <para><xref linkend="ch_programStructureWithExample" /> + <remark>[tbd]</remark></para> + </listitem> + +zookeeperProgrammers.xml:115: Also, + the <ulink url="#ch_programStructureWithExample">Simple Programmming + Example</ulink> <remark>[tbd]</remark> is helpful for understand the basic + structure of a ZooKeeper client application. + +zookeeperProgrammers.xml:142: The following characters are not + allowed because <remark>[tbd: + do we need reasons?]</remark> + +zookeeperProgrammers.xml:172: If + the version it supplies doesn't match the actual version of the data, + the update will fail. (This behavior can be overridden. For more + information see... )<remark>[tbd... reference here to the section + describing the special version number -1]</remark> + +zookeeperProgrammers.xml:197: More information about watches can be + found in the section + <ulink url="recipes.html#sc_recipes_Locks"> + Zookeeper Watches</ulink>. + <remark>[tbd: fix this link] [tbd: Ben there is note from to emphasize + that "it is queued". What is "it" and is what we have here + sufficient?]</remark></para> + +zookeeperProgrammers.xml:335: it will send the session id as a part of the connection handshake. + As a security measure, the server creates a password for the session id + that any ZooKeeper server can validate. <remark>[tbd: note from Ben: + "perhaps capability is a better word." need clarification on that.] + </remark> + +zookeeperProgrammers.xml:601: <ulink + url="recipes.html#sc_recipes_Locks">Locks</ulink> + <remark>[tbd:...]</remark> in <ulink + url="recipes.html">Zookeeper Recipes</ulink>. + <remark>[tbd:..]</remark>).</para> + +zookeeperProgrammers.xml:766: <para>See INSTALL for general information about running + <emphasis role="bold">configure</emphasis>. <remark>[tbd: what + is INSTALL? a directory? a file?]</remark></para> + + + +zookeeperProgrammers.xml:813: <para>To verify that the node's been created:</para> + + <para>You should see a list of node who are children of the root node + "/".</para><remark>[tbd: document all the cli commands (I think this is ben's comment) + +zookeeperProgrammers.xml:838: <para>Refer to <xref linkend="ch_programStructureWithExample"/>for examples of usage in Java and C. + <remark>[tbd]</remark></para> + +zookeeperProgrammers.xml 847: <remark>[tbd: This is a new section. The below + is just placeholder. Eventually, a subsection on each of those operations, with a little + bit of illustrative code for each op.] </remark> + +zookeeperProgrammers.xml:915: Program Structure, with Simple Example</title> + +zookeeperProgrammers.xml:999: <term>ZooKeeper Whitepaper <remark>[tbd: find url]</remark></term> + +zookeeperProgrammers.xml:1008: <term>API Reference <remark>[tbd: find url]</remark></term> + +zookeeperProgrammers.xml:1062: [tbd]</remark></term><listitem> + <para>Any other good sources anyone can think of...</para> + </listitem> + +zookeeperStarted.xml:73: <para>[tbd: should we start w/ a word here about were to get the source, + exactly what to download, how to unpack it, and where to put it? Also, + does the user need to be in sudo, or can they be under their regular + login?]</para> + +zookeeperStarted.xml:84: <para>This should generate a JAR file called zookeeper.jar. To start + Zookeeper, compile and run zookeeper.jar. <emphasis>[tbd, some more + instruction here. Perhaps a command line? Are these two steps or + one?]</emphasis></para> + +zookeeperStarted.xml:139: <para>ZooKeeper logs messages using log4j -- more detail available in + the <ulink url="zookeeperProgrammers.html#Logging">Logging</ulink> + section of the Programmer's Guide.<remark revision="include_tbd">[tbd: + real reference needed]</remark> + +zookeeperStarted.xml:201: The C bindings exist in two variants: single + threaded and multi-threaded. These differ only in how the messaging loop + is done. <remark>[tbd: what is the messaging loop? Do we talk about it + anywyhere? is this too much info for a getting started guide?]</remark> + +zookeeperStarted.xml:217: The entry <emphasis + role="bold">syncLimit</emphasis> limits how far out of date a server can + be from a leader. [TBD: someone please verify that the previous is + true.] + +zookeeperStarted.xml:232: These are the "electionPort" numbers of the servers (as opposed to + clientPorts), that is ports for <remark>[tbd: feedback need: what are + these ports, exactly?] + +zookeeperStarted.xml:258: <remark>[tbd: what is the other config param? + (I believe two are mentioned above.)]</remark> http://git-wip-us.apache.org/repos/asf/zookeeper/blob/4607a3e1/zookeeper-docs/src/documentation/classes/CatalogManager.properties ---------------------------------------------------------------------- diff --git a/zookeeper-docs/src/documentation/classes/CatalogManager.properties b/zookeeper-docs/src/documentation/classes/CatalogManager.properties new file mode 100644 index 0000000..ac060b9 --- /dev/null +++ b/zookeeper-docs/src/documentation/classes/CatalogManager.properties @@ -0,0 +1,37 @@ +# Copyright 2002-2004 The Apache Software Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +#======================================================================= +# CatalogManager.properties +# +# This is the default properties file for Apache Forrest. +# This facilitates local configuration of application-specific catalogs. +# +# See the Apache Forrest documentation: +# http://forrest.apache.org/docs/your-project.html +# http://forrest.apache.org/docs/validation.html + +# verbosity ... level of messages for status/debug +# See forrest/src/core/context/WEB-INF/cocoon.xconf + +# catalogs ... list of additional catalogs to load +# (Note that Apache Forrest will automatically load its own default catalog +# from src/core/context/resources/schema/catalog.xcat) +# use full pathnames +# pathname separator is always semi-colon (;) regardless of operating system +# directory separator is always slash (/) regardless of operating system +# +#catalogs=/home/me/forrest/my-site/src/documentation/resources/schema/catalog.xcat +catalogs= + http://git-wip-us.apache.org/repos/asf/zookeeper/blob/4607a3e1/zookeeper-docs/src/documentation/conf/cli.xconf ---------------------------------------------------------------------- diff --git a/zookeeper-docs/src/documentation/conf/cli.xconf b/zookeeper-docs/src/documentation/conf/cli.xconf new file mode 100644 index 0000000..c671340 --- /dev/null +++ b/zookeeper-docs/src/documentation/conf/cli.xconf @@ -0,0 +1,328 @@ +<?xml version="1.0"?> +<!-- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<!--+ + | This is the Apache Cocoon command line configuration file. + | Here you give the command line interface details of where + | to find various aspects of your Cocoon installation. + | + | If you wish, you can also use this file to specify the URIs + | that you wish to generate. + | + | The current configuration information in this file is for + | building the Cocoon documentation. Therefore, all links here + | are relative to the build context dir, which, in the build.xml + | file, is set to ${build.context} + | + | Options: + | verbose: increase amount of information presented + | to standard output (default: false) + | follow-links: whether linked pages should also be + | generated (default: true) + | precompile-only: precompile sitemaps and XSP pages, but + | do not generate any pages (default: false) + | confirm-extensions: check the mime type for the generated page + | and adjust filename and links extensions + | to match the mime type + | (e.g. text/html->.html) + | + | Note: Whilst using an xconf file to configure the Cocoon + | Command Line gives access to more features, the use of + | command line parameters is more stable, as there are + | currently plans to improve the xconf format to allow + | greater flexibility. If you require a stable and + | consistent method for accessing the CLI, it is recommended + | that you use the command line parameters to configure + | the CLI. See documentation at: + | http://cocoon.apache.org/2.1/userdocs/offline/ + | http://wiki.apache.org/cocoon/CommandLine + | + +--> + +<cocoon verbose="true" + follow-links="true" + precompile-only="false" + confirm-extensions="false"> + + <!--+ + | The context directory is usually the webapp directory + | containing the sitemap.xmap file. + | + | The config file is the cocoon.xconf file. + | + | The work directory is used by Cocoon to store temporary + | files and cache files. + | + | The destination directory is where generated pages will + | be written (assuming the 'simple' mapper is used, see + | below) + +--> + <context-dir>.</context-dir> + <config-file>WEB-INF/cocoon.xconf</config-file> + <work-dir>../tmp/cocoon-work</work-dir> + <dest-dir>../site</dest-dir> + + <!--+ + | A checksum file can be used to store checksums for pages + | as they are generated. When the site is next generated, + | files will not be written if their checksum has not changed. + | This means that it will be easier to detect which files + | need to be uploaded to a server, using the timestamp. + | + | The default path is relative to the core webapp directory. + | An asolute path can be used. + +--> + <!-- <checksums-uri>build/work/checksums</checksums-uri>--> + + <!--+ + | Broken link reporting options: + | Report into a text file, one link per line: + | <broken-links type="text" report="filename"/> + | Report into an XML file: + | <broken-links type="xml" report="filename"/> + | Ignore broken links (default): + | <broken-links type="none"/> + | + | Two attributes to this node specify whether a page should + | be generated when an error has occurred. 'generate' specifies + | whether a page should be generated (default: true) and + | extension specifies an extension that should be appended + | to the generated page's filename (default: none) + | + | Using this, a quick scan through the destination directory + | will show broken links, by their filename extension. + +--> + <broken-links type="xml" + file="../brokenlinks.xml" + generate="false" + extension=".error" + show-referrers="true"/> + + <!--+ + | Load classes at startup. This is necessary for generating + | from sites that use SQL databases and JDBC. + | The <load-class> element can be repeated if multiple classes + | are needed. + +--> + <!-- + <load-class>org.firebirdsql.jdbc.Driver</load-class> + --> + + <!--+ + | Configures logging. + | The 'log-kit' parameter specifies the location of the log kit + | configuration file (usually called logkit.xconf. + | + | Logger specifies the logging category (for all logging prior + | to other Cocoon logging categories taking over) + | + | Available log levels are: + | DEBUG: prints all level of log messages. + | INFO: prints all level of log messages except DEBUG + | ones. + | WARN: prints all level of log messages except DEBUG + | and INFO ones. + | ERROR: prints all level of log messages except DEBUG, + | INFO and WARN ones. + | FATAL_ERROR: prints only log messages of this level + +--> + <!-- <logging log-kit="WEB-INF/logkit.xconf" logger="cli" level="ERROR" /> --> + + <!--+ + | Specifies the filename to be appended to URIs that + | refer to a directory (i.e. end with a forward slash). + +--> + <default-filename>index.html</default-filename> + + <!--+ + | Specifies a user agent string to the sitemap when + | generating the site. + | + | A generic term for a web browser is "user agent". Any + | user agent, when connecting to a web server, will provide + | a string to identify itself (e.g. as Internet Explorer or + | Mozilla). It is possible to have Cocoon serve different + | content depending upon the user agent string provided by + | the browser. If your site does this, then you may want to + | use this <user-agent> entry to provide a 'fake' user agent + | to Cocoon, so that it generates the correct version of your + | site. + | + | For most sites, this can be ignored. + +--> + <!-- + <user-agent>Cocoon Command Line Environment 2.1</user-agent> + --> + + <!--+ + | Specifies an accept string to the sitemap when generating + | the site. + | User agents can specify to an HTTP server what types of content + | (by mime-type) they are able to receive. E.g. a browser may be + | able to handle jpegs, but not pngs. The HTTP accept header + | allows the server to take the browser's capabilities into account, + | and only send back content that it can handle. + | + | For most sites, this can be ignored. + +--> + + <accept>*/*</accept> + + <!--+ + | Specifies which URIs should be included or excluded, according + | to wildcard patterns. + | + | These includes/excludes are only relevant when you are following + | links. A link URI must match an include pattern (if one is given) + | and not match an exclude pattern, if it is to be followed by + | Cocoon. It can be useful, for example, where there are links in + | your site to pages that are not generated by Cocoon, such as + | references to api-documentation. + | + | By default, all URIs are included. If both include and exclude + | patterns are specified, a URI is first checked against the + | include patterns, and then against the exclude patterns. + | + | Multiple patterns can be given, using muliple include or exclude + | nodes. + | + | The order of the elements is not significant, as only the first + | successful match of each category is used. + | + | Currently, only the complete source URI can be matched (including + | any URI prefix). Future plans include destination URI matching + | and regexp matching. If you have requirements for these, contact + | [email protected]. + +--> + + <exclude pattern="**/"/> + <exclude pattern="**apidocs**"/> + <exclude pattern="api/**"/> + + <!-- ZOOKEEPER-2364 - we build our own release notes separately --> + <exclude pattern="releasenotes.**"/> + +<!-- + This is a workaround for FOR-284 "link rewriting broken when + linking to xml source views which contain site: links". + See the explanation there and in declare-broken-site-links.xsl +--> + <exclude pattern="site:**"/> + <exclude pattern="ext:**"/> + <exclude pattern="lm:**"/> + <exclude pattern="**/site:**"/> + <exclude pattern="**/ext:**"/> + <exclude pattern="**/lm:**"/> + + <!-- Exclude tokens used in URLs to ASF mirrors (interpreted by a CGI) --> + <exclude pattern="[preferred]/**"/> + <exclude pattern="[location]"/> + + <!-- <include-links extension=".html"/>--> + + <!--+ + | <uri> nodes specify the URIs that should be generated, and + | where required, what should be done with the generated pages. + | They describe the way the URI of the generated file is created + | from the source page's URI. There are three ways that a generated + | file URI can be created: append, replace and insert. + | + | The "type" attribute specifies one of (append|replace|insert): + | + | append: + | Append the generated page's URI to the end of the source URI: + | + | <uri type="append" src-prefix="documents/" src="index.html" + | dest="build/dest/"/> + | + | This means that + | (1) the "documents/index.html" page is generated + | (2) the file will be written to "build/dest/documents/index.html" + | + | replace: + | Completely ignore the generated page's URI - just + | use the destination URI: + | + | <uri type="replace" src-prefix="documents/" src="index.html" + | dest="build/dest/docs.html"/> + | + | This means that + | (1) the "documents/index.html" page is generated + | (2) the result is written to "build/dest/docs.html" + | (3) this works only for "single" pages - and not when links + | are followed + | + | insert: + | Insert generated page's URI into the destination + | URI at the point marked with a * (example uses fictional + | zip protocol) + | + | <uri type="insert" src-prefix="documents/" src="index.html" + | dest="zip://*.zip/page.html"/> + | + | This means that + | (1) + | + | In any of these scenarios, if the dest attribute is omitted, + | the value provided globally using the <dest-dir> node will + | be used instead. + +--> + <!-- + <uri type="replace" + src-prefix="samples/" + src="hello-world/hello.html" + dest="build/dest/hello-world.html"/> + --> + + <!--+ + | <uri> nodes can be grouped together in a <uris> node. This + | enables a group of URIs to share properties. The following + | properties can be set for a group of URIs: + | * follow-links: should pages be crawled for links + | * confirm-extensions: should file extensions be checked + | for the correct mime type + | * src-prefix: all source URIs should be + | pre-pended with this prefix before + | generation. The prefix is not + | included when calculating the + | destination URI + | * dest: the base destination URI to be + | shared by all pages in this group + | * type: the method to be used to calculate + | the destination URI. See above + | section on <uri> node for details. + | + | Each <uris> node can have a name attribute. When a name + | attribute has been specified, the -n switch on the command + | line can be used to tell Cocoon to only process the URIs + | within this URI group. When no -n switch is given, all + | <uris> nodes are processed. Thus, one xconf file can be + | used to manage multiple sites. + +--> + <!-- + <uris name="mirrors" follow-links="false"> + <uri type="append" src="mirrors.html"/> + </uris> + --> + + <!--+ + | File containing URIs (plain text, one per line). + +--> + <!-- + <uri-file>uris.txt</uri-file> + --> +</cocoon> http://git-wip-us.apache.org/repos/asf/zookeeper/blob/4607a3e1/zookeeper-docs/src/documentation/content/xdocs/index.xml ---------------------------------------------------------------------- diff --git a/zookeeper-docs/src/documentation/content/xdocs/index.xml b/zookeeper-docs/src/documentation/content/xdocs/index.xml new file mode 100644 index 0000000..969e482 --- /dev/null +++ b/zookeeper-docs/src/documentation/content/xdocs/index.xml @@ -0,0 +1,87 @@ +<?xml version="1.0"?> +<!-- + Copyright 2002-2004 The Apache Software Foundation + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V2.0//EN" "http://forrest.apache.org/dtd/document-v20.dtd"> + +<document> + + <header> + <title>ZooKeeper: Because Coordinating Distributed Systems is a Zoo</title> + </header> + + <body> + <p>ZooKeeper is a high-performance coordination service for + distributed applications. It exposes common services - such as + naming, configuration management, synchronization, and group + services - in a simple interface so you don't have to write them + from scratch. You can use it off-the-shelf to implement + consensus, group management, leader election, and presence + protocols. And you can build on it for your own, specific needs. + </p> + + <p> + The following documents describe concepts and procedures to get + you started using ZooKeeper. If you have more questions, please + ask the <a href="ext:lists">mailing list</a> or browse the + archives. + </p> + <ul> + + <li><strong>ZooKeeper Overview</strong><p>Technical Overview Documents for Client Developers, Adminstrators, and Contributors</p> + <ul><li><a href="zookeeperOver.html">Overview</a> - a bird's eye view of ZooKeeper, including design concepts and architecture</li> + <li><a href="zookeeperStarted.html">Getting Started</a> - a tutorial-style guide for developers to install, run, and program to ZooKeeper</li> + <li><a href="ext:relnotes">Release Notes</a> - new developer and user facing features, improvements, and incompatibilities</li> + </ul> + </li> + + <li><strong>Developers</strong><p> Documents for Developers using the ZooKeeper Client API</p> + <ul> + <li><a href="ext:api/index">API Docs</a> - the technical reference to ZooKeeper Client APIs</li> + <li><a href="zookeeperProgrammers.html">Programmer's Guide</a> - a client application developer's guide to ZooKeeper</li> + <li><a href="javaExample.html">ZooKeeper Java Example</a> - a simple Zookeeper client appplication, written in Java</li> + <li><a href="zookeeperTutorial.html">Barrier and Queue Tutorial</a> - sample implementations of barriers and queues</li> + <li><a href="recipes.html">ZooKeeper Recipes</a> - higher level solutions to common problems in distributed applications</li> + </ul> + </li> + + <li><strong>Administrators & Operators</strong> <p> Documents for Administrators and Operations Engineers of ZooKeeper Deployments</p> + <ul> + <li><a href="zookeeperAdmin.html">Administrator's Guide</a> - a guide for system administrators and anyone else who might deploy ZooKeeper</li> + <li><a href="zookeeperQuotas.html">Quota Guide</a> - a guide for system administrators on Quotas in ZooKeeper. </li> + <li><a href="zookeeperJMX.html">JMX</a> - how to enable JMX in ZooKeeper</li> + <li><a href="zookeeperHierarchicalQuorums.html">Hierarchical quorums</a></li> + <li><a href="zookeeperObservers.html">Observers</a> - non-voting ensemble members that easily improve ZooKeeper's scalability</li> + <li><a href="zookeeperReconfig.html">Dynamic Reconfiguration</a> - a guide on how to use dynamic reconfiguration in ZooKeeper</li> + </ul> + </li> + + <li><strong>Contributors</strong><p> Documents for Developers Contributing to the ZooKeeper Open Source Project</p> + <ul> + <li><a href="zookeeperInternals.html">ZooKeeper Internals</a> - assorted topics on the inner workings of ZooKeeper</li> + </ul> + </li> + + <li><strong>Miscellaneous ZooKeeper Documentation</strong> + <ul> + <li><a href="ext:wiki">Wiki</a></li> + <li><a href="ext:faq">FAQ</a></li> + </ul> + </li> + </ul> + </body> + +</document>
