From commits-return-6522-archive-asf-public=cust-asf.ponee.io@zookeeper.apache.org Fri Jul 13 14:58:16 2018
Return-Path:
X-Original-To: archive-asf-public@cust-asf.ponee.io
Delivered-To: archive-asf-public@cust-asf.ponee.io
Received: from mail.apache.org (hermes.apache.org [140.211.11.3])
by mx-eu-01.ponee.io (Postfix) with SMTP id 2211C1807A6
for ; Fri, 13 Jul 2018 14:58:13 +0200 (CEST)
Received: (qmail 81829 invoked by uid 500); 13 Jul 2018 12:58:13 -0000
Mailing-List: contact commits-help@zookeeper.apache.org; run by ezmlm
Precedence: bulk
List-Help:
List-Unsubscribe:
List-Post:
List-Id:
Reply-To: dev@zookeeper.apache.org
Delivered-To: mailing list commits@zookeeper.apache.org
Received: (qmail 81156 invoked by uid 99); 13 Jul 2018 12:58:12 -0000
Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23)
by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 13 Jul 2018 12:58:12 +0000
Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33)
id E0D60E10BB; Fri, 13 Jul 2018 12:58:11 +0000 (UTC)
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
From: andor@apache.org
To: commits@zookeeper.apache.org
Date: Fri, 13 Jul 2018 12:58:20 -0000
Message-Id:
In-Reply-To:
References:
X-Mailer: ASF-Git Admin Mailer
Subject: [10/10] zookeeper git commit: ZOOKEEPER-3033: MAVEN MIGRATION - Step
1.2 - create zk-recipes maven structure
ZOOKEEPER-3033: MAVEN MIGRATION - Step 1.2 - create zk-recipes maven structure
Create the zk-recipes maven structure for the maven migration.
Tested the recipes build with the new directory structure.
Author: Norbert Kalmar
Reviewers: andor@apache.org
Closes #564 from nkalmar/ZOOKEEPER-3033 and squashes the following commits:
c8c2e986 [Norbert Kalmar] ZOOKEEPER-3033 rename sub directories as well
d2b7f18d [Norbert Kalmar] ZOOKEEPER-3033 create zk-recipes maven structure
Project: http://git-wip-us.apache.org/repos/asf/zookeeper/repo
Commit: http://git-wip-us.apache.org/repos/asf/zookeeper/commit/28de451a
Tree: http://git-wip-us.apache.org/repos/asf/zookeeper/tree/28de451a
Diff: http://git-wip-us.apache.org/repos/asf/zookeeper/diff/28de451a
Branch: refs/heads/master
Commit: 28de451aa8b45e94d1261d5e0e369f86bf3815da
Parents: 536dda2
Author: Norbert Kalmar
Authored: Fri Jul 13 14:58:03 2018 +0200
Committer: Andor Molnar
Committed: Fri Jul 13 14:58:03 2018 +0200
----------------------------------------------------------------------
build.xml | 2 +-
src/recipes/README.txt | 25 -
src/recipes/build-recipes.xml | 161 ---
src/recipes/build.xml | 61 -
src/recipes/election/README.txt | 27 -
src/recipes/election/build.xml | 128 --
.../recipes/leader/LeaderElectionAware.java | 37 -
.../recipes/leader/LeaderElectionSupport.java | 461 -------
.../zookeeper/recipes/leader/LeaderOffer.java | 84 --
.../leader/LeaderElectionSupportTest.java | 298 -----
src/recipes/lock/README.txt | 28 -
src/recipes/lock/build.xml | 128 --
src/recipes/lock/src/c/INSTALL | 234 ----
src/recipes/lock/src/c/LICENSE | 202 ---
src/recipes/lock/src/c/Makefile.am | 46 -
src/recipes/lock/src/c/README.txt | 28 -
src/recipes/lock/src/c/acinclude.m4 | 312 -----
src/recipes/lock/src/c/aminclude.am | 186 ---
src/recipes/lock/src/c/c-doc.Doxyfile | 1252 ------------------
src/recipes/lock/src/c/configure.ac | 82 --
src/recipes/lock/src/c/include/zoo_lock.h | 168 ---
src/recipes/lock/src/c/src/zoo_lock.c | 396 ------
src/recipes/lock/src/c/tests/TestClient.cc | 201 ---
src/recipes/lock/src/c/tests/TestDriver.cc | 114 --
src/recipes/lock/src/c/tests/Util.cc | 30 -
src/recipes/lock/src/c/tests/Util.h | 134 --
src/recipes/lock/src/c/tests/zkServer.sh | 75 --
.../zookeeper/recipes/lock/LockListener.java | 38 -
.../zookeeper/recipes/lock/ProtocolSupport.java | 193 ---
.../zookeeper/recipes/lock/WriteLock.java | 296 -----
.../zookeeper/recipes/lock/ZNodeName.java | 112 --
.../recipes/lock/ZooKeeperOperation.java | 38 -
.../zookeeper/recipes/lock/WriteLockTest.java | 156 ---
.../zookeeper/recipes/lock/ZNodeNameTest.java | 71 -
src/recipes/queue/README.txt | 30 -
src/recipes/queue/build.xml | 128 --
src/recipes/queue/src/c/INSTALL | 234 ----
src/recipes/queue/src/c/LICENSE | 202 ---
src/recipes/queue/src/c/Makefile.am | 46 -
src/recipes/queue/src/c/README.txt | 30 -
src/recipes/queue/src/c/acinclude.m4 | 312 -----
src/recipes/queue/src/c/aminclude.am | 186 ---
src/recipes/queue/src/c/c-doc.Doxyfile | 1252 ------------------
src/recipes/queue/src/c/configure.ac | 82 --
src/recipes/queue/src/c/include/zoo_queue.h | 118 --
src/recipes/queue/src/c/src/zoo_queue.c | 442 -------
src/recipes/queue/src/c/tests/TestClient.cc | 452 -------
src/recipes/queue/src/c/tests/TestDriver.cc | 114 --
src/recipes/queue/src/c/tests/Util.cc | 30 -
src/recipes/queue/src/c/tests/Util.h | 134 --
src/recipes/queue/src/c/tests/zkServer.sh | 75 --
.../recipes/queue/DistributedQueue.java | 314 -----
.../recipes/queue/DistributedQueueTest.java | 286 ----
.../src/documentation/content/xdocs/recipes.xml | 4 +-
zookeeper-recipes/README.txt | 26 +
zookeeper-recipes/build-recipes.xml | 161 +++
zookeeper-recipes/build.xml | 61 +
.../zookeeper-recipes-election/README.txt | 27 +
.../zookeeper-recipes-election/build.xml | 128 ++
.../recipes/leader/LeaderElectionAware.java | 37 +
.../recipes/leader/LeaderElectionSupport.java | 461 +++++++
.../zookeeper/recipes/leader/LeaderOffer.java | 84 ++
.../leader/LeaderElectionSupportTest.java | 298 +++++
.../zookeeper-recipes-lock/README.txt | 28 +
.../zookeeper-recipes-lock/build.xml | 128 ++
.../zookeeper-recipes-lock/src/c/INSTALL | 234 ++++
.../zookeeper-recipes-lock/src/c/LICENSE | 202 +++
.../zookeeper-recipes-lock/src/c/Makefile.am | 46 +
.../zookeeper-recipes-lock/src/c/README.txt | 28 +
.../zookeeper-recipes-lock/src/c/acinclude.m4 | 312 +++++
.../zookeeper-recipes-lock/src/c/aminclude.am | 186 +++
.../zookeeper-recipes-lock/src/c/c-doc.Doxyfile | 1252 ++++++++++++++++++
.../zookeeper-recipes-lock/src/c/configure.ac | 82 ++
.../src/c/include/zoo_lock.h | 168 +++
.../zookeeper-recipes-lock/src/c/src/zoo_lock.c | 396 ++++++
.../src/c/tests/TestClient.cc | 201 +++
.../src/c/tests/TestDriver.cc | 114 ++
.../zookeeper-recipes-lock/src/c/tests/Util.cc | 30 +
.../zookeeper-recipes-lock/src/c/tests/Util.h | 134 ++
.../src/c/tests/zkServer.sh | 75 ++
.../zookeeper/recipes/lock/LockListener.java | 38 +
.../zookeeper/recipes/lock/ProtocolSupport.java | 193 +++
.../zookeeper/recipes/lock/WriteLock.java | 296 +++++
.../zookeeper/recipes/lock/ZNodeName.java | 112 ++
.../recipes/lock/ZooKeeperOperation.java | 38 +
.../zookeeper/recipes/lock/WriteLockTest.java | 156 +++
.../zookeeper/recipes/lock/ZNodeNameTest.java | 71 +
.../zookeeper-recipes-queue/README.txt | 30 +
.../zookeeper-recipes-queue/build.xml | 128 ++
.../zookeeper-recipes-queue/src/c/INSTALL | 234 ++++
.../zookeeper-recipes-queue/src/c/LICENSE | 202 +++
.../zookeeper-recipes-queue/src/c/Makefile.am | 46 +
.../zookeeper-recipes-queue/src/c/README.txt | 30 +
.../zookeeper-recipes-queue/src/c/acinclude.m4 | 312 +++++
.../zookeeper-recipes-queue/src/c/aminclude.am | 186 +++
.../src/c/c-doc.Doxyfile | 1252 ++++++++++++++++++
.../zookeeper-recipes-queue/src/c/configure.ac | 82 ++
.../src/c/include/zoo_queue.h | 118 ++
.../src/c/src/zoo_queue.c | 442 +++++++
.../src/c/tests/TestClient.cc | 452 +++++++
.../src/c/tests/TestDriver.cc | 114 ++
.../zookeeper-recipes-queue/src/c/tests/Util.cc | 30 +
.../zookeeper-recipes-queue/src/c/tests/Util.h | 134 ++
.../src/c/tests/zkServer.sh | 75 ++
.../recipes/queue/DistributedQueue.java | 314 +++++
.../recipes/queue/DistributedQueueTest.java | 286 ++++
106 files changed, 10273 insertions(+), 10272 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/zookeeper/blob/28de451a/build.xml
----------------------------------------------------------------------
diff --git a/build.xml b/build.xml
index eac3e2b..b8aa5b3 100644
--- a/build.xml
+++ b/build.xml
@@ -149,7 +149,7 @@ xmlns:cs="antlib:com.puppycrawl.tools.checkstyle.ant">
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
http://git-wip-us.apache.org/repos/asf/zookeeper/blob/28de451a/src/recipes/build.xml
----------------------------------------------------------------------
diff --git a/src/recipes/build.xml b/src/recipes/build.xml
deleted file mode 100644
index 559d5a5..0000000
--- a/src/recipes/build.xml
+++ /dev/null
@@ -1,61 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
http://git-wip-us.apache.org/repos/asf/zookeeper/blob/28de451a/src/recipes/election/README.txt
----------------------------------------------------------------------
diff --git a/src/recipes/election/README.txt b/src/recipes/election/README.txt
deleted file mode 100644
index 10447ed..0000000
--- a/src/recipes/election/README.txt
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
-1) This election interface recipe implements the leader election recipe
-mentioned in ../../../docs/recipes.[html,pdf].
-
-2) To compile the leader election java recipe you can just run ant jar from
-this directory.
-Please report any bugs on the jira
-
-http://issues.apache.org/jira/browse/ZOOKEEPER
-
-
http://git-wip-us.apache.org/repos/asf/zookeeper/blob/28de451a/src/recipes/election/build.xml
----------------------------------------------------------------------
diff --git a/src/recipes/election/build.xml b/src/recipes/election/build.xml
deleted file mode 100644
index 8e1d00a..0000000
--- a/src/recipes/election/build.xml
+++ /dev/null
@@ -1,128 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Tests failed!
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
http://git-wip-us.apache.org/repos/asf/zookeeper/blob/28de451a/src/recipes/election/src/java/org/apache/zookeeper/recipes/leader/LeaderElectionAware.java
----------------------------------------------------------------------
diff --git a/src/recipes/election/src/java/org/apache/zookeeper/recipes/leader/LeaderElectionAware.java b/src/recipes/election/src/java/org/apache/zookeeper/recipes/leader/LeaderElectionAware.java
deleted file mode 100644
index 6c32ebc..0000000
--- a/src/recipes/election/src/java/org/apache/zookeeper/recipes/leader/LeaderElectionAware.java
+++ /dev/null
@@ -1,37 +0,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.
- */
-package org.apache.zookeeper.recipes.leader;
-
-import org.apache.zookeeper.recipes.leader.LeaderElectionSupport.EventType;
-
-/**
- * An interface to be implemented by clients that want to receive election
- * events.
- */
-public interface LeaderElectionAware {
-
- /**
- * Called during each state transition. Current, low level events are provided
- * at the beginning and end of each state. For instance, START may be followed
- * by OFFER_START, OFFER_COMPLETE, DETERMINE_START, DETERMINE_COMPLETE, and so
- * on.
- *
- * @param eventType
- */
- public void onElectionEvent(EventType eventType);
-
-}
http://git-wip-us.apache.org/repos/asf/zookeeper/blob/28de451a/src/recipes/election/src/java/org/apache/zookeeper/recipes/leader/LeaderElectionSupport.java
----------------------------------------------------------------------
diff --git a/src/recipes/election/src/java/org/apache/zookeeper/recipes/leader/LeaderElectionSupport.java b/src/recipes/election/src/java/org/apache/zookeeper/recipes/leader/LeaderElectionSupport.java
deleted file mode 100644
index 8d4096d..0000000
--- a/src/recipes/election/src/java/org/apache/zookeeper/recipes/leader/LeaderElectionSupport.java
+++ /dev/null
@@ -1,461 +0,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.
- */
-package org.apache.zookeeper.recipes.leader;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import org.apache.zookeeper.CreateMode;
-import org.apache.zookeeper.KeeperException;
-import org.apache.zookeeper.WatchedEvent;
-import org.apache.zookeeper.Watcher;
-import org.apache.zookeeper.ZooDefs;
-import org.apache.zookeeper.ZooKeeper;
-import org.apache.zookeeper.data.Stat;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- *
- * A leader election support library implementing the ZooKeeper election recipe.
- *
- *
- * This support library is meant to simplify the construction of an exclusive
- * leader system on top of Apache ZooKeeper. Any application that can become the
- * leader (usually a process that provides a service, exclusively) would
- * configure an instance of this class with their hostname, at least one
- * listener (an implementation of {@link LeaderElectionAware}), and either an
- * instance of {@link ZooKeeper} or the proper connection information. Once
- * configured, invoking {@link #start()} will cause the client to connect to
- * ZooKeeper and create a leader offer. The library then determines if it has
- * been elected the leader using the algorithm described below. The client
- * application can follow all state transitions via the listener callback.
- *
- *
- * Leader election algorithm
- *
- *
- * The library starts in a START state. Through each state transition, a state
- * start and a state complete event are sent to all listeners. When
- * {@link #start()} is called, a leader offer is created in ZooKeeper. A leader
- * offer is an ephemeral sequential node that indicates a process that can act
- * as a leader for this service. A read of all leader offers is then performed.
- * The offer with the lowest sequence number is said to be the leader. The
- * process elected leader will transition to the leader state. All other
- * processes will transition to a ready state. Internally, the library creates a
- * ZooKeeper watch on the leader offer with the sequence ID of N - 1 (where N is
- * the process's sequence ID). If that offer disappears due to a process
- * failure, the watching process will run through the election determination
- * process again to see if it should become the leader. Note that sequence ID
- * may not be contiguous due to failed processes. A process may revoke its offer
- * to be the leader at any time by calling {@link #stop()}.
- *
- *
- * Guarantees (not) Made and Caveats
- *
- *
- *
- * - It is possible for a (poorly implemented) process to create a leader
- * offer, get the lowest sequence ID, but have something terrible occur where it
- * maintains its connection to ZK (and thus its ephemeral leader offer node) but
- * doesn't actually provide the service in question. It is up to the user to
- * ensure any failure to become the leader - and whatever that means in the
- * context of the user's application - results in a revocation of its leader
- * offer (i.e. that {@link #stop()} is called).
- * - It is possible for ZK timeouts and retries to play a role in service
- * liveliness. In other words, if process A has the lowest sequence ID but
- * requires a few attempts to read the other leader offers' sequence IDs,
- * election can seem slow. Users should apply timeouts during the determination
- * process if they need to hit a specific SLA.
- * - The library makes a "best effort" to detect catastrophic failures of the
- * process. It is possible that an unforeseen event results in (for instance) an
- * unchecked exception that propagates passed normal error handling code. This
- * normally doesn't matter as the same exception would almost certain destroy
- * the entire process and thus the connection to ZK and the leader offer
- * resulting in another round of leader determination.
- *
- *
- */
-public class LeaderElectionSupport implements Watcher {
-
- private static final Logger logger = LoggerFactory
- .getLogger(LeaderElectionSupport.class);
-
- private ZooKeeper zooKeeper;
-
- private State state;
- private Set listeners;
-
- private String rootNodeName;
- private LeaderOffer leaderOffer;
- private String hostName;
-
- public LeaderElectionSupport() {
- state = State.STOP;
- listeners = Collections.synchronizedSet(new HashSet());
- }
-
- /**
- *
- * Start the election process. This method will create a leader offer,
- * determine its status, and either become the leader or become ready. If an
- * instance of {@link ZooKeeper} has not yet been configured by the user, a
- * new instance is created using the connectString and sessionTime specified.
- *
- *
- * Any (anticipated) failures result in a failed event being sent to all
- * listeners.
- *
- */
- public synchronized void start() {
- state = State.START;
- dispatchEvent(EventType.START);
-
- logger.info("Starting leader election support");
-
- if (zooKeeper == null) {
- throw new IllegalStateException(
- "No instance of zookeeper provided. Hint: use setZooKeeper()");
- }
-
- if (hostName == null) {
- throw new IllegalStateException(
- "No hostname provided. Hint: use setHostName()");
- }
-
- try {
- makeOffer();
- determineElectionStatus();
- } catch (KeeperException e) {
- becomeFailed(e);
- return;
- } catch (InterruptedException e) {
- becomeFailed(e);
- return;
- }
- }
-
- /**
- * Stops all election services, revokes any outstanding leader offers, and
- * disconnects from ZooKeeper.
- */
- public synchronized void stop() {
- state = State.STOP;
- dispatchEvent(EventType.STOP_START);
-
- logger.info("Stopping leader election support");
-
- if (leaderOffer != null) {
- try {
- zooKeeper.delete(leaderOffer.getNodePath(), -1);
- logger.info("Removed leader offer {}", leaderOffer.getNodePath());
- } catch (InterruptedException e) {
- becomeFailed(e);
- } catch (KeeperException e) {
- becomeFailed(e);
- }
- }
-
- dispatchEvent(EventType.STOP_COMPLETE);
- }
-
- private void makeOffer() throws KeeperException, InterruptedException {
- state = State.OFFER;
- dispatchEvent(EventType.OFFER_START);
-
- leaderOffer = new LeaderOffer();
-
- leaderOffer.setHostName(hostName);
- leaderOffer.setNodePath(zooKeeper.create(rootNodeName + "/" + "n_",
- hostName.getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE,
- CreateMode.EPHEMERAL_SEQUENTIAL));
-
- logger.debug("Created leader offer {}", leaderOffer);
-
- dispatchEvent(EventType.OFFER_COMPLETE);
- }
-
- private void determineElectionStatus() throws KeeperException,
- InterruptedException {
-
- state = State.DETERMINE;
- dispatchEvent(EventType.DETERMINE_START);
-
- String[] components = leaderOffer.getNodePath().split("/");
-
- leaderOffer.setId(Integer.valueOf(components[components.length - 1]
- .substring("n_".length())));
-
- List leaderOffers = toLeaderOffers(zooKeeper.getChildren(
- rootNodeName, false));
-
- /*
- * For each leader offer, find out where we fit in. If we're first, we
- * become the leader. If we're not elected the leader, attempt to stat the
- * offer just less than us. If they exist, watch for their failure, but if
- * they don't, become the leader.
- */
- for (int i = 0; i < leaderOffers.size(); i++) {
- LeaderOffer leaderOffer = leaderOffers.get(i);
-
- if (leaderOffer.getId().equals(this.leaderOffer.getId())) {
- logger.debug("There are {} leader offers. I am {} in line.",
- leaderOffers.size(), i);
-
- dispatchEvent(EventType.DETERMINE_COMPLETE);
-
- if (i == 0) {
- becomeLeader();
- } else {
- becomeReady(leaderOffers.get(i - 1));
- }
-
- /* Once we've figured out where we are, we're done. */
- break;
- }
- }
- }
-
- private void becomeReady(LeaderOffer neighborLeaderOffer)
- throws KeeperException, InterruptedException {
-
- logger.info("{} not elected leader. Watching node:{}",
- leaderOffer.getNodePath(), neighborLeaderOffer.getNodePath());
-
- /*
- * Make sure to pass an explicit Watcher because we could be sharing this
- * zooKeeper instance with someone else.
- */
- Stat stat = zooKeeper.exists(neighborLeaderOffer.getNodePath(), this);
-
- if (stat != null) {
- dispatchEvent(EventType.READY_START);
- logger.debug(
- "We're behind {} in line and they're alive. Keeping an eye on them.",
- neighborLeaderOffer.getNodePath());
- state = State.READY;
- dispatchEvent(EventType.READY_COMPLETE);
- } else {
- /*
- * If the stat fails, the node has gone missing between the call to
- * getChildren() and exists(). We need to try and become the leader.
- */
- logger
- .info(
- "We were behind {} but it looks like they died. Back to determination.",
- neighborLeaderOffer.getNodePath());
- determineElectionStatus();
- }
-
- }
-
- private void becomeLeader() {
- state = State.ELECTED;
- dispatchEvent(EventType.ELECTED_START);
-
- logger.info("Becoming leader with node:{}", leaderOffer.getNodePath());
-
- dispatchEvent(EventType.ELECTED_COMPLETE);
- }
-
- private void becomeFailed(Exception e) {
- logger.error("Failed in state {} - Exception:{}", state, e);
-
- state = State.FAILED;
- dispatchEvent(EventType.FAILED);
- }
-
- /**
- * Fetch the (user supplied) hostname of the current leader. Note that by the
- * time this method returns, state could have changed so do not depend on this
- * to be strongly consistent. This method has to read all leader offers from
- * ZooKeeper to deterime who the leader is (i.e. there is no caching) so
- * consider the performance implications of frequent invocation. If there are
- * no leader offers this method returns null.
- *
- * @return hostname of the current leader
- * @throws KeeperException
- * @throws InterruptedException
- */
- public String getLeaderHostName() throws KeeperException,
- InterruptedException {
-
- List leaderOffers = toLeaderOffers(zooKeeper.getChildren(
- rootNodeName, false));
-
- if (leaderOffers.size() > 0) {
- return leaderOffers.get(0).getHostName();
- }
-
- return null;
- }
-
- private List toLeaderOffers(List strings)
- throws KeeperException, InterruptedException {
-
- List leaderOffers = new ArrayList(strings.size());
-
- /*
- * Turn each child of rootNodeName into a leader offer. This is a tuple of
- * the sequence number and the node name.
- */
- for (String offer : strings) {
- String hostName = new String(zooKeeper.getData(
- rootNodeName + "/" + offer, false, null));
-
- leaderOffers.add(new LeaderOffer(Integer.valueOf(offer.substring("n_"
- .length())), rootNodeName + "/" + offer, hostName));
- }
-
- /*
- * We sort leader offers by sequence number (which may not be zero-based or
- * contiguous) and keep their paths handy for setting watches.
- */
- Collections.sort(leaderOffers, new LeaderOffer.IdComparator());
-
- return leaderOffers;
- }
-
- @Override
- public void process(WatchedEvent event) {
- if (event.getType().equals(Watcher.Event.EventType.NodeDeleted)) {
- if (!event.getPath().equals(leaderOffer.getNodePath())
- && state != State.STOP) {
- logger.debug(
- "Node {} deleted. Need to run through the election process.",
- event.getPath());
- try {
- determineElectionStatus();
- } catch (KeeperException e) {
- becomeFailed(e);
- } catch (InterruptedException e) {
- becomeFailed(e);
- }
- }
- }
- }
-
- private void dispatchEvent(EventType eventType) {
- logger.debug("Dispatching event:{}", eventType);
-
- synchronized (listeners) {
- if (listeners.size() > 0) {
- for (LeaderElectionAware observer : listeners) {
- observer.onElectionEvent(eventType);
- }
- }
- }
- }
-
- /**
- * Adds {@code listener} to the list of listeners who will receive events.
- *
- * @param listener
- */
- public void addListener(LeaderElectionAware listener) {
- listeners.add(listener);
- }
-
- /**
- * Remove {@code listener} from the list of listeners who receive events.
- *
- * @param listener
- */
- public void removeListener(LeaderElectionAware listener) {
- listeners.remove(listener);
- }
-
- @Override
- public String toString() {
- return "{ state:" + state + " leaderOffer:" + leaderOffer + " zooKeeper:"
- + zooKeeper + " hostName:" + hostName + " listeners:" + listeners
- + " }";
- }
-
- /**
- *
- * Gets the ZooKeeper root node to use for this service.
- *
- *
- * For instance, a root node of {@code /mycompany/myservice} would be the
- * parent of all leader offers for this service. Obviously all processes that
- * wish to contend for leader status need to use the same root node. Note: We
- * assume this node already exists.
- *
- *
- * @return a znode path
- */
- public String getRootNodeName() {
- return rootNodeName;
- }
-
- /**
- *
- * Sets the ZooKeeper root node to use for this service.
- *
- *
- * For instance, a root node of {@code /mycompany/myservice} would be the
- * parent of all leader offers for this service. Obviously all processes that
- * wish to contend for leader status need to use the same root node. Note: We
- * assume this node already exists.
- *
- */
- public void setRootNodeName(String rootNodeName) {
- this.rootNodeName = rootNodeName;
- }
-
- /**
- * The {@link ZooKeeper} instance to use for all operations. Provided this
- * overrides any connectString or sessionTimeout set.
- */
- public ZooKeeper getZooKeeper() {
- return zooKeeper;
- }
-
- public void setZooKeeper(ZooKeeper zooKeeper) {
- this.zooKeeper = zooKeeper;
- }
-
- /**
- * The hostname of this process. Mostly used as a convenience for logging and
- * to respond to {@link #getLeaderHostName()} requests.
- */
- public String getHostName() {
- return hostName;
- }
-
- public void setHostName(String hostName) {
- this.hostName = hostName;
- }
-
- /**
- * The type of event.
- */
- public static enum EventType {
- START, OFFER_START, OFFER_COMPLETE, DETERMINE_START, DETERMINE_COMPLETE, ELECTED_START, ELECTED_COMPLETE, READY_START, READY_COMPLETE, FAILED, STOP_START, STOP_COMPLETE,
- }
-
- /**
- * The internal state of the election support service.
- */
- public static enum State {
- START, OFFER, DETERMINE, ELECTED, READY, FAILED, STOP
- }
-}
http://git-wip-us.apache.org/repos/asf/zookeeper/blob/28de451a/src/recipes/election/src/java/org/apache/zookeeper/recipes/leader/LeaderOffer.java
----------------------------------------------------------------------
diff --git a/src/recipes/election/src/java/org/apache/zookeeper/recipes/leader/LeaderOffer.java b/src/recipes/election/src/java/org/apache/zookeeper/recipes/leader/LeaderOffer.java
deleted file mode 100644
index 188a6d5..0000000
--- a/src/recipes/election/src/java/org/apache/zookeeper/recipes/leader/LeaderOffer.java
+++ /dev/null
@@ -1,84 +0,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.
- */
-package org.apache.zookeeper.recipes.leader;
-
-import java.util.Comparator;
-
-/**
- * A leader offer is a numeric id / path pair. The id is the sequential node id
- * assigned by ZooKeeper where as the path is the absolute path to the ZNode.
- */
-public class LeaderOffer {
-
- private Integer id;
- private String nodePath;
- private String hostName;
-
- public LeaderOffer() {
- // Default constructor
- }
-
- public LeaderOffer(Integer id, String nodePath, String hostName) {
- this.id = id;
- this.nodePath = nodePath;
- this.hostName = hostName;
- }
-
- @Override
- public String toString() {
- return "{ id:" + id + " nodePath:" + nodePath + " hostName:" + hostName
- + " }";
- }
-
- public Integer getId() {
- return id;
- }
-
- public void setId(Integer id) {
- this.id = id;
- }
-
- public String getNodePath() {
- return nodePath;
- }
-
- public void setNodePath(String nodePath) {
- this.nodePath = nodePath;
- }
-
- public String getHostName() {
- return hostName;
- }
-
- public void setHostName(String hostName) {
- this.hostName = hostName;
- }
-
- /**
- * Compare two instances of {@link LeaderOffer} using only the {code}id{code}
- * member.
- */
- public static class IdComparator implements Comparator {
-
- @Override
- public int compare(LeaderOffer o1, LeaderOffer o2) {
- return o1.getId().compareTo(o2.getId());
- }
-
- }
-
-}
http://git-wip-us.apache.org/repos/asf/zookeeper/blob/28de451a/src/recipes/election/test/org/apache/zookeeper/recipes/leader/LeaderElectionSupportTest.java
----------------------------------------------------------------------
diff --git a/src/recipes/election/test/org/apache/zookeeper/recipes/leader/LeaderElectionSupportTest.java b/src/recipes/election/test/org/apache/zookeeper/recipes/leader/LeaderElectionSupportTest.java
deleted file mode 100644
index 7e19dc7..0000000
--- a/src/recipes/election/test/org/apache/zookeeper/recipes/leader/LeaderElectionSupportTest.java
+++ /dev/null
@@ -1,298 +0,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.
- */
-package org.apache.zookeeper.recipes.leader;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.atomic.AtomicInteger;
-
-
-import org.apache.zookeeper.CreateMode;
-import org.apache.zookeeper.KeeperException;
-import org.apache.zookeeper.ZooDefs;
-import org.apache.zookeeper.ZooKeeper;
-import org.apache.zookeeper.recipes.leader.LeaderElectionSupport.EventType;
-import org.apache.zookeeper.test.ClientBase;
-import org.junit.After;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class LeaderElectionSupportTest extends ClientBase {
-
- private static final Logger logger = LoggerFactory
- .getLogger(LeaderElectionSupportTest.class);
- private static final String testRootNode = "/" + System.currentTimeMillis()
- + "_";
-
- private ZooKeeper zooKeeper;
-
- @Before
- public void setUp() throws Exception {
- super.setUp();
-
- zooKeeper = createClient();
-
- zooKeeper.create(testRootNode + Thread.currentThread().getId(),
- new byte[0], ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
- }
-
- @After
- public void tearDown() throws Exception {
- if (zooKeeper != null) {
- zooKeeper.delete(testRootNode + Thread.currentThread().getId(), -1);
- }
-
- super.tearDown();
- }
-
- @Test
- public void testNode() throws IOException, InterruptedException,
- KeeperException {
-
- LeaderElectionSupport electionSupport = createLeaderElectionSupport();
-
- electionSupport.start();
- Thread.sleep(3000);
- electionSupport.stop();
- }
-
- @Test
- public void testNodes3() throws IOException, InterruptedException,
- KeeperException {
-
- int testIterations = 3;
- final CountDownLatch latch = new CountDownLatch(testIterations);
- final AtomicInteger failureCounter = new AtomicInteger();
-
- for (int i = 0; i < testIterations; i++) {
- runElectionSupportThread(latch, failureCounter);
- }
-
- Assert.assertEquals(0, failureCounter.get());
-
- if (!latch.await(10, TimeUnit.SECONDS)) {
- logger
- .info(
- "Waited for all threads to start, but timed out. We had {} failures.",
- failureCounter);
- }
- }
-
- @Test
- public void testNodes9() throws IOException, InterruptedException,
- KeeperException {
-
- int testIterations = 9;
- final CountDownLatch latch = new CountDownLatch(testIterations);
- final AtomicInteger failureCounter = new AtomicInteger();
-
- for (int i = 0; i < testIterations; i++) {
- runElectionSupportThread(latch, failureCounter);
- }
-
- Assert.assertEquals(0, failureCounter.get());
-
- if (!latch.await(10, TimeUnit.SECONDS)) {
- logger
- .info(
- "Waited for all threads to start, but timed out. We had {} failures.",
- failureCounter);
- }
- }
-
- @Test
- public void testNodes20() throws IOException, InterruptedException,
- KeeperException {
-
- int testIterations = 20;
- final CountDownLatch latch = new CountDownLatch(testIterations);
- final AtomicInteger failureCounter = new AtomicInteger();
-
- for (int i = 0; i < testIterations; i++) {
- runElectionSupportThread(latch, failureCounter);
- }
-
- Assert.assertEquals(0, failureCounter.get());
-
- if (!latch.await(10, TimeUnit.SECONDS)) {
- logger
- .info(
- "Waited for all threads to start, but timed out. We had {} failures.",
- failureCounter);
- }
- }
-
- @Test
- public void testNodes100() throws IOException, InterruptedException,
- KeeperException {
-
- int testIterations = 100;
- final CountDownLatch latch = new CountDownLatch(testIterations);
- final AtomicInteger failureCounter = new AtomicInteger();
-
- for (int i = 0; i < testIterations; i++) {
- runElectionSupportThread(latch, failureCounter);
- }
-
- Assert.assertEquals(0, failureCounter.get());
-
- if (!latch.await(20, TimeUnit.SECONDS)) {
- logger
- .info(
- "Waited for all threads to start, but timed out. We had {} failures.",
- failureCounter);
- }
- }
-
- @Test
- public void testOfferShuffle() throws InterruptedException {
- int testIterations = 10;
- final CountDownLatch latch = new CountDownLatch(testIterations);
- final AtomicInteger failureCounter = new AtomicInteger();
- List threads = new ArrayList(testIterations);
-
- for (int i = 1; i <= testIterations; i++) {
- threads.add(runElectionSupportThread(latch, failureCounter,
- Math.min(i * 1200, 10000)));
- }
-
- if (!latch.await(60, TimeUnit.SECONDS)) {
- logger
- .info(
- "Waited for all threads to start, but timed out. We had {} failures.",
- failureCounter);
- }
- }
-
- @Test
- public void testGetLeaderHostName() throws KeeperException,
- InterruptedException {
-
- LeaderElectionSupport electionSupport = createLeaderElectionSupport();
-
- electionSupport.start();
-
- // Sketchy: We assume there will be a leader (probably us) in 3 seconds.
- Thread.sleep(3000);
-
- String leaderHostName = electionSupport.getLeaderHostName();
-
- Assert.assertNotNull(leaderHostName);
- Assert.assertEquals("foohost", leaderHostName);
-
- electionSupport.stop();
- }
-
- @Test
- public void testReadyOffer() throws Exception {
- final ArrayList events = new ArrayList();
- final CountDownLatch electedComplete = new CountDownLatch(1);
-
- final LeaderElectionSupport electionSupport1 = createLeaderElectionSupport();
- electionSupport1.start();
- LeaderElectionSupport electionSupport2 = createLeaderElectionSupport();
- LeaderElectionAware listener = new LeaderElectionAware() {
- boolean stoppedElectedNode = false;
- @Override
- public void onElectionEvent(EventType eventType) {
- events.add(eventType);
- if (!stoppedElectedNode
- && eventType == EventType.DETERMINE_COMPLETE) {
- stoppedElectedNode = true;
- try {
- // stopping the ELECTED node, so re-election will happen.
- electionSupport1.stop();
- } catch (Exception e) {
- logger.error("Unexpected error", e);
- }
- }
- if (eventType == EventType.ELECTED_COMPLETE) {
- electedComplete.countDown();
- }
- }
- };
- electionSupport2.addListener(listener);
- electionSupport2.start();
- // waiting for re-election.
- electedComplete.await(CONNECTION_TIMEOUT / 3, TimeUnit.MILLISECONDS);
-
- final ArrayList expectedevents = new ArrayList();
- expectedevents.add(EventType.START);
- expectedevents.add(EventType.OFFER_START);
- expectedevents.add(EventType.OFFER_COMPLETE);
- expectedevents.add(EventType.DETERMINE_START);
- expectedevents.add(EventType.DETERMINE_COMPLETE);
- expectedevents.add(EventType.DETERMINE_START);
- expectedevents.add(EventType.DETERMINE_COMPLETE);
- expectedevents.add(EventType.ELECTED_START);
- expectedevents.add(EventType.ELECTED_COMPLETE);
- Assert.assertEquals("Events has failed to executed in the order",
- expectedevents, events);
- electionSupport2.stop();
- }
-
- private LeaderElectionSupport createLeaderElectionSupport() {
- LeaderElectionSupport electionSupport = new LeaderElectionSupport();
-
- electionSupport.setZooKeeper(zooKeeper);
- electionSupport.setRootNodeName(testRootNode
- + Thread.currentThread().getId());
- electionSupport.setHostName("foohost");
-
- return electionSupport;
- }
-
- private Thread runElectionSupportThread(final CountDownLatch latch,
- final AtomicInteger failureCounter) {
- return runElectionSupportThread(latch, failureCounter, 3000);
- }
-
- private Thread runElectionSupportThread(final CountDownLatch latch,
- final AtomicInteger failureCounter, final long sleepDuration) {
-
- final LeaderElectionSupport electionSupport = createLeaderElectionSupport();
-
- Thread t = new Thread() {
-
- @Override
- public void run() {
- try {
- electionSupport.start();
- Thread.sleep(sleepDuration);
- electionSupport.stop();
-
- latch.countDown();
- } catch (Exception e) {
- logger.warn("Failed to run leader election due to: {}",
- e.getMessage());
- failureCounter.incrementAndGet();
- }
- }
- };
-
- t.start();
-
- return t;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/zookeeper/blob/28de451a/src/recipes/lock/README.txt
----------------------------------------------------------------------
diff --git a/src/recipes/lock/README.txt b/src/recipes/lock/README.txt
deleted file mode 100644
index 1fc4fbf..0000000
--- a/src/recipes/lock/README.txt
+++ /dev/null
@@ -1,28 +0,0 @@
-
-
-1) This lock interface recipe implements the lock recipe
-mentioned in ../../../docs/recipes.[html,pdf].
-
-2) To compile the lock java recipe you can just run ant jar from
-this directory. For compiling the c libarary go to src/c and read
-the INSTALLATION instructions.
-Please report any bugs on the jira
-
-http://issues.apache.org/jira/browse/ZOOKEEPER
-
-
http://git-wip-us.apache.org/repos/asf/zookeeper/blob/28de451a/src/recipes/lock/build.xml
----------------------------------------------------------------------
diff --git a/src/recipes/lock/build.xml b/src/recipes/lock/build.xml
deleted file mode 100644
index 1fa7b22..0000000
--- a/src/recipes/lock/build.xml
+++ /dev/null
@@ -1,128 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Tests failed!
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
http://git-wip-us.apache.org/repos/asf/zookeeper/blob/28de451a/src/recipes/lock/src/c/INSTALL
----------------------------------------------------------------------
diff --git a/src/recipes/lock/src/c/INSTALL b/src/recipes/lock/src/c/INSTALL
deleted file mode 100644
index 5458714..0000000
--- a/src/recipes/lock/src/c/INSTALL
+++ /dev/null
@@ -1,234 +0,0 @@
-Installation Instructions
-*************************
-
-Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005,
-2006 Free Software Foundation, Inc.
-
-This file is free documentation; the Free Software Foundation gives
-unlimited permission to copy, distribute and modify it.
-
-Basic Installation
-==================
-
-Briefly, the shell commands `./configure; make; make install' should
-configure, build, and install this package. The following
-more-detailed instructions are generic; see the `README' file for
-instructions specific to this package.
-
- The `configure' shell script attempts to guess correct values for
-various system-dependent variables used during compilation. It uses
-those values to create a `Makefile' in each directory of the package.
-It may also create one or more `.h' files containing system-dependent
-definitions. Finally, it creates a shell script `config.status' that
-you can run in the future to recreate the current configuration, and a
-file `config.log' containing compiler output (useful mainly for
-debugging `configure').
-
- It can also use an optional file (typically called `config.cache'
-and enabled with `--cache-file=config.cache' or simply `-C') that saves
-the results of its tests to speed up reconfiguring. Caching is
-disabled by default to prevent problems with accidental use of stale
-cache files.
-
- If you need to do unusual things to compile the package, please try
-to figure out how `configure' could check whether to do them, and mail
-diffs or instructions to the address given in the `README' so they can
-be considered for the next release. If you are using the cache, and at
-some point `config.cache' contains results you don't want to keep, you
-may remove or edit it.
-
- The file `configure.ac' (or `configure.in') is used to create
-`configure' by a program called `autoconf'. You need `configure.ac' if
-you want to change it or regenerate `configure' using a newer version
-of `autoconf'.
-
-The simplest way to compile this package is:
-
- 1. `cd' to the directory containing the package's source code and type
- `./configure' to configure the package for your system.
-
- Running `configure' might take a while. While running, it prints
- some messages telling which features it is checking for.
-
- 2. Type `make' to compile the package.
-
- 3. Optionally, type `make check' to run any self-tests that come with
- the package.
-
- 4. Type `make install' to install the programs and any data files and
- documentation.
-
- 5. You can remove the program binaries and object files from the
- source code directory by typing `make clean'. To also remove the
- files that `configure' created (so you can compile the package for
- a different kind of computer), type `make distclean'. There is
- also a `make maintainer-clean' target, but that is intended mainly
- for the package's developers. If you use it, you may have to get
- all sorts of other programs in order to regenerate files that came
- with the distribution.
-
-Compilers and Options
-=====================
-
-Some systems require unusual options for compilation or linking that the
-`configure' script does not know about. Run `./configure --help' for
-details on some of the pertinent environment variables.
-
- You can give `configure' initial values for configuration parameters
-by setting variables in the command line or in the environment. Here
-is an example:
-
- ./configure CC=c99 CFLAGS=-g LIBS=-lposix
-
- *Note Defining Variables::, for more details.
-
-Compiling For Multiple Architectures
-====================================
-
-You can compile the package for more than one kind of computer at the
-same time, by placing the object files for each architecture in their
-own directory. To do this, you can use GNU `make'. `cd' to the
-directory where you want the object files and executables to go and run
-the `configure' script. `configure' automatically checks for the
-source code in the directory that `configure' is in and in `..'.
-
- With a non-GNU `make', it is safer to compile the package for one
-architecture at a time in the source code directory. After you have
-installed the package for one architecture, use `make distclean' before
-reconfiguring for another architecture.
-
-Installation Names
-==================
-
-By default, `make install' installs the package's commands under
-`/usr/local/bin', include files under `/usr/local/include', etc. You
-can specify an installation prefix other than `/usr/local' by giving
-`configure' the option `--prefix=PREFIX'.
-
- You can specify separate installation prefixes for
-architecture-specific files and architecture-independent files. If you
-pass the option `--exec-prefix=PREFIX' to `configure', the package uses
-PREFIX as the prefix for installing programs and libraries.
-Documentation and other data files still use the regular prefix.
-
- In addition, if you use an unusual directory layout you can give
-options like `--bindir=DIR' to specify different values for particular
-kinds of files. Run `configure --help' for a list of the directories
-you can set and what kinds of files go in them.
-
- If the package supports it, you can cause programs to be installed
-with an extra prefix or suffix on their names by giving `configure' the
-option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
-
-Optional Features
-=================
-
-Some packages pay attention to `--enable-FEATURE' options to
-`configure', where FEATURE indicates an optional part of the package.
-They may also pay attention to `--with-PACKAGE' options, where PACKAGE
-is something like `gnu-as' or `x' (for the X Window System). The
-`README' should mention any `--enable-' and `--with-' options that the
-package recognizes.
-
- For packages that use the X Window System, `configure' can usually
-find the X include and library files automatically, but if it doesn't,
-you can use the `configure' options `--x-includes=DIR' and
-`--x-libraries=DIR' to specify their locations.
-
-Specifying the System Type
-==========================
-
-There may be some features `configure' cannot figure out automatically,
-but needs to determine by the type of machine the package will run on.
-Usually, assuming the package is built to be run on the _same_
-architectures, `configure' can figure that out, but if it prints a
-message saying it cannot guess the machine type, give it the
-`--build=TYPE' option. TYPE can either be a short name for the system
-type, such as `sun4', or a canonical name which has the form:
-
- CPU-COMPANY-SYSTEM
-
-where SYSTEM can have one of these forms:
-
- OS KERNEL-OS
-
- See the file `config.sub' for the possible values of each field. If
-`config.sub' isn't included in this package, then this package doesn't
-need to know the machine type.
-
- If you are _building_ compiler tools for cross-compiling, you should
-use the option `--target=TYPE' to select the type of system they will
-produce code for.
-
- If you want to _use_ a cross compiler, that generates code for a
-platform different from the build platform, you should specify the
-"host" platform (i.e., that on which the generated programs will
-eventually be run) with `--host=TYPE'.
-
-Sharing Defaults
-================
-
-If you want to set default values for `configure' scripts to share, you
-can create a site shell script called `config.site' that gives default
-values for variables like `CC', `cache_file', and `prefix'.
-`configure' looks for `PREFIX/share/config.site' if it exists, then
-`PREFIX/etc/config.site' if it exists. Or, you can set the
-`CONFIG_SITE' environment variable to the location of the site script.
-A warning: not all `configure' scripts look for a site script.
-
-Defining Variables
-==================
-
-Variables not defined in a site shell script can be set in the
-environment passed to `configure'. However, some packages may run
-configure again during the build, and the customized values of these
-variables may be lost. In order to avoid this problem, you should set
-them in the `configure' command line, using `VAR=value'. For example:
-
- ./configure CC=/usr/local2/bin/gcc
-
-causes the specified `gcc' to be used as the C compiler (unless it is
-overridden in the site shell script).
-
-Unfortunately, this technique does not work for `CONFIG_SHELL' due to
-an Autoconf bug. Until the bug is fixed you can use this workaround:
-
- CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash
-
-`configure' Invocation
-======================
-
-`configure' recognizes the following options to control how it operates.
-
-`--help'
-`-h'
- Print a summary of the options to `configure', and exit.
-
-`--version'
-`-V'
- Print the version of Autoconf used to generate the `configure'
- script, and exit.
-
-`--cache-file=FILE'
- Enable the cache: use and save the results of the tests in FILE,
- traditionally `config.cache'. FILE defaults to `/dev/null' to
- disable caching.
-
-`--config-cache'
-`-C'
- Alias for `--cache-file=config.cache'.
-
-`--quiet'
-`--silent'
-`-q'
- Do not print messages saying which checks are being made. To
- suppress all normal output, redirect it to `/dev/null' (any error
- messages will still be shown).
-
-`--srcdir=DIR'
- Look for the package's source code in directory DIR. Usually
- `configure' can determine that directory automatically.
-
-`configure' also accepts some other, not widely useful, options. Run
-`configure --help' for more details.
-
http://git-wip-us.apache.org/repos/asf/zookeeper/blob/28de451a/src/recipes/lock/src/c/LICENSE
----------------------------------------------------------------------
diff --git a/src/recipes/lock/src/c/LICENSE b/src/recipes/lock/src/c/LICENSE
deleted file mode 100644
index d645695..0000000
--- a/src/recipes/lock/src/c/LICENSE
+++ /dev/null
@@ -1,202 +0,0 @@
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- 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.
http://git-wip-us.apache.org/repos/asf/zookeeper/blob/28de451a/src/recipes/lock/src/c/Makefile.am
----------------------------------------------------------------------
diff --git a/src/recipes/lock/src/c/Makefile.am b/src/recipes/lock/src/c/Makefile.am
deleted file mode 100644
index 9b36b43..0000000
--- a/src/recipes/lock/src/c/Makefile.am
+++ /dev/null
@@ -1,46 +0,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.
-
-include $(top_srcdir)/aminclude.am
-
-AM_CFLAGS = -Wall -fPIC -I${ZOOKEEPER_PATH}/include -I${ZOOKEEPER_PATH}/generated \
- -I$(top_srcdir)/include -I/usr/include
-AM_CPPFLAGS = -Wall -I${ZOOKEEPER_PATH}/include -I${ZOOKEEPER_PATH}/generated\
- -I${top_srcdir}/include -I/usr/include
-EXTRA_DIST = LICENSE
-lib_LTLIBRARIES = libzoolock.la
-libzoolock_la_SOURCES = src/zoo_lock.c include/zoo_lock.h
-libzoolock_la_CPPFLAGS = -DDLOPEN_MODULE
-libzoolock_la_LDFLAGS = -version-info 0:1:0
-
-#run the tests now
-
-TEST_SOURCES = tests/TestDriver.cc tests/TestClient.cc tests/Util.cc
-
-
-check_PROGRAMS = zklocktest
-nodist_zklocktest_SOURCES = ${TEST_SOURCES}
-zklocktest_LDADD = ${ZOOKEEPER_LD} libzoolock.la -lpthread ${CPPUNIT_LIBS}
-zklocktest_CXXFLAGS = -DUSE_STATIC_LIB ${CPPUNIT_CFLAGS}
-
-run-check: check
- ./zklocktest ${TEST_OPTIONS}
-
-clean-local: clean-check
- ${RM} ${DX_CLEANFILES}
-
-clean-check:
- ${RM} ${nodist_zklocktest_OBJECTS}