curator-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
Subject [2/2] git commit: not needed
Date Wed, 01 May 2013 17:01:57 GMT
not needed


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

 CHANGES |  558 ----------------------------------------------------------
 KEYS    |   47 -----
 2 files changed, 0 insertions(+), 605 deletions(-)
diff --git a/CHANGES b/CHANGES
deleted file mode 100644
index de9f3a4..0000000
+++ /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
-* 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
-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:
-* 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
-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:
- details
-* 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
-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
-* Issue 200: Post-creation services registered in ServiceDiscovery via registerService()
-not being treated the same as the service passed in the constructor. Consequently they wouldn't
-re-registered if there were connection problems.
-* Creating nodes withProtection() is now supported in the background. e.g.
-* 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 - thanks to user
-* 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
-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
-* 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"
-* Added support for ZK 3.4's read only operation as described here:
- - 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
-* 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
-background operations. This can be improved, however. The first time the background operation
-executed the ZooKeeper method can be called directly - without queuing. This will get the
-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,
-for ErrorMode.REQUEUE. Consequently, when in mode ErrorMode.REQUEUE the DistributedQueue
-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
-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
-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
-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
-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
-projects that would like to use Curator but don't want to risk porting working code that
-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
-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
-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
-* Issue 121: Apply bytecode rewriting to turn off JMX registrations to TestingServer as well
-* Issue 125: Use ScheduledThreadPoolExecutor instead of blocking threads that have period
-* 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
-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
-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
-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
-handling outages very well. The connectionString could get stuck to an old value if the list
-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
-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)
-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
-* Issue 82: Generalized (and deprecated) nonNamespaceView() by adding the usingNamespace()
-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
-stay around as garbage. See the Utilities wiki for details:
-* Unit tests should be a lot less noisy. A system property now turns off most internal error
-* 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.
-leak occurs when retries are exhausted. NOTE: TestLockCleanlinessWithFaults now tests for
-* Added some missing combinations in the backgrounding API
-* Added QueueSharder utility. Due to limitations in ZooKeeper's transport layer, a single
-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
-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:
-* Several users have expressed dissatisfaction with the LeaderSelector implementation - requiring
-thread, etc. So, LeaderLatch has been added which behaves a lot like a CountDownLatch but
for leader
-1.1.8/1.0.9 - April 17, 2012
-* Added methods to compress data via create() and setData() and to decompress data via getData().
-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()
-to allow re-queueing. THIS IS NO LONGER SUPPORTED. Instead, there is a new method, requeue(),
-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
-the instance. Now, make a call to autoRequeue() to put the instance in a mode where it will
-itself when the leader selector listener returns.
-* The mechanism that calls any kind of Curator listener wasn't protected against exceptions.
-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
-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
-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 (
-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
-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
-arbitrary. For comparison, the JDK Lock doesn't have this requirement. I've fixed this however
-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
-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,
-the instance was left in an inconsistent state that would cause a future call to acquire()
-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
-deletions and attempt to delete them in the background until successful. NOTE: you will still
-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
-If the Leader is connected to a server that suffers a network partition, it needs to get
-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
-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.
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
-        pgp -kxa <your name> and append it to this file.
-        (pgpk -ll <your name> && pgpk -xa <your name>) >> this
-        (gpg --list-sigs <your name>
-             && gpg --armor --export <your name>) >> this file.
-pub   2048R/66489D97 2013-03-01
-uid                  Jordan Zimmerman (randgalt) <>
-sig 3        66489D97 2013-03-01  Jordan Zimmerman (randgalt) <>
-sub   2048R/0A65D9FB 2013-03-01
-sig          66489D97 2013-03-01  Jordan Zimmerman (randgalt) <>
-Version: GnuPG/MacGPG2 v2.0.17 (Darwin)
-Comment: GPGTools -

View raw message