You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@curator.apache.org by ra...@apache.org on 2013/05/01 19:01:57 UTC

[2/2] git commit: not needed

not needed


Project: http://git-wip-us.apache.org/repos/asf/incubator-curator/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-curator/commit/f8567052
Tree: http://git-wip-us.apache.org/repos/asf/incubator-curator/tree/f8567052
Diff: http://git-wip-us.apache.org/repos/asf/incubator-curator/diff/f8567052

Branch: refs/heads/master
Commit: f8567052d72d4d933affbd1b3273396a7e7dc490
Parents: 046b49d
Author: randgalt <ra...@apache.org>
Authored: Wed May 1 10:01:50 2013 -0700
Committer: randgalt <ra...@apache.org>
Committed: Wed May 1 10:01:50 2013 -0700

----------------------------------------------------------------------
 CHANGES |  558 ----------------------------------------------------------
 KEYS    |   47 -----
 2 files changed, 0 insertions(+), 605 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-curator/blob/f8567052/CHANGES
----------------------------------------------------------------------
diff --git a/CHANGES b/CHANGES
deleted file mode 100644
index de9f3a4..0000000
--- a/CHANGES
+++ /dev/null
@@ -1,558 +0,0 @@
-1.3.4 - xxxxxxxxxxxxx
-=====================
-* Issue 257: Fixed a race condition in LeaderLatch that cause the recipe to create
-two nodes in some edge cases.
-
-1.3.3 - March 6, 2013
-=====================
-* Issue 250: Restore support for passing null to usingWatcher().
-
-* Issue 251: Allow a custom Executor Service to be used for PathChildrenCache.
-
-* DistributedDoubleBarrier wasn't handling wait expiration correctly and was sending negative
-numbers to wait().
-
-* Issue 254: Check that executorService isn't null before closing.
-
-* Pull 258: Fix bad performing use of Guava's transform.
-
-1.3.2 - February 6, 2013
-========================
-* MAJOR BUG FIX - Issue 232: ZooKeeper guarantees that "A watch object, or function/context pair, will only
-be triggered once for a given notification." Curator was breaking this guarantee by internally creating a
-new Watcher object each time one was needed. This is now fixed and ZooKeeper's guarantee is restored. Big
-thanks to user barkbay for his persistence and help on this.
-
-* Issue 247: POST_INITIALIZED_EVENT wasn't correctly handling an initially empty node.
-
-* Issue 245: Auth info specified in the CuratorFrameworkFactory.Builder was not being re-set in cases
-where the internal ZooKeeper handle was recreated. i.e. if the cluster has issues auth info would be lost.
-
-* The default watcher in the ZooKeeper handle is now cleared before the ZooKeeper handle is closed. This avoids
-an edge case where events meant for the old ZooKeeper handle get processed.
-
-1.3.1 - January 28, 2013
-========================
-* Tightened up a possible race deep inside the connection management.
-
-* PathChildrenCache.rebuild() and PathChildrenCache.rebuildNode() were not handling deleted nodes.
-
-* Issue 237: New feature. PathChildrenCache now optionally posts an event when the initial cache is
-populated. To accommodate this behavior there is a new version of start() that takes an enum. See the
-Javadoc for each value. For this new behavior, use StartMode.POST_INITIALIZED_EVENT. Once the cache
-is initialized a PathChildrenCacheEvent.Type.INITIALIZED will be posted. Huge thanks to user philflesh
-for the idea and co-implementation.
-
-1.3.0 - January 10, 2013
-========================
-* MAJOR CHANGE (thus a version bump): I'd always thought that if the client is disconnected from the server
-long enough then an Expired event would be generated. Testing, however, shows this not to be the case. I believe
-it's related to ZOOKEEPER-1159. The behavior associated with this is that if the clients lost connection to the
-cluster for longer than the session expiration they would _never_ be able to reconnect. The connection would
-be permanently lost. Many users were seeing this as endless log messages indicating "Connection timed out
-for connection...". As a workaround, in 1.3.0+ when the Curator state changes to LOST, a flag will be set
-so that the next time Curator needs to get the ZooKeeper instance, the current instance will be closed and a new
-ZooKeeper instance will be allocated (as if the session had expired).
-
-* Added checks for illegal namespaces.
-
-* Issue 232: NodeCache wasn't handling server connection issues well. It would repeatedly execute checkExists()
-with a watcher causing the heap to fill with watcher objects.
-
-* Issue 233: An internal idiom being used to create an EnsurePath instance with the parent of a passed in path
-wasn't correct. Due to an unfortunate implementation of ZKPaths.PathAndNode (mea culpa) the root path is specified
-differently than non-root paths. To work around this, I added a method to EnsurePath - excludingLast() - that
-can be used instead of the idiom.
-
-* Issue 230: Added a filter to control which IP address are returned by ServiceInstanceBuilder.getAllLocalIPs().
-Set the filter via ServiceInstanceBuilder.setLocalIpFilter().
-
-1.2.6 - January 1, 2013
-=======================
-* Issue 214: Added rebuildNode method to PathChildrenCache.
-
-* Added a NodeCache to compliment the PathChildrenCache. The doc is here:
-https://github.com/Netflix/curator/wiki/Node-Cache
-
-* Creating nodes in background wasn't handling createParentsIfNeeded.
-
-* Issue 216: Rewrote LeaderLatch to better handle connection/server instability. At the same time, made
-most of the calls async which will help concurrency and performance.
-
-* Issue 217: DistributedAtomicLong (et al) should use ensurePath internally to be consistent with
-other recipes.
-
-* Issue 220: When creating a ServiceCacheImpl, a PathChildrenCache is created. The cache loads all existing services,
-but because preloading does not create events, ServiceCacheImpl never notices this. ServiceCacheImpl.getInstances()
-will return an empty list.
-
-* Issue 221: client.getACL().forPath("/") throws a NullPointerException, because the Zookeeper
-API expects a Stat, but GetACLBuilderImpl initializes responseStat to null.
-
-* Issue 222: Counter and log messages reversed in RetryLoop.takeException().
-
-* New feature: CuratorTempFramework. Temporary CuratorFramework instances are meant for single requests to
-ZooKeeper ensembles over a failure prone network such as a WAN. The APIs available from CuratorTempFramework
-are limited. Further, the connection will be closed after a period of inactivity. Based on an idea mentioned in a
-post by Camille Fournier: http://whilefalse.blogspot.com/2012/12/building-global-highly-available.html - details
-here: https://github.com/Netflix/curator/wiki/Temporary-Framework
-
-* Issue 224: ExponentialBackoffRetry was not protected against edge-cases where a too big maxRetries argument
-was used. It now also incorporates a maxSleep value.
-
-1.2.5 - November 27, 2012
-=========================
-* Depend on ZooKeeper 3.4.5
-
-* Issue 177: PathChildrenCache wasn't shutting down the executor when closed. Also, reworked the event
-queue to avoid potential herding of messages in unstable conditions. The herding could result in runaway
-memory allocation as reported in the issue. NOTE: due to this change, the PathChildrenCache node
-refresh code and the PathChildrenCacheListener notification threads have been merged. Do not block
-for very long inside of your PathChildrenCacheListener or you will prevent the cache from getting
-updated.
-
-* Issue 200: Post-creation services registered in ServiceDiscovery via registerService() were
-not being treated the same as the service passed in the constructor. Consequently they wouldn't get
-re-registered if there were connection problems.
-
-* Creating nodes withProtection() is now supported in the background. e.g.
-client.create().withProtection().inBackground()...
-
-* Added methods to InterProcessSemaphoreV2: setNodeData() and getParticipantNodes() and, to the Lease
-interface, getData().
-
-* Issue 205 - already started error message was misleading.
-
-* Pull 209 - Fixed inconsistent API for get() in DiscoveryResource.java - thanks to user dougnukem
-
-* Issue 211 - Added getState() method to CuratorFramework.
-
-* Issue 212 - There wasn't a good way to update the data for a Service. I've added a new method
-ServiceDiscovery: updateService(). NOTE: this method requires all ServiceDiscovery instances to be using
-version 1.2.5 of Curator. Internally, ServiceCache now uses PathChildrenCache.
-
-* Pull 210 - For convenience, a version of {@link DiscoveryContext} that uses any generic type as the
-payload. Thanks to user dougnukem.
-
-1.2.4 - November 2, 2012
-========================
-* Depend on ZooKeeper 3.4.4
-
-* Added a new Examples sub project - better late than never.
-
-* Guaranteed deletes were not working correctly if CuratorFramework.usingNamespace() was used.
-
-* I can't believe this has been like this for so long. The executor passed to listeners was never used.
-Doh!!! Major bug.
-
-* Issue 188: Display a meaningful message if the value node is corrupted
-
-* Issue 194: Initial sync() operation should occur immediately - like the change in 1.2.3 for all "background"
-operations.
-
-* Added support for ZK 3.4's read only operation as described here:
-http://wiki.apache.org/hadoop/ZooKeeper/GSoCReadOnlyMode - CuratorFrameworkFactory.Builder has a new
-method to set canBeReadOnly(). There is a new ConnectionState: READ_ONLY. Note: Your servers need to
-see a system property set "readonlymode.enabled" as true. This isn't documented anywhere that I can see.
-
-* Pull Request: 196 - Fix some issues with NamespaceFacade stemming from inconsistent state. Thanks to
-Answashe.
-
-* Issue 197 - Possible NullPointerException from ConnectionStateManager line 133 that is caused by a race
-condition. In CuratorFrameworkImpl, connectionStateManager.start() is called after client.start().
-
-1.2.3 - October 6, 2012
-=======================
-* Previously, all background operations (i.e. when the inBackground() method is used)
-were put into a queue and processed in an internal thread. Curator does this to handle retries in
-background operations. This can be improved, however. The first time the background operation is
-executed the ZooKeeper method can be called directly - without queuing. This will get the operation
-into ZooKeeper immediately and will help prevent Curator's internal queue from backing up.
-
-* Issue 173: The DistributedQueue (and, thus, all the other queue recipes) was unnecessarily
-calling getChildren (with a watch) after each group of children was processed. It can just as easily
-wait for the internal cache to get its watch notified. This change creates an edge case, though,
-for ErrorMode.REQUEUE. Consequently, when in mode ErrorMode.REQUEUE the DistributedQueue now
-deletes the bad message and re-creates it. This required the use of ZooKeeper 3.4.x's transactions.
-So, if you use ErrorMode.REQUEUE you MUST be running ZooKeeper 3.4+.
-
-1.2.2 - September 30, 2012
-==========================
-* NOTE: The 1.0.x branch is not being released and has been deprecated. It was advised many versions
-ago that this was coming. So, here it is.
-
-* For ZKClient Bridge: 1. Previous method of sending initial connect event to ZKClient was
-unreliable; 2. Added an option to not close the curator instance
-
-* The default connection timeout has increased to 15 seconds. The default session timeout has
-increased to 60 seconds. These both can now be overridden via system properties:
-"curator-default-connection-timeout" and "curator-default-session-timeout".
-
-* Thanks to Ben Bangert: the InterProcessSemaphore waiting semantics weren't ideal. The nth
-waiting node has to wait for all nodes in front of it. I've improved this a bit. However, the algorithm
-used still suffers from potential out of order acquisition as well as potential starvation if a given client
-does not release a lease. Therefore, I'm deprecating InterProcessSemaphore in favor of the new
-InterProcessSemaphoreV2 which is based on Ben's algorithm.
-
-* Issue 164: The PathChildrenCache no longer clears its internal state when there is a connection
-issue. Consequently, the PathChildrenCacheEvent.Type values have changed. Instead of a RESET event
-there are events that match the ConnectionState events.
-
-1.1.18/1.0.20 - September 4, 2012
-=================================
-* New extension project: "ZKClient Bridge". A bridge between Curator and ZKClient. Useful for
-projects that would like to use Curator but don't want to risk porting working code that uses
-ZKClient.
-
-1.1.17/1.0.18 - August 30, 2012
-===============================
-* Issue 132: If namespace is set in builder, getNamespace() does not return it
-
-* Issue 131: If connection is lost to the server, the ServiceInstance needs to re-register once
-there is a re-connection.
-
-* PathChildrenCache was not sending UPDATE messages when a node's data changed in the case
-that false was passed in the constructor for cacheData.
-
-* Merge 136 from wt: Add eclipse support to gradle.
-
-* Merge 137 from pbh101: ConnectionState declares IOException, never throws it
-
-1.1.16/1.0.17 - August 2, 2012
-==============================
-* Merge 114 from amuraru: Make sure internal executor services are not started until startup.
-
-* Merge 116 from samuelgmartinez: Fix for Issue 115: Wrong behaviour in LeaderLatch when a candidate
-loses connection
-
-* Issue 118: Ignore nonode exceptions when deleting lock path
-
-* Added a non-reentrant mutex: InterProcessSemaphoreMutex. This mutex doesn't have the threading
-restrictions that InterProcessMutex has. This should help with issues 75 and 117.
-
-* Merge 122 from ithaka that addresses Issue #98 - JsonInstanceSerializer does not deserialize
-custom payload types. IMPORTANT! This change introduces a breaking incompatibility with List payloads
-that will show up in environments that mix the old code and the new code. The new code will throw a
-JsonMappingException when it attempts to read a List payload written by the old code. The old code,
-when it reads a List payload generated by the new code, will generate a list with two elements,
-the first of which is the class name of the List type, and the second of which is the original list.
-
-* Issue 121: Apply bytecode rewriting to turn off JMX registrations to TestingServer as well as
-TestingCluster.
-
-* Issue 125: Use ScheduledThreadPoolExecutor instead of blocking threads that have period work.
-
-* Issue 126: Added getNamespace() method.
-
-* Issue 120: Additional check for connection loss in DistributedDoubleBarrier.
-
-1.1.15/1.0.16 - July 14, 2012
-=============================
-* Added ChildReaper. This builds on the newly added Reaper. This utility monitors a single node
-and reaps empty children of that node.
-
-* Issue 107: The namespace wrapper was corrupting the path if the EnsurePath handler had an error.
-The best thing to do is let the code continue.
-
-* Issue 109: Make duplicate close() calls in CuratorFrameworkImpl a NOP instead of an error.
-
-* A more complete solution for background build-ups. The previous implementation did the retry sleep
-in the background process which ends up blocking ZooKeeper. During connection problems, this would
-cause ZooKeeper packets/watchers to back up. The new implementation uses a DelayQueue to simulate a
-sleep in the background. NOTE: this caused a change to the RetryPolicy APIs.
-
-1.1.14/1.0.15 - July 6, 2012
-============================
-* Merge #100 from bbeck: Added BoundedExponentialBackoffRetry.
-
-* Merge #102 from artemip: Added REAP_UNTIL_GONE mode to Reaper; Remove items from activePaths once
-they are deletes; Tests
-
-* Issue 99: The Double Barrier should allow more than the max to enter the barrier. I don't see any
-harm in this.
-
-* Issue 103: Important change/fix for ExhibitorEnsembleProvider: the previous implementation wasn't
-handling outages very well. The connectionString could get stuck to an old value if the list of
-Exhibitors all went down and couldn't be contacted. Now, a backup provider is required and the backup
-is used to update the list of Exhibitors should there be connection problems.
-
-* IMPORTANT NOTE: The 1.0.x branch of Curator is now end of life. There will be a few more releases
-but please migrate to the 1.1.x branch.
-
-1.1.13/1.0.14 - June 25, 2012
-=============================
-* New queue features: a) bounded queues: use setMaxItems() in the builder to set an (approx) upper
-bound on the queue size; b) the builder now has an option to turn off background puts; c) queues now
-default to flushing remaining puts when closed - this can be controlled in the builder via
-finalFlushTime().
-
-* Issue 82: Generalized (and deprecated) nonNamespaceView() by adding the usingNamespace() method
-to allow getting a facade of the client that uses a specified namespace.
-
-* createParentsIfNeeded() should now perform better. Instead of "pre" checking, it now only does the
-check if KeeperException.NoNodeException is thrown. LockInternals now uses this method and, so, should
-perform a bit better.
-
-* Added a new utility: Reaper. This can be used to clean up parent lock nodes so that they don't
-stay around as garbage. See the Utilities wiki for details: https://github.com/Netflix/curator/wiki/Utilities
-
-* Unit tests should be a lot less noisy. A system property now turns off most internal error logging.
-
-* Issue 88: Children processor should wait for all nodes to be processed before fetching more items
-
-1.1.12/1.0.13 - June 5, 2012
-============================
-* Pull Request 81: Avoid invalid ipv6 localhost addresses
-
-* Another big bug: guaranteed deletions were not working with namespaces.
-
-1.1.11/1.0.12 - June 1, 2012
-============================
-* MAJOR BUG FIX!!!! Many of the Curator recipes rely on the internal class LockInternals. It has
-a bug that exhibits when the ZooKeeper cluster is unstable. There is an edge case that causes
-LockInternals to leak a node in the lock path that it is managing. This results in a deadlock. The
-leak occurs when retries are exhausted. NOTE: TestLockCleanlinessWithFaults now tests for this
-condition.
-
-* Added some missing combinations in the backgrounding API
-
-* Added QueueSharder utility. Due to limitations in ZooKeeper's transport layer, a single queue
-will break if it has more than 10K-ish items in it. This class provides a facade over multiple
-distributed queues. It monitors the queues and if any one of them goes over a threshold, a new
-queue is added. Puts are distributed amongst the queues.
-
-* Issue 80: Check for null data before decompressing data in getData().
-
-* Merge from user bbeck - enhanced the testing in-memory ZK server to handle some edge cases. A nice
-benefit is that it starts up faster. Thanks Brandon!
-
-1.1.10/1.0.11 - May 17, 2012
-============================
-* Generalized the ProtectedEphemeralSequential so that it works with any create mode.
-withProtectedEphemeralSequential() is deprecated in favor of the new method withProtection().
-
-* Update all uses of Preconditions to make sure they print a reasonable diagnostic message.
-
-* Added a new wrapped Watcher type that can throw exceptions as a convenience. The various
-usingWatcher() methods now can take CuratorWatcher instances.
-
-* InterProcessSemaphore and LeaderSelector weren't respecting the default bytes feature.
-
-* Make the default data for nodes be the local IP address. This helps in debugging and enables
-the deadlock analysis in Exhibitor.
-
-* New recipe added: DistributedDelayQueue
-
-1.1.9/1.0.10 - May 10, 2012
-===========================
-* Based on suggestion in Issue 67: Added new concept of UriSpec to the ServiceInstance in the
-Service Discovery Curator extension.
-
-* User "Pierre-Luc Bertrand" pointed out a potential race condition that would cause a SysConnected
-to get sent before an Expired. So, now I push the event to the parent watcher before resetting
-the connection in ConnectionState.process(WatchedEvent)
-
-* New Feature: SessionFailRetryLoop. Huge thanks to Pierre-Luc Bertrand for his work on this.
-SessionFailRetryLoop is a special type of retry loop that causes all Curator methods in a thread to
-fail when a session failure is detected. This enables sets of Curator operations that must be tied
-to a single ZooKeeper session. See Tech Note 3 for details: https://github.com/Netflix/curator/wiki/Tech-Note-3
-
-* Several users have expressed dissatisfaction with the LeaderSelector implementation - requiring a
-thread, etc. So, LeaderLatch has been added which behaves a lot like a CountDownLatch but for leader
-selection.
-
-1.1.8/1.0.9 - April 17, 2012
-============================
-* Added methods to compress data via create() and setData() and to decompress data via getData(). The
-compression is GZIP by default. You can change this via the CuratorFrameworkFactory by specifying
-a CompressionProvider.
-
-* Added ZookeeperFactory to the client as a testing aid.
-
-* Added ACLProvider to make it easier to use ACLs and recipes. It can be set via the
-CuratorFrameworkFactory builder.
-
-* Several of the recipes were creating new watcher objects each time they were needed when the watcher(s)
-can be created once in the constructor.
-
-* Issue 62: DistributedQueue wasn't handling getting interrupted very well. It was logging an error.
-
-* Issue 64: wasn't handling SASL events. Any non-SysConnected event was being treated as a disconnection.
-
-* Issue 65: Accepted a pull request that fixes a bug in RetryUntilElapsed.
-
-* Issue 66: Bad log string - needed String.format()
-
-1.1.7/1.0.8 - April 6, 2012
-===========================
-* Accepted a change so that testng is testCompile in Gradle
-
-* Rewrote TestingServer and TestingCluster based on work by Jeremie BORDIER (ahfeel)
-
-* Rewrote the log4j property files
-
-* Moved to ZK 3.4.3
-
-* More work on the Exhibitor integration
-
-1.1.5/1.0.6 - March 23, 2012
-============================
-* Moved to Gradle as the build system.
-
-* Added SimpleDistributedQueue, a drop-in replacement for the DistributedQueue that comes with the
-ZK distribution.
-
-* IMPORTANT CHANGE TO LeaderSelector. Previous versions of Curator overloaded the start() method
-to allow re-queueing. THIS IS NO LONGER SUPPORTED. Instead, there is a new method, requeue(), that
-does this. Calling start() more than once will now throw an exception.
-
-* LeaderSelector now supports auto re-queueing. In previous versions, it wasn't trivial to requeue
-the instance. Now, make a call to autoRequeue() to put the instance in a mode where it will requeue
-itself when the leader selector listener returns.
-
-* The mechanism that calls any kind of Curator listener wasn't protected against exceptions. Thus,
-an exception in a listener could break the listener event thread.
-
-* deleteDirectoryContents() no longer checks for sym links. This was a major issue in the Guava
-version and possibly one of the reasons they removed the method altogether.
-
-1.1.4/1.0.5 - March 12, 2012
-============================
-* Introduced a parent interface for Queues so that they can have some common methods
-
-* Added new Recipe: DistributedIdQueue - a version of DistributedQueue that allows IDs to be
-associated with queue items. Items can then be removed from the queue if needed.
-
-* Curator can now be configured to poll a cluster of Exhibitor (https://github.com/Netflix/exhibitor)
-instances to get the connection string to use with the ZooKeeper client. Should the connection
-string change, any new connections will use the new connection string.
-
-1.1.3/1.0.4 - March 7, 2012
-===========================
-* Issue 27: This bug exposed major problems with the PathChildrenCache. I ended up completely
-rewriting it. The original version was very inefficient and prone to herding. This new version
-is as efficient as possible and adds some nice new features. The major new feature is that when
-calling start(), you can have the cache load an initial working set of data.
-
-* Issue 31: It turns out an instance of InterProcessMutex could not be shared in multiple threads. My
-assumption was that users would create a new InterProcessMutex per thread. But, this restriction is
-arbitrary. For comparison, the JDK Lock doesn't have this requirement. I've fixed this however it
-was a significant change internally. I'm counting on my tests to prove correctness.
-
-* EnsurePath wasn't doing its work in a RetryLoop.
-
-* Added a new class to the Test module, Timing, that is used to better coordinate timings in tests
-
-* LockInternals had a retry loop for all failures when it was only needed if the session expired
-and the lock node was lost. So, I refined the code to handle this specific case.
-
-* Issue 34: PathChildrenCache should ensure the path
-
-* Moved to Guava 11.x
-
-* Lots of work on the Gradle build. NOTE: Gradle will soon become the build system for Curator
-
-1.1.2/1.0.3 - Feb. 8, 2012
-==========================
-* Added listener to Queues to listen for put completion
-
-* Issue 24: If InterProcesMutex.release() failed to delete the node (due to connection errors, etc.)
-the instance was left in an inconsistent state that would cause a future call to acquire() to
-succeed without actually creating the lock. A new feature (see next bullet) was added to solve this
-problem: guaranteed deletes. The various lock-based recipes now use this feature.
-
-* New feature: guaranteed deletes. The delete builder now has a method that will record failed node
-deletions and attempt to delete them in the background until successful. NOTE: you will still get
-an exception when the deletion fails. But, you can be assured that as long as the CuratorFramework
-instance is open attempts will be made to delete the node:
-    client.delete().guaranteed() ...
-
-1.1.1/1.0.2 - Jan. 21, 2012
-===========================
-* Issue 22: Make ServiceCache close itself down properly.
-
-* Issue 21: Move TestNG to the top-level pom and define its scope as test
-
-* Issue 17: ConnectionStateManager should use the builder's thread factory if present
-
-1.1.0 - Jan. 5, 2012
-=====================
-* 1.1.x marks a separate branch of Curator:
-    - 1.0.x will stay compatible with ZooKeeper 3.3.x
-    - 1.1.x+ will require ZooKeeper 3.4.x+
-
-* Added support for ZooKeeper 3.4's Transactions:
-    - CuratorFramework has a new method: inTransaction() that starts a
-      transaction builder
-    - See TestTransactions for examples
-
-1.0.1 - Jan. 4, 2012
-=====================
-* Updated and tested against ZooKeeper 3.4.2
-
-1.0.0 - Dec. 31, 2011
-=====================
-* Added a REST server for Service Discovery
-* Switched to slf4j for logging
-* Moved to 1.0 version
-* Curator is now feature complete
-
-0.6.4 - Dec. 7, 2011
-=====================
-* Added Barrier
-
-* Added Double Barrier
-
-* Added Read/Write lock
-
-* Added revocation to InterProcessMutex
-
-* Fixed (hopefully) intermittent failures with testRetry()
-
-* Updates/enhancements to Discovery based on suggestions from Eishay Smith
-
-0.6.3 - Nov. 30, 2011
-=====================
-* Added Service Discovery
-
-0.6.1 - Nov. 18, 2011
-=====================
-* Added new methods to LeaderSelector to identify/get all Participants
-
-* Moved to ZooKeeper 3.3.3
-
-* Made the TestingCluster not throw an assertion error due to internal JMX registrations
-in ZK. This is done with Javaassist ugliness.
-
-* Refactored listeners in Curator to a common methodology
-
-* Major changes to error handling. Adding a ConnectionStateManager that allows users to
-listen for connection changes. Connection loss is first treated as a recoverable Suspension.
-If the connection is not re-established, the state changes to connection loss. Any recipes
-that are affected by this have been updated.
-
-* PathChildrenCache now handles connection state changes much better.
-
-* All Curator created threads now have a meaningful name.
-
-0.5.2 - Nov. 14, 2011
-=====================
-* Jérémie Bordier posted on the ZK mailing list about a split brain issue with the Leader Selector.
-If the Leader is connected to a server that suffers a network partition, it needs to get notified
-that it has lost leadership. Curator handled this somewhat but only if the client application
-executed periodic ZooKeeper operations. I've enhanced the CuratorFramework implementation to check
-for disconnection and executed a background sync (with retries). This will cause any listener's
-unhandledError() method to get called when there is a network partition.
-
-* New utility: TestingCluster. Allows for testing with an in-memory ZK ensemble.
-
-* Reworked distributed atomic implementations. I was unhappy with the complexity of the previous
-one. Now, there's a simpler master implementation DistributedAtomicValue that is the basis for the
-others. Adding new versions should be simpler as well.
-
-0.5.1 - Nov. 12, 2011
-=====================
-* Another pass at fixing the semaphore. Went back to the model of the count being merely a
-convention. Added a new recipe for a SharedCount that can be used in place of the count convention
-with the semaphore. This is the best of both worlds. The semaphore code is a lot simpler and will
-perform better. Thanks to Monal Daxini for the idea.

http://git-wip-us.apache.org/repos/asf/incubator-curator/blob/f8567052/KEYS
----------------------------------------------------------------------
diff --git a/KEYS b/KEYS
deleted file mode 100644
index 1e29f32..0000000
--- a/KEYS
+++ /dev/null
@@ -1,47 +0,0 @@
-This file contains the PGP keys of various developers.
-
-Users: pgp < KEYS
-       gpg --import KEYS
-Developers: 
-        pgp -kxa <your name> and append it to this file.
-        (pgpk -ll <your name> && pgpk -xa <your name>) >> this file.
-        (gpg --list-sigs <your name>
-             && gpg --armor --export <your name>) >> this file.
-
-pub   2048R/66489D97 2013-03-01
-uid                  Jordan Zimmerman (randgalt) <ra...@apache.org>
-sig 3        66489D97 2013-03-01  Jordan Zimmerman (randgalt) <ra...@apache.org>
-sub   2048R/0A65D9FB 2013-03-01
-sig          66489D97 2013-03-01  Jordan Zimmerman (randgalt) <ra...@apache.org>
-
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: GnuPG/MacGPG2 v2.0.17 (Darwin)
-Comment: GPGTools - http://gpgtools.org
-
-mQENBFEw+WwBCADJ7QwF3bcVovTlZP3NlnCzWs+OCeeLCkbkxfJ4LUWcyptt0flV
-HjYeEH+gHb4ZXIv4iABwG8YcQ4OSw0rmE8z7ae8D/tAPjhOzav0kk+s5h8mGWrKp
-x4tePrfeLQBqI7PSG2q2OrlNfPpqxOlpxdlL9SAdwGvUEli+E91UPPw/5aEQ0BiB
-PvxRqLF1yBfxJ564J1Ju8AZ1/9+adwmpSoYni+t3kBJu9VaiGWL+lt3f/xujBmop
-014Cy1D6nGTofwNnbDgOhd3u44q9xbGYBo7bvxoO/RCSOT/EBsg/7PRjhGj8oQ8O
-z8B008pvCzN/Dh32Bi2m8w83G+XkKzd7CBG5ABEBAAG0MUpvcmRhbiBaaW1tZXJt
-YW4gKHJhbmRnYWx0KSA8cmFuZGdhbHRAYXBhY2hlLm9yZz6JATgEEwECACIFAlEw
-+WwCGwMGCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJEJ6949BmSJ2XdhAIAIPQ
-M2D0bG8/Muza86I2jEx6N8ulF0Vghaf0rKtwDUs06yA80Id8Q5R0o/DN3JzT4x9Y
-33M3748uaEc1Nau04HiWw3fn0gLgdvA7VriPNxJW3QbWWADhnOH/y7IWUGSSp+D3
-UD3ScsY0gBDAW+lOXNqMZ2OTtawTAF51xNIn3kDUXcG9BwAILSbBvoDxdgEzjO8/
-5w6ezyapatUt7UF2BqkZS7Posyd9gEsh5zMfkZE6stWd2StE/6IdazHT7UXknQ4t
-h3HfqTXlW1gOU1MvOzLHb4/jeQUXDb6UWLMHa0NHN1IDyAlcrlJHIVBpbxjEM4e3
-BFPTgQQuw5qxmzu/rSq5AQ0EUTD5bAEIAKwnGO+J00FccMV7O/zz4u6NR8MPnXcR
-Frjqy1njIp6esDnZMjFcM6obCwJ5187GWbhWa8zRwGkRMp43dpaHyL24h93X+8e1
-JX4494/pjKRqnxpws/x3GhCd1D+Ovrv9ilhJWQdXYD+JfLoDF6pqmuxYwXWSRqKM
-5qSp4uIO3xbUasxmSNertJ/NKNGkQu8UO3LeMhCikRvT3T7Pq350HCJ8QYRTJ4sg
-ozcEqPqAgfzwlTAmaatllOaoxZ1K/pp3uSGhHR6EsMeWiSQINMA9AtT/1D3+SFA0
-hqBLstDkvqzafjs+6f0aSBEt6fELuH1hA8ynsmxudlADEF0pzChJmJUAEQEAAYkB
-HwQYAQIACQUCUTD5bAIbDAAKCRCevePQZkidl/N5B/9iU+KI9/eKrPMFq2F2kTe7
-N7P52wC/KysK9Xmr6fKKlrY4eLs+y54iifH5cLHVLwNu63Bb4rxcLKGqqg0sRh5v
-04DfzfkL4+5XulqfsEESmhYlUbtWn5s2h78HKtmM53HdSFJVV9mGD95SOmJgmLpb
-pcc4vkibU6O4ExMxjBTkS0eorFVLWs2jUpQp/swrPgCB1lvw5mP96RziZ6Y3fovt
-jspDEC1NEFEQsjzfvQPfi39LhtufKxaFbkamQ4bDJfmEA3fohmSfcJqzvhX5WBRr
-UThk9LkkrpGAq3HQc4xNm2AvCF/Ja4qDh15VadLYNiZXBNHTT+3ncecgnltNpVRa
-=Y7m5
------END PGP PUBLIC KEY BLOCK-----