bigmarvin [Fri, 27 Mar 2020 06:35:14 +0000 (14:35 +0800)]
[CURATOR-464] attach orignal artifacts with classifier original
Jordan Zimmerman [Mon, 23 Mar 2020 20:11:18 +0000 (15:11 -0500)]
CURATOR-564 (#351)
Like was done for TestingServer, catch startup issues for TestingCluster and then re-recreate and re-start the cluster one time. Hopefully this will make the tests more stable.
Co-authored-by: randgalt <randgalt@apache.org>
Jordan Zimmerman [Fri, 20 Mar 2020 01:52:43 +0000 (20:52 -0500)]
CURATOR-549 (#334)
Support persistent watchers in ZK 3.6+ while maintaining background compatibility with previous versions of ZK. Adds Curator Framework DSL calls to ZooKeeper's addWatch() method. Subsequent PRs will add recipes. Both the older Framework and the async Framework now have methods to add persistent watchers.
Co-authored-by: randgalt <randgalt@apache.org>
Jordan Zimmerman [Mon, 16 Mar 2020 17:12:53 +0000 (12:12 -0500)]
[CURATOR-558] - Updates for ZooKeeper 3.6.0 (#350)
* CURATOR-558
Bring Curator up to ZooKeeper 3.5.6 in preparation for supporting persistent recursive watchers while maintaining background compatability with previous versions of ZK. Added a new module to make sure we maintain compatibility with ZK 3.5.x. ZooKeeper 3.6.0 has some significant changes from previous versions. The reconfig APIs have moved into a new class, ZooKeeperAdmin. This class existed in 3.5.x but wasn't required. Now it is. A bunch of little things changed in the ZK server code which affected Curator's test classes. I moved it all into reflection based calls in Compatibility.java in the test module. We now have modules that test ZK 3.4, 3.5 and 3.6 so we're safe with compatibility. ZooKeeper's MultiTransactionRecord has been removed it seems. That forced CuratorMultiTransactionRecord to be re-written. It's not a public class so hopefully it won't affect anyone.
There is a new module, curator-test-zk35. It forces ZooKeeper 3.5.6 and performs selected tests from the other modules to ensure compatibility. Tests annotated with TestNG groups zk35 and zk35Compatibility are tested. Group zk36 is excluded. Note: these tests will only run from Maven. I don't think IntelliJ/Eclipse support the Maven syntax I used.
Support persistent watchers in ZK 3.6+ while maintaining background compatability with previous versions of ZK. Added a new module to make sure we maintain comaptibility with ZK 3.5.x
* CURATOR-558 - change to version 5.0.0-SNAPSHOT
Co-authored-by: randgalt <randgalt@apache.org>
Jordan Zimmerman [Sat, 14 Mar 2020 23:13:56 +0000 (18:13 -0500)]
CURATOR-558 (#344)
Pt1 of change
* Remove the ZK 3.4 compatibility module and code
* Remove the deprecated ListenerContainer that leaks Guava classes into our APIs
* Remove Exhibitor support
* Various minor changes/cleanups
Co-authored-by: randgalt <randgalt@apache.org>
randgalt [Sat, 14 Mar 2020 18:05:44 +0000 (13:05 -0500)]
Merge branch 'master' of https://gitbox.apache.org/repos/asf/curator
tison [Tue, 10 Mar 2020 16:25:13 +0000 (00:25 +0800)]
CURATOR-562 - Remove ConnectionHandlingPolicy - flatten out behavior to match old StandardConnectionHandlingPolicy - closes #348
tison [Tue, 10 Mar 2020 16:25:13 +0000 (00:25 +0800)]
CURATOR-562 - Remove ConnectionHandlingPolicy - flatten out behavior to match old StandardConnectionHandlingPolicy
Jordan Zimmerman [Thu, 20 Feb 2020 03:27:10 +0000 (22:27 -0500)]
CURATOR-559 (#346)
The retry loop mechanism ended up getting nested multiple times causing exponential calls to the retry policy and violating a given policy's limits. Use a thread local to mitigate this so that a retry loop is reused for nested API calls, etc.
randgalt [Tue, 18 Feb 2020 18:59:52 +0000 (13:59 -0500)]
CURATOR-560
a) make sure setReuseAddress is set for server when getting a random port
b) always set "tickTime" and "minSessionTimeout" to make our tests run a bit faster
c) fixed incorrect exception message in blockUntilStarted()
Oleksandr Porunov [Wed, 16 Oct 2019 08:30:04 +0000 (11:30 +0300)]
[CURATOR-548] Bump zookeeper version to 3.5.7
Jordan Zimmerman [Wed, 12 Feb 2020 22:07:45 +0000 (17:07 -0500)]
CURATOR-551 (#345)
Commit
26364c6186fc7c09a9462557b1ca791e9aa70006 (Sat Sep 26 13:13:02 2015) changed HandleHolder.getNewConnectionString() was changed to return the new connection string instead of just a boolean. I believe the value returned should have been ensembleProvider.getConnectionString() not helper.getConnectionString(). TBH I no longer remember the genesis of this change but I can't make the current implementation make sense.
Additionally, a change was made to optionally call zooKeeper.updateServerList(). When this path is taken the handle holder's connection needs to be updated as well or we'll get an infinite loop of changes. The path that runs when ensembleProvider.updateServerListEnabled() is false ends up setting handle holder's connection to ensembleProvider.getConnectionString().
I'm loathe to make such low level changes in code that's existed for a long time. But, my investigation shows that this is how it should be. Hopefully, users can do testing.
Shay Shimony [Fri, 31 Jan 2020 15:27:51 +0000 (17:27 +0200)]
Merge pull request #343 from naude-r/servicecache_thread_leak
[CURATOR-557] ServiceCacheImpl does not close ExecutorService
Roelof Naude [Wed, 22 Jan 2020 13:04:37 +0000 (15:04 +0200)]
- ServiceCacheImpl should allow the self-created executor service to be closed
- Allow an optional executor service for ServiceProvider
康智冬 [Sun, 19 Jan 2020 00:44:22 +0000 (08:44 +0800)]
Fix typo
fix typo
Tatu Saloranta [Fri, 11 Oct 2019 05:23:56 +0000 (22:23 -0700)]
CURATOR-547 change JAX-RS reader/writer to reuse Jackson ObjectMapper; also Jackson 2.9.8 -> 2.9.10
Jordan Zimmerman [Mon, 4 Nov 2019 14:30:23 +0000 (09:30 -0500)]
Merge pull request #332 from apache/dependabot/maven/jackson-version-2.10.0
Bump jackson-version from 2.9.8 to 2.10.0
dependabot[bot] [Fri, 1 Nov 2019 12:15:30 +0000 (12:15 +0000)]
Bump jackson-version from 2.9.8 to 2.10.0
Bumps `jackson-version` from 2.9.8 to 2.10.0.
Updates `jackson-core` from 2.9.8 to 2.10.0
- [Release notes](https://github.com/FasterXML/jackson-core/releases)
- [Commits](https://github.com/FasterXML/jackson-core/compare/jackson-core-2.9.8...jackson-core-2.10.0)
Updates `jackson-databind` from 2.9.8 to 2.10.0
- [Release notes](https://github.com/FasterXML/jackson/releases)
- [Commits](https://github.com/FasterXML/jackson/commits)
Updates `jackson-dataformat-yaml` from 2.9.8 to 2.10.0
- [Release notes](https://github.com/FasterXML/jackson-dataformats-text/releases)
- [Commits](https://github.com/FasterXML/jackson-dataformats-text/compare/jackson-dataformats-text-2.9.8...jackson-dataformats-text-2.10.0)
Signed-off-by: dependabot[bot] <support@github.com>
randgalt [Fri, 11 Oct 2019 05:25:36 +0000 (08:25 +0300)]
CURATOR-546
Bad copy/paste bug. ModeledCacheImpl.currentData() was removing from entries instead of calling get()
Shay Shimony [Sun, 29 Sep 2019 11:18:06 +0000 (14:18 +0300)]
Merge pull request #327 from apache/CURATOR-543-fix-testLockACLs-due-to-ZOOKEEPER-1392
CURATOR-543 - ZOOKEEPER-1392 broke TestLockACLs
randgalt [Sat, 28 Sep 2019 17:46:35 +0000 (12:46 -0500)]
CURATOR-543
ZOOKEEPER-1392 broke TestLockACLs. In order to read ACLS you now need READ perm. TestLockACLs.testLockACLs() needs to be updated to reflect this.
randgalt [Tue, 24 Sep 2019 19:25:22 +0000 (14:25 -0500)]
Merge branch 'CURATOR-541-x'
randgalt [Tue, 24 Sep 2019 18:44:13 +0000 (13:44 -0500)]
temp checking to see if adding synchronized fixes travis
randgalt [Tue, 24 Sep 2019 18:03:18 +0000 (13:03 -0500)]
Merge branch 'CURATOR-541'
randgalt [Sat, 21 Sep 2019 17:57:09 +0000 (12:57 -0500)]
CURATOR-541
The retry code in BaseClassForTests was hopelessly broken - I don't know for how long. Reworked it so that it does the right thing now (hopefully). Storing the retry count as an attribute wasn't working. The new method stores it as a field in the test class and makes sure that it's always correct. It should only ever be true when actually retrying and, given that TestNG always calls the retry method, it can be reset after a retry fails.
Jordan Zimmerman [Thu, 5 Sep 2019 14:32:43 +0000 (09:32 -0500)]
Merge pull request #314 from aseychell/master
CURATOR-519: Update zookeeper to 3.5.5 stable version
Jordan Zimmerman [Thu, 5 Sep 2019 14:31:06 +0000 (09:31 -0500)]
Merge pull request #324 from apache/CURATOR-537
[CURATOR-537] make getOurPath() public
Jordan Zimmerman [Tue, 3 Sep 2019 21:00:13 +0000 (16:00 -0500)]
Merge pull request #323 from sth/remove-obsolete-link
[CURATOR-539] Remove link to obsolete Stack Overflow tag
randgalt [Mon, 2 Sep 2019 17:04:22 +0000 (12:04 -0500)]
CURATOR-537 - make getOurPath() public
Stephan Hohe [Sun, 25 Aug 2019 16:55:25 +0000 (18:55 +0200)]
Remove link to obsolete Stack Overflow tag
Shay Shimony [Thu, 22 Aug 2019 19:11:39 +0000 (22:11 +0300)]
Merge pull request #321 from asdf2014/fix_bytebuffer
CURATOR-523: Fix ByteBuffer's compatibility issues
Aldrin Seychell [Thu, 22 Aug 2019 04:48:34 +0000 (06:48 +0200)]
Merge remote-tracking branch 'upstream/master'
Shay Shimony [Mon, 12 Aug 2019 19:32:30 +0000 (22:32 +0300)]
Merge pull request #320 from apache/CURATOR-505-improve-circuit-breaker-to-shared
[CURATOR-533] - improve circuit breaking behavior
randgalt [Sun, 28 Jul 2019 06:01:13 +0000 (01:01 -0500)]
CURATOR-533
CURATOR-505 introduced circuit breaking behavior via CircuitBreakingConnectionStateListener and ConnectionStateListenerDecorator. Elastic has been using it to success but reports that the implementation can be improved. The existing implementation uses a new CircuitBreaker for each ConnectionStateListener set in a Curator client. It turns out that this is not ideal. Instead, a shared CircuitBreaker should be used per Curator client.
Unfortunately, the best way to do this is to remove the ConnectionStateListenerDecorator semantics and use a different mechanism. This Issue proposes to do this and remove ConnectionStateListenerDecorator. This is a breaking change but given the short amount of time it's been in Curator it's unlikely that it's been widely adopted.
In this commit, ConnectionStateListenerDecorator is removed in favor of ConnectionStateListenerManagerFactory. ConnectionStateManager uses this factory to create the container to hold registered ConnectionStateListeners. A new CircuitBreakerManager now manages the circuit breaking behavior using a shared CircuitBreaker.
Shay Shimony [Sat, 10 Aug 2019 18:59:02 +0000 (21:59 +0300)]
Merge pull request #322 from abcdenis/CURATOR-536
[CURATOR-536] break infinite loop in internalLeave() on timeout
abcdenis [Thu, 8 Aug 2019 09:17:23 +0000 (12:17 +0300)]
CURATOR-536 break infinite loop in internalLeave() on timeout
subj!
asdf2014 [Thu, 1 Aug 2019 00:58:34 +0000 (08:58 +0800)]
Fix ByteBuffer's compatibility issues
Enrico Olivelli [Sun, 28 Jul 2019 14:48:30 +0000 (16:48 +0200)]
Turn off spammy logs
Enrico Olivelli [Sun, 28 Jul 2019 11:51:00 +0000 (13:51 +0200)]
Switch to OpenJDK 8 and 11
Shay Shimony [Mon, 15 Jul 2019 18:16:33 +0000 (21:16 +0300)]
Merge pull request #317 from apache/CURATOR-528-fix-mailing-list-issues
fix mailing list issues
shayshim [Sun, 14 Jul 2019 20:49:43 +0000 (23:49 +0300)]
fix mailing-lists.html buttons to have mailto prefix; fix doap.rdf to refer correctly to mailing-lists.html
Shay Shimony [Fri, 12 Jul 2019 14:33:35 +0000 (17:33 +0300)]
Merge pull request #315 from emretetik96/CURATOR-530
[CURATOR-530] Documentation on InterProcessSemaphoreMutex is misleading
Emre Tetik [Thu, 11 Jul 2019 19:29:11 +0000 (15:29 -0400)]
Add note on InterProcessLock description
Emre Tetik [Wed, 3 Jul 2019 18:29:14 +0000 (14:29 -0400)]
Style changes
Emre Tetik [Wed, 3 Jul 2019 18:19:26 +0000 (14:19 -0400)]
Modified javadoc for InterProcessLock and subclasses to be less misleading
Aldrin Seychell [Tue, 28 May 2019 15:39:10 +0000 (17:39 +0200)]
Update zookeeper to 3.5.5 stable version
Shay Shimony [Mon, 13 May 2019 20:51:05 +0000 (23:51 +0300)]
Merge pull request #311 from JiriOndrusek/CURATOR-429_osgi-zookeeper-dependency
[CURATOR-429] Make Curator 4.x compatible with Zookeeper 3.4.x in OSGi too
JiriOndrusek [Mon, 13 May 2019 10:09:31 +0000 (12:09 +0200)]
[CURATOR-429] Make Curator 4.x compatible with Zookeeper 3.4.x in OSGi too
shayshim [Sun, 21 Apr 2019 17:22:21 +0000 (20:22 +0300)]
added myself in the developers section
randgalt [Sat, 20 Apr 2019 17:20:46 +0000 (12:20 -0500)]
fixed some broken left nav links
randgalt [Thu, 18 Apr 2019 20:37:59 +0000 (15:37 -0500)]
Merge branch 'master' of https://gitbox.apache.org/repos/asf/curator
randgalt [Thu, 18 Apr 2019 20:37:48 +0000 (15:37 -0500)]
move to gitbox
Jordan Zimmerman [Fri, 22 Mar 2019 11:07:32 +0000 (06:07 -0500)]
Merge pull request #305 from BELUGABEHR/CURATOR-511
CURATOR-511: Add toString to ZKPaths PathAndNode
Beluga Behr [Thu, 21 Mar 2019 22:04:13 +0000 (18:04 -0400)]
CURATOR-511: Add toString to ZKPaths PathAndNode
randgalt [Sun, 3 Mar 2019 19:54:30 +0000 (14:54 -0500)]
[maven-release-plugin] prepare for next development iteration
randgalt [Sun, 3 Mar 2019 19:54:19 +0000 (14:54 -0500)]
[maven-release-plugin] prepare release apache-curator-4.2.0
randgalt [Sun, 3 Mar 2019 19:41:29 +0000 (14:41 -0500)]
[maven-release-plugin] prepare for next development iteration
randgalt [Sun, 3 Mar 2019 19:41:18 +0000 (14:41 -0500)]
[maven-release-plugin] prepare release apache-curator-4.1.1
Jordan Zimmerman [Sun, 3 Mar 2019 19:30:21 +0000 (14:30 -0500)]
Merge pull request #259 from krichter722/license-plugin-phase
changed phase of maven-license-plugin to validate
randgalt [Sun, 3 Mar 2019 14:55:59 +0000 (09:55 -0500)]
Merge branch 'CURATOR-481' of github.com:Max-Pudov/curator into CURATOR-481
randgalt [Sun, 3 Mar 2019 13:36:48 +0000 (08:36 -0500)]
Merge branch 'master' of https://gitbox.apache.org/repos/asf/curator
randgalt [Sun, 3 Mar 2019 04:16:44 +0000 (23:16 -0500)]
CURATOR-503 guava has been broken into multiple JARs it seems. Our shading needs to reflect that
randgalt [Fri, 1 Mar 2019 17:29:36 +0000 (12:29 -0500)]
Merge branch 'update-deps-2018' of github.com:metamx/curator into CURATOR-503
Jordan Zimmerman [Fri, 1 Mar 2019 13:16:05 +0000 (08:16 -0500)]
Update README.md
Jordan Zimmerman [Wed, 27 Feb 2019 16:39:47 +0000 (11:39 -0500)]
Update README.md
randgalt [Mon, 25 Feb 2019 19:58:23 +0000 (14:58 -0500)]
Closes CURATOR-413 - Added travis config file
randgalt [Wed, 13 Feb 2019 15:52:48 +0000 (10:52 -0500)]
Merge branch 'CURATOR-505'
randgalt [Wed, 13 Feb 2019 04:30:03 +0000 (23:30 -0500)]
CURATOR-505 - fix elapsed calculation in the circuit breaker
randgalt [Mon, 11 Feb 2019 13:38:25 +0000 (08:38 -0500)]
CURATOR-505 - didn't mean to check this in
randgalt [Mon, 11 Feb 2019 12:47:18 +0000 (07:47 -0500)]
Merge branch 'CURATOR-498'
randgalt [Mon, 11 Feb 2019 12:46:55 +0000 (07:46 -0500)]
CURATOR-505 - Some refactoring and more doc
randgalt [Thu, 7 Feb 2019 20:46:02 +0000 (15:46 -0500)]
CURATOR-505 ctor should be private
randgalt [Thu, 7 Feb 2019 20:35:10 +0000 (15:35 -0500)]
CURATOR-505 - refactoring/refining a new listener container that doesn't rely on Guava and supports mapping. We need for this PR anyway.
randgalt [Thu, 7 Feb 2019 17:58:41 +0000 (12:58 -0500)]
CURATOR-505 - decoration of ConnectionStateListeners is now automatic (a backdoor is provided)
randgalt [Thu, 7 Feb 2019 17:10:52 +0000 (12:10 -0500)]
CURATOR-505 - interim checking - refactoring, simplifications, more testing, and documentation
randgalt [Thu, 7 Feb 2019 14:02:03 +0000 (09:02 -0500)]
CURATOR-505
A decorator/proxy for connection state listeners that adds circuit breaking behavior. During network outages ZooKeeper can become very noisy sending connection/disconnection events in rapid succession. Curator recipes respond to these messages by resetting state, etc. E.g. LeaderLatch must delete its lock node and try to recreated it in order to try to re-obtain leadership, etc.
This noisy herding can be avoided by using the circuit breaking listener decorator. When it receives ConnectionState.SUSPENDED, the circuit becomes "open" (based on the provided RetryPolicy) and will ignore future connection state changes until RetryPolicy timeout has elapsed. Note: however, if the connection goes from ConnectionState.SUSPENDED to ConnectionState.LOST the first LOST state is sent.
Roman Leventov [Wed, 6 Feb 2019 08:14:19 +0000 (15:14 +0700)]
Improve comment
randgalt [Tue, 5 Feb 2019 17:16:26 +0000 (12:16 -0500)]
CURATOR-498 - minor tuning to testSessionSurvives() test
randgalt [Tue, 5 Feb 2019 15:11:08 +0000 (10:11 -0500)]
CURATOR-498
change to how session expiration is injected introduced flakiness into testSessionConnectionStateErrorPolicyWithExpirationPercent30. I've tightened up the test.
randgalt [Tue, 5 Feb 2019 14:06:48 +0000 (09:06 -0500)]
CURATOR-498
Tightened LeaderLatch's timed await method so it's more consistent. The two calls to hasLeadership() were affecting the testWatchedNodeDeletedOnReconnect() test. In practice this is likely not an issue, but it's more consistent now. Also, reworked the testWatchedNodeDeletedOnReconnect() a bit.
randgalt [Mon, 4 Feb 2019 15:44:24 +0000 (10:44 -0500)]
CURATOR-498
Removed no-longer-necessary KillSession2. Also, now always use the reflection based code to insert the session end event given what we've found about the previous version inside of ZooKeeper. I also opened a PR in ZooKeeper (see ZOOKEEPER-3269) to add a supported method to do this for the future.
randgalt [Wed, 30 Jan 2019 19:23:16 +0000 (14:23 -0500)]
CURATOR-500 - move to Gitbox
randgalt [Tue, 29 Jan 2019 18:22:50 +0000 (13:22 -0500)]
CURATOR-498
Missed a check on doProtected in checkSetSessionId()
randgalt [Tue, 29 Jan 2019 14:17:35 +0000 (09:17 -0500)]
CURATOR-498
1. Abstracted protected mode fields into a new class for clarity. 2. CURATOR-498's fix is making TestTreeCache.testKilledSession fail for zk 3.4 emulation mode. It's strange, but simple to work around. Should likely be revisited in the future.
randgalt [Mon, 28 Jan 2019 19:23:15 +0000 (14:23 -0500)]
CURATOR-498
Kudos to user Shay Shimony for his tireless and excellent work tracking this down. There are two problems addressed here: 1) Protected create mode can potentially find a ZNode that is about to be deleted due to an expired session. CreateBuilderImpl now keeps track of the session ID when the create is initiated. If after a connection loss the session ID has changed, any found protected node is ignored as it will soon be deleted. 2) For ZooKeeper 3.4.x the simulated (via reflection) InjectSessionExpiration was incorrectly setting the connection state to closed which caused the session expiration to be ignored.
Roman Leventov [Tue, 11 Dec 2018 18:38:13 +0000 (19:38 +0100)]
Update deps
randgalt [Mon, 7 Jan 2019 21:44:23 +0000 (16:44 -0500)]
CURATOR-501 remove ZK 3.5 only class from expectedExceptions in test annotation
randgalt [Thu, 20 Dec 2018 00:38:54 +0000 (19:38 -0500)]
CURATOR-497 - include a link to the Download wiki page and update doxia revs
randgalt [Mon, 17 Dec 2018 03:35:17 +0000 (22:35 -0500)]
[maven-release-plugin] prepare for next development iteration
randgalt [Mon, 17 Dec 2018 03:35:06 +0000 (22:35 -0500)]
[maven-release-plugin] prepare release apache-curator-4.1.0
randgalt [Mon, 17 Dec 2018 00:59:06 +0000 (19:59 -0500)]
CURATOR-495 runSafeService should return this
randgalt [Fri, 14 Dec 2018 19:20:12 +0000 (14:20 -0500)]
CURATOR-495 - have methods return a CompletableFuture so that callers can check completion, etc.
randgalt [Fri, 14 Dec 2018 01:34:40 +0000 (20:34 -0500)]
CURATOR-495
Fixes race in many Curator recipes whereby a pattern was used that called "notifyAll" in a synchronized block in response to a ZooKeeper watcher callback. This created a race and possible deadlock if the recipe instance was already in a synchronized block. This would result in the ZK event thread getting blocked which would prevent ZK connections from getting repaired. This change adds a new executor (available from CuratorFramework) that can be used to do the sync/notify so that ZK's event thread is not blocked.
randgalt [Tue, 11 Dec 2018 19:21:20 +0000 (14:21 -0500)]
Merge branch 'CURATOR-479-2'
randgalt [Tue, 11 Dec 2018 01:00:41 +0000 (20:00 -0500)]
Merge branch 'CURATOR-479-2' of https://git-wip-us.apache.org/repos/asf/curator into CURATOR-479-2
randgalt [Mon, 10 Dec 2018 20:40:46 +0000 (15:40 -0500)]
CURATOR-479
CachedModeledFrameworkImpl.children() and CachedModeledFrameworkImpl.childrenAsZNodes() were not implemented correctly but neither was the previous commit for this. This is the correct fix. Previous commit was returning full tree, should be 1 level only
randgalt [Mon, 10 Dec 2018 20:40:46 +0000 (15:40 -0500)]
CURATOR-479
CachedModeledFrameworkImpl.children() and CachedModeledFrameworkImpl.childrenAsZNodes() were not implemented correctly but neither was the previous commit for this. This is the correct fix. Previous commit was returning full tree, should be 1 level only
Roman Leventov [Mon, 10 Dec 2018 18:37:52 +0000 (19:37 +0100)]
Make ZKPaths.makePath() methods to allocate less garbage
randgalt [Mon, 10 Dec 2018 17:28:01 +0000 (12:28 -0500)]
Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/curator
randgalt [Mon, 10 Dec 2018 17:27:20 +0000 (12:27 -0500)]
Merge branch 'CURATOR-479'