zookeeper.git
2 days agoZOOKEEPER-3071: Add a config parameter to control transaction log size master
Suyog Mapara [Mon, 12 Nov 2018 21:36:32 +0000 (13:36 -0800)] 
ZOOKEEPER-3071: Add a config parameter to control transaction log size

Author: Suyog Mapara <suyogm@fb.com>
Author: Suyog Mapara <suyogm@devvm30625.prn1.facebook.com>

Reviewers: breed@apache.org, andor@apache.org

Closes #567 from suyogmapara/ZOOKEEPER-3071 and squashes the following commits:

0a2899994 [Suyog Mapara] Addressing comments
9d5765181 [Suyog Mapara] Update documentation per comments.
5201329bc [Suyog Mapara] Updating documentation
6d2b72058 [Suyog Mapara] Addressing comments
9386e2b6c [Suyog Mapara] ZOOKEEPER-3071: Updating comment to include more details about the feature
5a28efd72 [Suyog Mapara] ZOOKEEPER-3071: Addressing comments and fixing incorrect merge.
1aa12f9d3 [Suyog Mapara] ZOOKEEPER-3071: Add a config parameter to control transaction log size

7 days agoZOOKEEPER-3162: Broken lock semantics in C client lock-recipe.
Andrea Reale [Wed, 7 Nov 2018 23:54:43 +0000 (15:54 -0800)] 
ZOOKEEPER-3162: Broken lock semantics in C client lock-recipe.

This PR fixes a few issues with the C client lock-recipe, as documented in more detailed in [ZOOKEEPER-3162](https://issues.apache.org/jira/browse/ZOOKEEPER-3162) on JIRA.

Details are also provided in the individual commits, but in short:
- Fix a bug in the choice of the predecessor node while trying to acquire the lock
- Fix a possible deadlock in zkr_lock_operation
- Fix the return value of zkr_lock_lock to abide to the prescribed semantics.

Author: Andrea Reale <realean2@ie.ibm.com>

Reviewers: andor@apache.org

Closes #662 from andreareale/ZOOKEEPER-3162 and squashes the following commits:

09f7ff4ed [Andrea Reale] Fixes deadlock in zoo_lock_operation
670d25a8e [Andrea Reale] Fix return semantics of zkr_lock_lock
2a1d66c4b [Andrea Reale] Bugfix on zookeeper-recipes-lock C implementation
a9b6a1a09 [Andrea Reale] Fix wrong include path for C recipes

8 days agoZOOKEEPER-3173: Quorum TLS - support PEM trust/key stores
Ilya Maykov [Wed, 7 Nov 2018 01:29:49 +0000 (17:29 -0800)] 
ZOOKEEPER-3173: Quorum TLS - support PEM trust/key stores

Add support for loading key and trust stores from PEM files.

Unfortunately, this PR includes 2 JIRAs, because it was quite difficult
to untangle the two features as they were developed at the same time
originally:

- ZOOKEEPER-3173: Quorum TLS - support PEM trust/key stores
- ZOOKEEPER-3175: Quorum TLS - test improvements

## Added support for PEM formatted key stores and trust stores
- key store and trust store files can now be in PEM format as well as JKS.
- Added config properties to tell ZK what type of trust/key store to load:
- `zookeeper.ssl.keyStore.type` and `zookeeper.ssl.trustStore.type` for ClientX509Util
- `zookeeper.ssl.quorum.keyStore.type` and `zookeeper.ssl.quorum.trustStore.type` for QuorumX509Util
- store type properties could have the values "JKS", "PEM", or not set
- leaving the type properties unset will cause auto-detection of the store type based on the file extension (".jks" or ".pem")

## Added test utilities for easily creating X509 certs and using them in unit tests
- added new class `X509TestContext` and its friend, `X509TestHelpers`
- rewrote some existing unit tests to use these classes, and added new tests that use them
- some existing tests (i.e. `QuorumSSLTest`) should probably be ported to use this as well, haven't got around to it yet

Author: Ilya Maykov <ilyam@fb.com>

Reviewers: andor@apache.org

Closes #678 from ivmaykov/ZOOKEEPER-3173

9 days agoZOOKEEPER-3155: Remove Forrest XMLs and their build process from the …
Tamas Penzes [Tue, 6 Nov 2018 17:50:15 +0000 (09:50 -0800)] 
ZOOKEEPER-3155: Remove Forrest XMLs and their build process from the …

…project

In this commit I've removed the forrest XML files and their result from the repository.
I've also removed the process to generate HTML and PDF files from the forrest files, since it's not needed anymore.

It also effects the test-github-pr.sh and test-patch.sh, since we do have less parameters for them (FORREST_HOME).

Change-Id: I30ecdb181f19eed05d86838b12c75e0c03e33710

Author: Tamas Penzes <tamaas@cloudera.com>

Reviewers: andor@apache.org

Closes #671 from tamaashu/ZOOKEEPER-3155

9 days agoZOOKEEPER-3156: Add in option to canonicalize host name
Robert Evans [Mon, 5 Nov 2018 18:40:55 +0000 (10:40 -0800)] 
ZOOKEEPER-3156: Add in option to canonicalize host name

This is the master and 3.5 version of #648.  It should apply cleanly to both lines, but if you want a separate pull request for each I am happy to do it.

Author: Robert Evans <evans@yahoo-inc.com>

Reviewers: fangmin@apache.org, andor@apache.org

Closes #652 from revans2/ZOOKEEPER-3156

10 days agoZOOKEEPER-2807: Fix flaky test org.apache.zookeeper.test.WatchEventWhenAutoResetTest...
Andor Molnar [Mon, 5 Nov 2018 07:45:40 +0000 (23:45 -0800)] 
ZOOKEEPER-2807: Fix flaky test org.apache.zookeeper.test.WatchEventWhenAutoResetTest.testNodeDataChanged

Mark the test as ignored.
Please see https://issues.apache.org/jira/browse/ZOOKEEPER-3182 for more details

Author: Andor Molnar <andor@apache.org>

Reviewers: Fangmin Lyu <fangmin@apache.org>

Closes #682 from anmolnar/ZOOKEEPER-2807

3 weeks agoZOOKEEPER-3163: Use session map in the Netty to improve close session performance
Fangmin Lyu [Wed, 24 Oct 2018 02:03:01 +0000 (19:03 -0700)] 
ZOOKEEPER-3163: Use session map in the Netty to improve close session performance

This is a refactor to make the Netty able to use the same closeSession logic in NIOServerCnxn, which is more efficient with the sessionMap. Rely on the existing tests for the refactor work here.

Author: Fangmin Lyu <allenlyu@fb.com>

Reviewers: Tamás Pénzes, Enrico Olivelli, maoling, Michael Han

Closes #665 from lvfangmin/ZOOKEEPER-3163

3 weeks agoZOOKEEPER-3032: MAVEN MIGRATION - zookeeper-server
Norbert Kalmar [Fri, 19 Oct 2018 12:39:50 +0000 (14:39 +0200)] 
ZOOKEEPER-3032: MAVEN MIGRATION - zookeeper-server

Separating the java code is not feasible. Moving common and client back to server.

Author: Norbert Kalmar <nkalmar@yahoo.com>

Reviewers: andor@apache.org

Closes #672 from nkalmar/ZOOKEEPER-3032r

4 weeks agoZOOKEEPER-3113: EphemeralType.get() fails to verify ephemeralOwner when currentElapse...
Andor Molnar [Thu, 18 Oct 2018 09:18:25 +0000 (11:18 +0200)] 
ZOOKEEPER-3113: EphemeralType.get() fails to verify ephemeralOwner when currentElapsedTime() is small enough

I refactored the unit test `testServerIds` to verify server id verification code explicitly instead of through `EphemeralType.get()` method.

Reasons:
- The original test doesn't work on machines which booted recently, because the generated `Time.currentElapsedTime()` value is not high enough and it's possible to generate a valid ephemeralOwner even with high 0xff byte. Server ID cannot be verified reliably this way.
- EphemeralType.get() is already covered in other unit tests,
- Unit tests should test the smallest piece of logic and call the method under testing directly.

Author: Andor Molnar <andor@apache.org>

Reviewers: fangmin@apache.org, eolivelli@gmail.com, hanm@apache.org, andor@apache.org

Closes #651 from anmolnar/ZOOKEEPER-3113 and squashes the following commits:

7454d7e7 [Andor Molnar] ZOOKEEPER-3113. Added unit tests to cover EphemeralType.get edge cases
47dece7a [Andor Molnar] ZOOKEEPER-3113. Refactored unit test to validate server Id verification code explicitly

4 weeks agoZOOKEEPER-236: SSL Support for Atomic Broadcast protocol (master)
Andor Molnar [Tue, 16 Oct 2018 14:22:07 +0000 (16:22 +0200)] 
ZOOKEEPER-236: SSL Support for Atomic Broadcast protocol (master)

Cherry-picked from branch-3.5.

Author: Andor Molnar <andor@apache.org>
Author: Abraham Fine <afine@apache.org>

Reviewers: hanm@apache.org, breed@apache.org

Closes #655 from anmolnar/ZOOKEEPER-236_master and squashes the following commits:

8c3aa11e [Andor Molnar] ZOOKEEPER-3165: Java 9: X509UtilTest.testCreateSSLContextWithoutTrustStorePassword fails
eb272749 [Abraham Fine] ZOOKEEPER-236: SSL Support for Atomic Broadcast protocol

4 weeks agoZOOKEEPER-3154: Update release process to use the MarkDown solution
Tamas Penzes [Mon, 15 Oct 2018 14:45:25 +0000 (16:45 +0200)] 
ZOOKEEPER-3154: Update release process to use the MarkDown solution

Added `mvn clean` and `mvn install` to `ant clean` and `ant compile` as dependency.
This way we clean and build zookeeper-docs maven sub-project when we clean and build main ant project.
Added releasenotes.md and fixed small issues in MarkDown files.

Next step is to remove not needed forrest content and dead ant code.
Only valid for master branch, do not backport to branch-3.4 or branch-3.5.
Adopted versions are coming.

Change-Id: I308a970c253be1bb82387516bf7b08bd7818a2c7

Author: Tamas Penzes <tamaas@cloudera.com>

Reviewers: andor@apache.org

Closes #661 from tamaashu/ZOOKEEPER-3154 and squashes the following commits:

43300182 [Tamas Penzes] ZOOKEEPER-3154: Removed HTML document generation which will be put back when maven migration will be done
9292169b [Tamas Penzes] ZOOKEEPER-3154: Fix mistyped version number in pom.xml files
ec2a71e6 [Tamas Penzes] ZOOKEEPER-3154: Update release process to use the MarkDown solution

4 weeks agoZOOKEEPER-3159: Flaky: ClientRequestTimeoutTest.testClientRequestTimeout
Andor Molnar [Fri, 12 Oct 2018 08:28:29 +0000 (10:28 +0200)] 
ZOOKEEPER-3159: Flaky: ClientRequestTimeoutTest.testClientRequestTimeout

Can't see a reason why testing again the create method without packet drop. Timeout scenario has already been tested and this part seem to make the test flaky. Removed.

Author: Andor Molnar <andor@apache.org>

Reviewers: nkalmar@cloudera.com, andor@apache.org

Closes #653 from anmolnar/ZOOKEEPER-3159

4 weeks agoZOOKEEPER-3161: Refactor QuorumPeerMainTest.java: move commonly used functions to...
Andor Molnar [Fri, 12 Oct 2018 08:25:27 +0000 (10:25 +0200)] 
ZOOKEEPER-3161: Refactor QuorumPeerMainTest.java: move commonly used functions to base class

Move the following methods to QuorumPeerTestBase.java:

- tearDown()
- LaunchServers()
- waitForOne(), waitForAll()
- logStates()

Author: Andor Molnar <andor@apache.org>

Reviewers: andor@apache.org

Closes #659 from anmolnar/ZOOKEEPER-3161

5 weeks agoZOOKEEPER-3157: Improve FuzzySnapshotRelatedTest to avoid flaky due to issues like...
Andor Molnar [Mon, 8 Oct 2018 12:42:09 +0000 (14:42 +0200)] 
ZOOKEEPER-3157: Improve FuzzySnapshotRelatedTest to avoid flaky due to issues like connection loss

Quick fix to make the test more reliable.

Author: Andor Molnar <andor@apache.org>

Reviewers: fangmin@apache.org, eolivelli@gmail.com, andor@apache.org

Closes #657 from anmolnar/ZOOKEEPER-3157

5 weeks agoZOOKEEPER-3106: Zookeeper client supports IPv6 address and document the "IPV6 feature"
maoling [Mon, 8 Oct 2018 12:33:38 +0000 (14:33 +0200)] 
ZOOKEEPER-3106: Zookeeper client supports IPv6 address and document the "IPV6 feature"

The related UTs in the `ConnectStringParserTest` have all passed,I also tested it in the real IPv6 ENV.
More details in [ZOOKEEPER-3106](https://issues.apache.org/jira/browse/ZOOKEEPER-3106)

Author: maoling <maoling199210191@sina.com>

Reviewers: andor@apache.org

Closes #587 from maoling/ZOOKEEPER-3106 and squashes the following commits:

22e20252 [maoling] fix a flaky test:ClientPortBindTest.testBindByAddress
4bb31f6f [maoling] rebase to solve the conflict in the zookeeperAdmin.xml
45091b91 [maoling] reuse the ConfigUtils.getHostAndPort()
fa984b51 [maoling] remove useless tab & add some annotations
bafc542a [maoling] ZOOKEEPER-3106: Zookeeper client supports IPv6 address and document the IPV6 feature

5 weeks agoZOOKEEPER-3153: Create MarkDown files and build process for them
Tamas Penzes [Fri, 5 Oct 2018 13:02:33 +0000 (15:02 +0200)] 
ZOOKEEPER-3153: Create MarkDown files and build process for them

In this sub-task we have transformed the Forest XML documents into MarkDown (.md) files and provided a (maven based) solution to create HTML documentation from them.
PDF support is dropped since it is not really used and makes everything overcomplicated.

The generated HTML content looks similar to the one generated from Forest XMLs, but not identical with them.

Change-Id: Id35984eca5d37b9e3074eab939be5c9b4cc80257

Author: Tamas Penzes <tamaas@cloudera.com>

Reviewers: andor@apache.org

Closes #643 from tamaashu/ZOOKEEPER-3153

5 weeks agoZOOKEEPER-3032: MAVEN MIGRATION - move java server, client
Norbert Kalmar [Fri, 5 Oct 2018 12:25:43 +0000 (14:25 +0200)] 
ZOOKEEPER-3032: MAVEN MIGRATION - move java server, client

Author: Norbert Kalmar <nkalmar@yahoo.com>

Reviewers: hanm@apache.org, andor@apache.org

Closes #633 from nkalmar/ZOOKEEPER-3032 and squashes the following commits:

3f9a0eca [Norbert Kalmar] ZOOKEEPER-3032 fix flaky QuorumPeerMainTest.testLeaderElectionWithDisloyalVoter_stillHasMajority
27295ed6 [Norbert Kalmar] ZOOKEEPER-3032 - MAVEN MIGRATION - move java server, client

6 weeks agoZOOKEEPER-1908: setAcl should be have a recursive function
Reid Chan [Thu, 4 Oct 2018 13:46:28 +0000 (15:46 +0200)] 
ZOOKEEPER-1908: setAcl should be have a recursive function

Let setAcl support recursive option, a UT is included.

Author: Reid Chan <reidchan@apache.org>

Reviewers: fangmin@apache.org, andor@apache.org

Closes #650 from Reidddddd/ZOOKEEPER-1908 and squashes the following commits:

2d0b33fd [Reid Chan] ZOOKEEPER-1908: Address review comments
9c9c1bb9 [Reid Chan] ZOOKEEPER-1908: Add unit test for setAcl recursive
9ec3d837 [Reid Chan] ZOOKEEPER-1908: setAcl should be have a recursive function

6 weeks agoZOOKEEPER-2847: Cannot bind to client port when reconfig based on old static config
Yisong Yue [Mon, 1 Oct 2018 04:11:18 +0000 (21:11 -0700)] 
ZOOKEEPER-2847: Cannot bind to client port when reconfig based on old static config

PR No.2: Prevent removing client info from static config file to fix ReconfigLegacyTest

Author: Yisong Yue <yisongyue@fb.com>

Reviewers: Allan Lyu <fangmin@apache.org>, Michael Han <hanm@apache.org>

Closes #649 from yisong-yue/ZOOKEEPER-2847

6 weeks agoZOOKEEPER-1177: Add the memory optimized watch manager for concentrate watches scenario
Fangmin Lyu [Fri, 28 Sep 2018 21:38:24 +0000 (14:38 -0700)] 
ZOOKEEPER-1177: Add the memory optimized watch manager for concentrate watches scenario

The current HashSet based WatcherManager will consume more than 40GB memory when
creating 300M watches.

This patch optimized the memory and time complexity for concentrate watches scenario, compared to WatchManager, both the memory consumption and time complexity improved a lot. I'll post more data later with micro benchmark result.

Changed made compared to WatchManager:
* Only keep path to watches map
* Use BitSet to save the memory used to store watches
* Use ConcurrentHashMap and ReadWriteLock instead of synchronized to reduce lock retention
* Lazily clean up the closed watchers

Author: Fangmin Lyu <allenlyu@fb.com>

Reviewers: Andor Molnár <andor@apache.org>, Norbert Kalmar <nkalmar@yahoo.com>, Michael Han <hanm@apache.org>

Closes #590 from lvfangmin/ZOOKEEPER-1177

7 weeks agoZOOKEEPER-3146: Limit the maximum client connections per IP in NettyServerCnxnFactory
Fangmin Lyu [Sat, 22 Sep 2018 04:48:13 +0000 (21:48 -0700)] 
ZOOKEEPER-3146: Limit the maximum client connections per IP in NettyServerCnxnFactory

Add similar max cnxn per ip throttling logic to Netty implementation.

Author: Fangmin Lyu <allenlyu@fb.com>

Reviewers: hanm@apache.org

Closes #623 from lvfangmin/ZOOKEEPER-3146

7 weeks agoZOOKEEPER-2847: Cannot bind to client port when reconfig based on old static config
Yisong Yue [Sat, 22 Sep 2018 04:43:45 +0000 (21:43 -0700)] 
ZOOKEEPER-2847: Cannot bind to client port when reconfig based on old static config

Fixed the issue where clientPortAddress in the static config is not correctly saved in QuorumVerifier. This can cause zookeeper attempting to re-bind to a port already in use during dynamic reconfiguration, failing to recognize that the new port and the current port are identical.

Author: Yisong Yue <yisongyue@fb.com>

Reviewers: hanm@apache.org

Closes #620 from yisong-yue/ZOOKEEPER-2847

8 weeks agoZOOKEEPER-3098: Add additional server metrics
Joseph Blomstedt [Mon, 17 Sep 2018 23:00:15 +0000 (16:00 -0700)] 
ZOOKEEPER-3098: Add additional server metrics

This patch adds several new server-side metrics as well as makes it easier to add new metrics in the future. This patch also includes a handful of other minor metrics-related changes.

Here's a high-level summary of the changes.

1. This patch extends the request latency tracked in `ServerStats` to
   track `read` and `update` latency separately. Updates are any request
   that must be voted on and can change data, reads are all requests that
   can be handled locally and don't change data.

2. This patch adds the `ServerMetrics` logic and the related `AvgMinMaxCounter`
   and `SimpleCounter` classes. This code is designed to make it incredibly easy to
   add new metrics. To add a new metric you just add one line to `ServerMetrics` and
   then directly reference that new metric anywhere in the code base. The `ServerMetrics`
   logic handles creating the metric, properly adding the metric to the JSON output of
   the `/monitor` admin command, and properly resetting the metric when necessary.

   The motivation behind `ServerMetrics` is to make things easy enough that it encourages
   new metrics to be added liberally. Lack of in-depth metrics/visibility is a long-standing
   ZooKeeper weakness. At Facebook, most of our internal changes build on `ServerMetrics` and
   we have nearly 100 internal metrics at this time -- all of which we'll be upstreaming
   in the coming months as we publish more internal patches.

3. This patch adds 20 new metrics, 14 which are handled by `ServerMetrics`.

4. This patch replaces some uses of `synchronized` in `ServerStats` with atomic operations.

Here's a list of new metrics added in this patch:

- `uptime`: time that a peer has been in a stable leading/following/observing state
- `leader_uptime`: uptime for peer in leading state
- `global_sessions`: count of global sessions
- `local_sessions`: count of local sessions
- `quorum_size`: configured ensemble size
- `synced_observers`: similar to existing `synced_followers` but for observers
- `fsynctime`: time to fsync transaction log (avg/min/max)
- `snapshottime`: time to write a snapshot (avg/min/max)
- `dbinittime`: time to reload database -- read snapshot + apply transactions (avg/min/max)
- `readlatency`: read request latency (avg/min/max)
- `updatelatency`: update request latency (avg/min/max)
- `propagation_latency`: end-to-end latency for updates, from proposal on leader to committed-to-datatree on a given host (avg/min/max)
- `follower_sync_time`: time for follower to sync with leader (avg/min/max)
- `election_time`: time between entering and leaving election (avg/min/max)
- `looking_count`: number of transitions into looking state
- `diff_count`: number of diff syncs performed
- `snap_count`: number of snap syncs performed
- `commit_count`: number of commits performed on leader
- `connection_request_count`: number of incoming client connection requests
- `bytes_received_count`: similar to existing `packets_received` but tracks bytes

Author: Joseph Blomstedt <jdb@fb.com>

Reviewers: Allan Lyu <fangmin@apache.org>, Andor Molnár <andor@apache.org>, Enrico Olivelli <eolivelli@gmail.com>, Michael Han <hanm@apache.org>

Closes #580 from jtuple/ZOOKEEPER-3098

2 months agoZOOKEEPER-3142: Extend SnapshotFormatter to dump data in json format
Brian Nixon [Fri, 14 Sep 2018 23:09:36 +0000 (16:09 -0700)] 
ZOOKEEPER-3142: Extend SnapshotFormatter to dump data in json format

Author: Brian Nixon <nixon@fb.com>

Reviewers: Michael Han <hanm@apache.org>

Closes #619 from enixon/extend-sf

2 months agoZOOKEEPER-3144: Fix potential ephemeral nodes inconsistent due to global session...
Fangmin Lyu [Fri, 14 Sep 2018 22:08:19 +0000 (15:08 -0700)] 
ZOOKEEPER-3144: Fix potential ephemeral nodes inconsistent due to global session inconsistent with fuzzy snapshot

There is a race condition between update the lastProcessedZxid and the actual session change in DataTree, which could cause global session inconsistent, which then could cause ephemeral inconsistent.

For more details, please check the description in JIRA ZOOKEEPER-3144.

Author: Fangmin Lyu <allenlyu@fb.com>

Reviewers: Michael Han <hanm@apache.org>

Closes #621 from lvfangmin/ZOOKEEPER-3144

2 months agoZOOKEEPER-3137: add a utility to truncate logs to a zxid
Brian Nixon [Fri, 14 Sep 2018 22:03:48 +0000 (15:03 -0700)] 
ZOOKEEPER-3137: add a utility to truncate logs to a zxid

Author: Brian Nixon <nixon@fb.com>

Reviewers: Michael Han <hanm@apache.org>, Andor Molnár <andor@apache.org>

Closes #615 from enixon/add-chop

2 months agoZOOKEEPER-1823: zkTxnLogToolkit -dump should support printing transaction data as...
maoling [Wed, 12 Sep 2018 11:32:07 +0000 (13:32 +0200)] 
ZOOKEEPER-1823: zkTxnLogToolkit -dump should support printing transaction data as a string

- It would be a useful addition for debuggling to show transaction data as strings with a option `-s `
- update the usage string to `USAGE: LogFormatter [-s] log_file` and add a short description for the `-s `
    option

- for the issue [michim](https://issues.apache.org/jira/secure/ViewProfile.jspa?name=michim) mentioned has been resolved,the test evidence has been included in the jira(Notice:we cannot `split(",")[1]` to replace the node data,because the node path can be like this `"/mao,ling"`)
- more details in [ZOOKEEPER-1823](https://issues.apache.org/jira/browse/ZOOKEEPER-1823).Thanks [rgs](https://issues.apache.org/jira/secure/ViewProfile.jspa?name=rgs) for the origin work

Author: maoling <maoling199210191@sina.com>

Reviewers: andor@apache.org

Closes #613 from maoling/ZOOKEEPER-1823 and squashes the following commits:

82c375b0 [maoling] change the desc of -d option in the code
ba3ee65a [maoling] transport this improment to TxnLogToolkit
96939873 [maoling] Revert "ZOOKEEPER-1823:LogFormatter should support printing transaction data as a string"
298428ea [maoling] ZOOKEEPER-1823:LogFormatter should support printing transaction data as a string

2 months agoZOOKEEPER-3125: Fixing pzxid consistent issue when replaying a txn for a deleted...
Fangmin Lyu [Wed, 12 Sep 2018 11:29:13 +0000 (13:29 +0200)] 
ZOOKEEPER-3125: Fixing pzxid consistent issue when replaying a txn for a deleted node

Author: Fangmin Lyu <allenlyu@fb.com>

Reviewers: breed@apache.org, andor@apache.org

Closes #605 from lvfangmin/ZOOKEEPER-3125

2 months agoZOOKEEPER-3123: MetricsProvider Lifecycle in ZooKeeper Server
Enrico Olivelli [Tue, 11 Sep 2018 13:23:32 +0000 (15:23 +0200)] 
ZOOKEEPER-3123: MetricsProvider Lifecycle in ZooKeeper Server

Manage the lifecycle of a MetricsProvider inside a ZooKeeper server.
- handle configuration
- start and configure the MetricsProvider
- notify shutdown to the MetricsProvider

This is an early preview, because there are some points to discuss:
- We have to throw an IOException in case of failure (in order not to change the current signature of main methods used to start the server)
- The patch only provides the lifecycle, it introduces some dead fields (root metrics context), this is expected as the real instrumentation will be done in a further step, is it okay ?
- Test cases cover only standalone mode, do we need to add a new suite for testing configuration and boot errors on QuorumPeer mode ? (the answer should be YES)
- MetricsProvider configuration is not subject to dynamic 'reconfig'

Configuration to the MetricsProvider is not yet handled, the idea is to let the user configure properties like
metricsProvider.className=o.a.z.metrics.prometheus.PrometheusMetricsProvider
metricsProvider.customParam1=value1
metricsProvider.customParam2=value2

in this case the MetricsProvider will receive {customParam1=value1, customParam2=value2} as parameter in configure()

is it okay ?

Author: Enrico Olivelli <eolivelli@apache.org>

Reviewers: fangmin@apache.org, andor@apache.org

Closes #601 from eolivelli/fix/boot-provider and squashes the following commits:

8964ed17 [Enrico Olivelli] Fix tests, use getters in order to support Mock QuorumPeerConfig
93749f6a [Enrico Olivelli] fix imports
7ad552db [Enrico Olivelli] Add testcases around QuorumPeerMain
22f79eb8 [Enrico Olivelli] clean up
c92450e4 [Enrico Olivelli] implement MetricsProvider configuration, fix some review comments
f4f66ecb [Enrico Olivelli] ZOOKEEPER-3123 MetricsProvider Lifecycle in ZooKeeper Server

2 months agoZOOKEEPER-2261: When only secureClientPort is configured connections, configuration...
Andor Molnar [Mon, 10 Sep 2018 22:17:45 +0000 (15:17 -0700)] 
ZOOKEEPER-2261: When only secureClientPort is configured connections, configuration, connection_stat_reset, and stats admin commands throw NullPointerException

Root cause of the issue is that property getter returns the non-secure ServerCnxnFactory instance always. When Quorum SSL is enabled, we set a separate field which is the secure instance.

Property getter should detect the scenario and return the proper instance.

First commit contains some refactoring: shuffling the existing ZooKeeperServer tests to relevant places.
Second commit is the actual fix + new unit tests.

Sorry about indentation changes, but `FileTxnLogTest.java` was indented by 2 spaces instead of 4.

Author: Andor Molnar <andor@apache.org>
Author: Andor Molnar <andor@cloudera.com>

Reviewers: breed, hanm, nkalmar

Closes #545 from anmolnar/ZOOKEEPER-2261

2 months agoZOOKEEPER-1990: fix Random instances
Norbert Kalmar [Mon, 10 Sep 2018 09:44:50 +0000 (11:44 +0200)] 
ZOOKEEPER-1990: fix Random instances

See the jira for more info.

Basically we have multiple ways of creating Random instances in ZooKeeper. Since java 1.7, the default constructor is good enough even in multi-threaded environment, we get a good seed.
But in some places, we just create a random instance, where System.nanotime is the seed, which is not a good practice in multi-threaded environments.

I only replaced those, and I also left the tests as is, because in some cases it is intentional in them.

I created the PR to bring more attention to the ticket, please feel free to share your ideas on the topic!

Author: Norbert Kalmar <nkalmar@yahoo.com>

Reviewers: fangmin@apache.org, andor@apache.org

Closes #617 from nkalmar/ZOOKEEPER-1990

2 months agoZOOKEEPER-3136: Reduce log in ClientBase in case of ConnectException
Enrico Olivelli [Fri, 7 Sep 2018 00:49:10 +0000 (17:49 -0700)] 
ZOOKEEPER-3136: Reduce log in ClientBase in case of ConnectException

Do not log stacktraces of a very common error during the execution of tests, that is while waiting for a server to start.

Author: Enrico Olivelli <eolivelli@apache.org>

Reviewers: hanm, maoling

Closes #614 from eolivelli/fix/ZOOKEEPER-3136-noisy-log

2 months agoZOOKEEPER-3131: Remove watcher when session closed in NettyServerCnxn
Fangmin Lyu [Fri, 7 Sep 2018 00:34:55 +0000 (17:34 -0700)] 
ZOOKEEPER-3131: Remove watcher when session closed in NettyServerCnxn

Currently, it doesn't remove itself from ZK server when the cnxn is closed, which
will leak watchers, close it to make it align with NIO implementation.

Author: Fangmin Lyu <allenlyu@fb.com>

Reviewers: hanm, anmolnar, nkalmar

Closes #612 from lvfangmin/ZOOKEEPER-3131

2 months agoZOOKEEPER-3090: continue can be replaced with break
zhangbo [Wed, 5 Sep 2018 23:11:01 +0000 (16:11 -0700)] 
ZOOKEEPER-3090: continue can be replaced with break

change continue  to break

Author: zhangbo <zhangbo01@dafy.com>

Reviewers: hanm, nkalmar, maoling

Closes #573 from a470577391/master

2 months agoZOOKEEPER-3127: Fixing potential data inconsistency due to update last processed...
Fangmin Lyu [Wed, 5 Sep 2018 20:35:38 +0000 (13:35 -0700)] 
ZOOKEEPER-3127: Fixing potential data inconsistency due to update last processed zxid with partial multi-op txn

Author: Fangmin Lyu <allenlyu@fb.com>

Reviewers: Benjamin Reed <breed@apache.org>, Michael Han <hanm@apache.org>

Closes #606 from lvfangmin/ZOOKEEPER-3127

2 months agoZOOKEEPER-2913: testEphemeralNodeDeletion is flaky
maoling [Wed, 5 Sep 2018 14:15:58 +0000 (16:15 +0200)] 
ZOOKEEPER-2913: testEphemeralNodeDeletion is flaky

- The test code is assuming the follower is up to date, which without a `sync` call.when regression,the follower could not catch up with the leader,so the `/e1` patch still exists
- this issue is not very easy to reproduce,but we can change the codes in the `FollowerZooKeeperServer.commit() ` ,just like this:

```
       Request request = pendingTxns.remove();
        if (request.getHdr().getType() == -11) {
         try {
     Thread.sleep(200);
     } catch (InterruptedException e) {

     }
        }
        commitProcessor.commit(request);
```
to slow down the commit to simulate the flaky test,then we can check the correctness of this patch
- ----------------------------------------**appendix: zk.sync() doc:**------------------------------------------

> ZooKeeper does not guarantee that at every instance in time, two different clients will have identical views of ZooKeeper data. Due to factors like network delays, one client may perform an update before another client gets notified of the change. Consider the scenario of two clients, A and B. If client A sets the value of a znode /a from 0 to 1, then tells client B to read /a, client B may read the old value of 0, depending on which server it is connected to. If it is important that Client A and Client B read the same value, Client B should should call the sync() method from the ZooKeeper API method before it performs its read.

- more detais in [ZOOKEEPER-2913](https://issues.apache.org/jira/browse/ZOOKEEPER-2913)

Author: maoling <maoling199210191@sina.com>

Reviewers: andor@apache.org

Closes #608 from maoling/ZOOKEEPER-2913

2 months agoZOOKEEPER-3116: Make the DataTree.approximateDataSize more efficient
Fangmin Lyu [Tue, 4 Sep 2018 09:54:23 +0000 (11:54 +0200)] 
ZOOKEEPER-3116: Make the DataTree.approximateDataSize more efficient

Cache the approximate data tree size, and update it when txns applied to data tree, this could make this query not that expensive.

Author: Fangmin Lyu <allenlyu@fb.com>

Reviewers: andor@apache.org

Closes #594 from lvfangmin/ZOOKEEPER-3116 and squashes the following commits:

ad2ce216 [Fangmin Lyu] move to synchronize when visiting node.data
2e0cbb17 [Fangmin Lyu] add test case to test cached approximate data tree size
21243f5e [Fangmin Lyu] cache the approximate data size in DataTree

2 months agoZOOKEEPER-3080: MAVEN MIGRATION - Step 1.5 - move jute dir
Norbert Kalmar [Mon, 3 Sep 2018 09:57:50 +0000 (11:57 +0200)] 
ZOOKEEPER-3080: MAVEN MIGRATION - Step 1.5 - move jute dir

Author: Norbert Kalmar <nkalmar@yahoo.com>

Reviewers: andor@apache.org

Closes #609 from nkalmar/ZOOKEEPER-3080

2 months agoZOOKEEPER-3109: Avoid long unavailable time due to voter changed mind during leader...
Fangmin Lyu [Wed, 29 Aug 2018 04:26:58 +0000 (21:26 -0700)] 
ZOOKEEPER-3109: Avoid long unavailable time due to voter changed mind during leader election

For more details, please check descriptions in https://issues.apache.org/jira/browse/ZOOKEEPER-3109

Author: Fangmin Lyu <allenlyu@fb.com>

Reviewers: breed, hanm

Closes #588 from lvfangmin/ZOOKEEPER-3109

2 months agoZOOKEEPER-3031: MAVEN MIGRATION - Step 1.4 - move client dir
Norbert Kalmar [Tue, 21 Aug 2018 05:30:53 +0000 (07:30 +0200)] 
ZOOKEEPER-3031: MAVEN MIGRATION - Step 1.4 - move client dir

Author: Norbert Kalmar <nkalmar@yahoo.com>

Reviewers: andor@apache.org

Closes #597 from nkalmar/ZOOKEEPER-3031

2 months agoZOOKEEPER-3117: Correct the LeaderBean.followerInfo to only return the followers...
Fangmin Lyu [Fri, 17 Aug 2018 12:40:02 +0000 (14:40 +0200)] 
ZOOKEEPER-3117: Correct the LeaderBean.followerInfo to only return the followers list

Author: Fangmin Lyu <allenlyu@fb.com>

Reviewers: andor@apache.org

Closes #595 from lvfangmin/ZOOKEEPER-3117

2 months agoZOOKEEPER-3033: MAVEN MIGRATION - fix directory structure
Norbert Kalmar [Fri, 17 Aug 2018 09:56:09 +0000 (11:56 +0200)] 
ZOOKEEPER-3033: MAVEN MIGRATION - fix directory structure

I reopened step 1.2 to fix the directory structure of the recipes, as it is better to do every directory change at once. (As it has been done in step 1.3 already - first step, docs is irrelevant in this manner).

Author: Norbert Kalmar <nkalmar@yahoo.com>

Reviewers: andor@apache.org

Closes #599 from nkalmar/ZOOKEEPER-3033_fix

2 months agoZOOKEEPER-3120: add NetBeans nbproject directory to .gitignore
Enrico Olivelli [Fri, 17 Aug 2018 08:34:02 +0000 (10:34 +0200)] 
ZOOKEEPER-3120: add NetBeans nbproject directory to .gitignore

Author: Enrico Olivelli <eolivelli@apache.org>

Reviewers: fangmin@apache.org, andor@apache.org

Closes #598 from eolivelli/fix/netbeans-nbproject

3 months agoZOOKEEPER-3103: Pluggable metrics system for ZooKeeper - MetricsProvider API definition
Enrico Olivelli - Diennea [Tue, 14 Aug 2018 12:33:45 +0000 (14:33 +0200)] 
ZOOKEEPER-3103: Pluggable metrics system for ZooKeeper - MetricsProvider API definition

Define the API which must be implemented by a Metrics Provider.

a MetricsProvider is a pluggable component which is able to gather metrics about the system and publish them to an external application for analysis.

Author: Enrico Olivelli - Diennea <eolivelli@apache.org>
Author: Enrico Olivelli <eolivelli@apache.org>

Reviewers: fangmin@apache.org, andor@apache.org

Closes #582 from eolivelli/fix/metrics and squashes the following commits:

16412653 [Enrico Olivelli] better javadocs
c3fc95e9 [Enrico Olivelli - Diennea] Address review comments, clean up API and docs, add 'boolean' return value to registerGauge
f57e2f33 [Enrico Olivelli - Diennea] Address review comments, clean up API and docs, add 'boolean' return value to registerGauge
08ca334f [Enrico Olivelli - Diennea] Address review comments, clean up API and docs, add 'boolean' return value to registerGauge
0640293b [Enrico Olivelli - Diennea] ZOOKEEPER-3103 Pluggable metrics system for ZooKeeper - MetricsProvider API definition

3 months agoZOOKEEPER-3110: Improve the closeSession throughput in PrepRequestProcessor
Fangmin Lyu [Wed, 8 Aug 2018 04:29:16 +0000 (21:29 -0700)] 
ZOOKEEPER-3110: Improve the closeSession throughput in PrepRequestProcessor

Author: Fangmin Lyu <allenlyu@fb.com>

Reviewers: hanm@apache.org

Closes #591 from lvfangmin/ZOOKEEPER-3110

3 months agoZOOKEEPER-2926: Fix potential data consistency issue due to the session management bug
Fangmin Lyu [Wed, 8 Aug 2018 04:21:37 +0000 (21:21 -0700)] 
ZOOKEEPER-2926: Fix potential data consistency issue due to the session management bug

Author: Fangmin Lyu <allenlyu@fb.com>

Reviewers: Michael Han <hanm@apache.org>, Andor Molnar <andor@cloudera.com>

Closes #447 from lvfangmin/ZOOKEEPER-2926

3 months agoZOOKEEPER-3030: MAVEN MIGRATION - Step 1.3 - move contrib directories
Norbert Kalmar [Mon, 6 Aug 2018 12:13:17 +0000 (14:13 +0200)] 
ZOOKEEPER-3030: MAVEN MIGRATION - Step 1.3 - move contrib directories

Move the contrib projects according to new directory structure.
In the PR src/contrib/zkperl/build/check_zk_version.c and .h looks like I removed the file. but everything looks good on my local (I just moved them, did not modify anything). Will investigate further.

DO-NOT-MERGE-YET: Checking if creating the maven structure of directories now will break anything other then the already different directory structure in build/zookeeper-[version]/src/ (I will write an e-mail about this on dev list)

Author: Norbert Kalmar <nkalmar@yahoo.com>

Reviewers: andor@apache.org

Closes #574 from nkalmar/ZOOKEEPER-3030 and squashes the following commits:

49b7519b [Norbert Kalmar] ZOOKEEPER-3030 create maven dir structure
9f19ab06 [Norbert Kalmar] ZOOKEEPER-3030 fix releaseaudit license missing exclusions
59d9d17d [Norbert Kalmar] ZOOKEEPER-3030 add missing files in dist.dir
165d4dc5 [Norbert Kalmar] ZOOKEEPER-3030 - MAVEN MIGRATION - move contrib directories

3 months agoZOOKEEPER-3085: define exit codes in enum
Norbert Kalmar [Mon, 6 Aug 2018 12:11:08 +0000 (14:11 +0200)] 
ZOOKEEPER-3085: define exit codes in enum

Define the used exit codes in one enum. contrib projects are excluded, as they can have seperate exit codes (and they do use it differently then in core ZK).
Some exit codes overlap, but refactoring the exit code used is not backward compatible.

Author: Norbert Kalmar <nkalmar@yahoo.com>

Reviewers: lvfangmin@apache.org, breed@apache.org, andor@apache.org

Closes #572 from nkalmar/ZOOKEEPER-3085 and squashes the following commits:

dbc18a62 [Norbert Kalmar] ZOOKEEPER-3085 change comments to javadoc comment in enum code defs
908c171e [Norbert Kalmar] ZOOKEEPER-3085 add missing enum usage and some renames
c49dcef9 [Norbert Kalmar] ZOOKEEPER-3085 use the enum value in ZooKeeperMain.exitCode as well
611aa4ed [Norbert Kalmar] ZOOKEEPER-3085 define exit codes in enum

3 months agoZOOKEEPER-3057: Fix build by adding missing licence header
Andor Molnar [Mon, 6 Aug 2018 08:47:35 +0000 (10:47 +0200)] 
ZOOKEEPER-3057: Fix build by adding missing licence header

3 months agoZOOKEEPER-3104: Fix data inconsistency due to NEWLEADER being sent too early
Fangmin Lyu [Fri, 3 Aug 2018 16:52:08 +0000 (09:52 -0700)] 
ZOOKEEPER-3104: Fix data inconsistency due to NEWLEADER being sent too early

Author: Fangmin Lyu <allenlyu@fb.com>

Reviewers: Benjamin Reed <breed@apache.org>, Norbert Kalmar <nkalmar@yahoo.com>

Closes #583 from lvfangmin/ZOOKEEPER-3104

3 months agoZOOKEEPER-3062: mention fsync.warningthresholdms in FileTxnLog LOG.warn message
Christine Poerschke [Wed, 1 Aug 2018 19:19:34 +0000 (12:19 -0700)] 
ZOOKEEPER-3062: mention fsync.warningthresholdms in FileTxnLog LOG.warn message

https://issues.apache.org/jira/browse/ZOOKEEPER-3062

Author: Christine Poerschke <cpoerschke@bloomberg.net>

Reviewers: phunt@apache.org

Closes #566 from cpoerschke/master-ZOOKEEPER-3062 and squashes the following commits:

2bcccf62d [Christine Poerschke] Action code review feedback.
a2dc484d4 [Christine Poerschke] ZOOKEEPER-3062: mention fsync.warningthresholdms in FileTxnLog LOG.warn message

Change-Id: Id675e61a9ef0b247d65eaa36bb88c8569d177c49

3 months agoZOOKEEPER-3082: Fix server snapshot behavior when out of disk space
Brian Nixon [Mon, 30 Jul 2018 04:22:23 +0000 (21:22 -0700)] 
ZOOKEEPER-3082: Fix server snapshot behavior when out of disk space

Author: Brian Nixon <nixon@fb.com>

Reviewers: Benjamin Reed <breed@apache.org>, Michale Han <hanm@apache.org>

Closes #560 from enixon/ZOOKEEPER-3082

3 months agoZOOKEEPER-3095: Connect string fix for non-existent hosts
Jeelani Mohamed Abdul Khader [Sat, 28 Jul 2018 02:46:31 +0000 (19:46 -0700)] 
ZOOKEEPER-3095: Connect string fix for non-existent hosts

ZKPatch: eda58d9970c76831046ddc45251c9b110856836e (extract)

Author: Jeelani Mohamed Abdul Khader <mjeelani@devvm3360.prn2.facebook.com>

Reviewers: Benjamin Reed <breed@apache.org>

Closes #579 from mjeelanimsft/connect-string-fix-for-non-existent-hosts

3 months agoZOOKEEPER-3072: Throttle race condition fix
Botond Hejj [Sat, 28 Jul 2018 02:37:08 +0000 (19:37 -0700)] 
ZOOKEEPER-3072: Throttle race condition fix

Making the throttle check before passing over the request to the next thread will prevent the possibility of throttling code running after unthrottle

Added an additional async hammer thread which is pretty reliably reproduces the race condition. The globalOutstandingLimit is decreased so throttling code is executed.

Author: Botond Hejj <botond.hejj@gmail.com>

Reviewers: Andor Molnár <andor@apache.org>, Norbert Kalmar <nkalmar@yahoo.com>, Benjamin Reed <breed@apache.org>

Closes #563 from bothejjms/ZOOKEEPER-3072

3 months agoZOOKEEPER-3061: add more details to 'Unhandled scenario for peer' log.warn message
Christine Poerschke [Sat, 28 Jul 2018 02:30:06 +0000 (19:30 -0700)] 
ZOOKEEPER-3061: add more details to 'Unhandled scenario for peer' log.warn message

Author: Christine Poerschke <cpoerschke@bloomberg.net>
Author: Christine Poerschke <cpoerschke@apache.org>

Reviewers: Allan Lyu <fangmin@apache.org>, Benjamin Reed <breed@apache.org>, Norbert Kalmar <nkalmar@yahoo.com>

Closes #555 from cpoerschke/master-ZOOKEEPER-3061 and squashes the following commits:

139968228 [Christine Poerschke] Merge remote-tracking branch 'origin/master' into master-ZOOKEEPER-3061
1840c2bb6 [Christine Poerschke] Merge remote-tracking branch 'origin/master' into master-ZOOKEEPER-3061
1d3e7bc0b [Christine Poerschke] ZOOKEEPER-3061: add more details to 'Unhandled scenario for peer' log.warn message

3 months agoZOOKEEPER-3067: Optionally disable client environment logging.
James Peach [Fri, 27 Jul 2018 10:40:33 +0000 (12:40 +0200)] 
ZOOKEEPER-3067: Optionally disable client environment logging.

Although logging the client environment at initialization can be
helpful for filing bug reports, it tends not to be that helpful
for internal applications. It also introduces a dependency on UID
lookups (via getlogin) that application otherwise may not desire.

Author: James Peach <jpeach@apache.org>

Reviewers: breed@apache.org, andor@apache.org

Closes #565 from jpeach/ZOOKEEPER-3067

3 months agoZOOKEEPER-3057: Fix IPv6 literal usage
Mohamed Jeelani [Fri, 27 Jul 2018 10:32:45 +0000 (12:32 +0200)] 
ZOOKEEPER-3057: Fix IPv6 literal usage

This patch contains fixes for IPv6 literal usage and corresponding unit test changes.

As per discussion in ZOOKEEPER-3057 - The issue/problem is the same as ZOOKEEPER-2989, but we changed the code to pass IPv6 literal [%s]:%s, also we changed the logging and the LocalPeerBean to show this IPv6 literal as well, which makes it easier to check when using Ipv6 and we added detailed tests for this change, sending out for review to see if it's better or not.

ZKPatch: 88e94e6f3665353446bf70a042c8f0cd50834f7c (extract)

Author: Mohamed Jeelani <mjeelani@fb.com>
Author: Jeelani Mohamed Abdul Khader <mjeelani@devvm3360.prn2.facebook.com>

Reviewers: breed@apache.org, andor@apache.org

Closes #548 from mjeelanimsft/fix-ipv6-literal and squashes the following commits:

69c60b74 [Mohamed Jeelani] Fix method rename from splitServerConfig(s) to getHostAndPort(s)
47f7a854 [Mohamed Jeelani] Incorporating review feedback from @maoling
ff470498 [Mohamed Jeelani] Incorporating Review Feedback - Adding Unit Tests
f932e16e [Mohamed Jeelani] Added Unit Test and JavaDoc for splitServerConfig()
43e19e93 [Mohamed Jeelani] Incorporating code review comments
33f695f2 [Jeelani Mohamed Abdul Khader] Fix IPv6 literal usage

3 months agoZOOKEEPER-3094: Make BufferSizeTest reliable
Jeelani Mohamed Abdul Khader [Fri, 27 Jul 2018 03:28:37 +0000 (20:28 -0700)] 
ZOOKEEPER-3094: Make BufferSizeTest reliable

ZKPatch: d8b825d6533e9848565beff09e9a018136ca32bd (extract)

Changes made to the testStartupFailure test to remember the old directory and switch back to it after the test has completed.

Author: Jeelani Mohamed Abdul Khader <mjeelani@devvm3360.prn2.facebook.com>

Reviewers: Michael Han <hanm@apache.org>, Norbert Kalmar

Closes #577 from mjeelanimsft/make-buffersizetest-reliable

3 months agoZOOKEEPER-2251: Add Client side packet response timeout to avoid infinite wait.
Mohammad Arshad [Fri, 27 Jul 2018 03:16:04 +0000 (20:16 -0700)] 
ZOOKEEPER-2251: Add Client side packet response timeout to avoid infinite wait.

Add Client side packet response timeout to avoid infinite wait.

Author: Mohammad Arshad <arshad@apache.org>

Reviewers: Michael Han <hanm@apache.org>, nrico Olivelli <eolivelli@gmail.com>

Closes #119 from arshadmohammad/ZOOKEEPER-2251

3 months agoZOOKEEPER-3097: Using Runnable instead of thread work items to improve the throughput...
Fangmin Lyu [Fri, 27 Jul 2018 03:13:22 +0000 (20:13 -0700)] 
ZOOKEEPER-3097: Using Runnable instead of thread work items to improve the throughput of CommitProcessor

Author: Fangmin Lyu <allenlyu@fb.com>

Reviewers: Michael Han <hanm@apache.org>

Closes #578 from lvfangmin/ZOOKEEPER-3097

3 months agoZOOKEEPER-3068: Improve C client logging of IPv6 hosts
Brian Nixon [Fri, 20 Jul 2018 15:40:42 +0000 (17:40 +0200)] 
ZOOKEEPER-3068: Improve C client logging of IPv6 hosts

Author: Brian Nixon <nixon@fb.com>
Author: enixon <brian.nixon.cs@gmail.com>

Reviewers: andor@apache.org

Closes #547 from enixon/ZOOKEEPER-3068 and squashes the following commits:

63eb18ef [enixon] Merge branch 'master' into ZOOKEEPER-3068
e3cf7f83 [Brian Nixon] change boolean from int to char
cd404534 [Brian Nixon] ZOOKEEPER-3068: Improve C client logging of IPv6 hosts

3 months agoZOOKEEPER-3093: sync zerror with ZOO_ERRORS
Kent R. Spillner [Thu, 19 Jul 2018 17:28:38 +0000 (10:28 -0700)] 
ZOOKEEPER-3093: sync zerror with ZOO_ERRORS

I noticed that zerror(ZNOWATCHER) returns "unknown error" and when I went to investigate why I realized that actually three new values were added to ZOO_ERRORS enum without corresponding cases in zerror.  While here, also take the opportunity to shuffle the ordering of cases in zerror to match ZOO_ERRORS in order to make it easier to visually compare the two in the future to see if any values are missing cases (e.g. the fact that ZNEWCONFIGNOQUORUM and ZRECONFIGINPROGRESS were added to the bottom of the switch made it harder to see which all cases were missing).

Author: Kent R. Spillner <kspillner@acm.org>

Reviewers: phunt@apache.org

Closes #575 from sl4mmy/zookeeper-3093

Change-Id: I52eaaad1487aa25c2ffd101d4e8f7a365e59a3ae

3 months agoZOOKEEPER-3077: build outside of source directory
Kent R. Spillner [Thu, 19 Jul 2018 17:14:59 +0000 (10:14 -0700)] 
ZOOKEEPER-3077: build outside of source directory

Allow building native C library outside of source directory by explicitly
looking for jute generated header and source files inside source directory.

Signed-off-by: Kent R. Spillner <kspillneracm.org>
Author: Kent R. Spillner <kspillner@acm.org>

Reviewers: phunt@apache.org

Closes #557 from sl4mmy/zookeeper-3077

Change-Id: I7dafcaed6367362f3d8df283e7d0ef5804774ddc

3 months agoZOOKEEPER-3046: increased test timeout
Bogdan Kanivets [Thu, 19 Jul 2018 16:58:12 +0000 (09:58 -0700)] 
ZOOKEEPER-3046: increased test timeout

- bump up timeout to avoid too many build failures

Author: Bogdan Kanivets <bkanivets@gmail.com>

Reviewers: phunt@apache.org

Closes #576 from lavacat/test-timeouts-3.5

Change-Id: If0b4b45c33e1909120ad15454f1c2f3f242237b6
(cherry picked from commit b78e83b1d7101b9fe76dd0b1ed8e7af37f8a587e)
Signed-off-by: Patrick Hunt <phunt@apache.org>
3 months agoZOOKEEPER-3083: Remove some redundant and noisy log lines
Brian Nixon [Thu, 19 Jul 2018 03:59:14 +0000 (20:59 -0700)] 
ZOOKEEPER-3083: Remove some redundant and noisy log lines

Author: Brian Nixon <nixon@fb.com>

Reviewers: Benjamin Reed <breed@apache.org>, Michael Han <hanm@apache.org>, Andor Molnar <andor@cloudera.com>, 毛蛤丝 <maoling199210191@sina.com>

Closes #561 from enixon/ZOOKEEPER-3083

3 months agoZOOKEEPER-3074: Flaky test:org.apache.zookeeper.server.ServerStatsTest.testLatencyMetrics
maoling [Wed, 18 Jul 2018 13:49:21 +0000 (15:49 +0200)] 
ZOOKEEPER-3074: Flaky test:org.apache.zookeeper.server.ServerStatsTest.testLatencyMetrics

more details in [ZOOKEEPER-3074](https://issues.apache.org/jira/browse/ZOOKEEPER-3074)

Author: maoling <maoling199210191@sina.com>

Reviewers: hanm@apache.org, andor@apache.org, nkalmar@cloudera.com

Closes #556 from maoling/ZOOKEEPER-3074

3 months agoZOOKEEPER-3042: testFailedTxnAsPartOfQuorumLoss is flaky
Bogdan Kanivets [Tue, 17 Jul 2018 08:41:24 +0000 (10:41 +0200)] 
ZOOKEEPER-3042: testFailedTxnAsPartOfQuorumLoss is flaky

- relaxed check of outstanding proposals queue
- close clients after restart
- restart client after old leader restart

Author: Bogdan Kanivets <bkanivets@gmail.com>

Reviewers: andor@apache.org

Closes #571 from lavacat/testFailedTxnAsPartOfQuorumLoss-fix-master

4 months agoZOOKEEPER-2184: Zookeeper Client should re-resolve hosts when connection attempts...
Andor Molnar [Mon, 16 Jul 2018 03:45:45 +0000 (20:45 -0700)] 
ZOOKEEPER-2184: Zookeeper Client should re-resolve hosts when connection attempts fail

This is the master/3.5 port of #451

Author: Andor Molnar <andor@cloudera.com>
Author: Andor Molnar <andor@apache.org>

Reviewers: Michael Han <hanm@apache.org>, Flavio Junqueira <fpj@apache.org>, Edward Ribeiro <edward.ribeiro@gmail.com>, Mark Fenes <mfenes@cloudera.com>, Abraham Fine <afine@apache.org>

Closes #534 from anmolnar/ZOOKEEPER-2184_master

4 months agoZOOKEEPER-3033: MAVEN MIGRATION - Step 1.2 - create zk-recipes maven structure
Norbert Kalmar [Fri, 13 Jul 2018 12:58:03 +0000 (14:58 +0200)] 
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 <nkalmar@yahoo.com>

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

4 months agoZOOKEEPER-3087: Fix findbug warning introduced by ZOOKEEPER-3084.
Michael Han [Fri, 13 Jul 2018 10:47:39 +0000 (12:47 +0200)] 
ZOOKEEPER-3087: Fix findbug warning introduced by ZOOKEEPER-3084.

Author: Michael Han <hanm@apache.org>

Reviewers: andor@apache.org

Closes #568 from hanm/ZOOKEEPER-3087

4 months agoZOOKEEPER-2940: Deal with maxbuffer as it relates to large requests from clients
Andor Molnar [Wed, 11 Jul 2018 23:33:51 +0000 (16:33 -0700)] 
ZOOKEEPER-2940: Deal with maxbuffer as it relates to large requests from clients

https://issues.apache.org/jira/browse/ZOOKEEPER-2940

This PR covers the other part of Jute buffer monitoring which relates to client response sizes.

`jute.maxbuffer` is often set too small or the default (4MB) value is not enough to receive large responses from the server which causes the client unable to operate. e.g. `getChildren()` on a node which has lots of children or execution of a large multi.

These new metrics lets operators to monitor the size of generated responses to get an idea on how to properly set client's `jute.maxbuffer`.

The other part of monitoring which relates to proposal size has already been merged https://github.com/apache/zookeeper/pull/415

Author: Andor Molnar <andor@cloudera.com>

Reviewers: phunt@apache.org

Closes #466 from anmolnar/ZOOKEEPER-2940 and squashes the following commits:

29224d021 [Andor Molnar] ZOOKEEPER-2940. Test fixes
486d4961d [Andor Molnar] ZOOKEEPER-2940. Removed support of 4lw commands, because master is targeted
60916e09e [Andor Molnar] ZOOKEEPER-2940. Code review fixes
b39c4c815 [Andor Molnar] ZOOKEEPER-2940. Code review: variable names renamed to proposalStats
87e72ff31 [Andor Molnar] ZOOKEEPER-2940. Some code review cleanups
6f0adb124 [Andor Molnar] ZOOKEEPER-2940. Code review fixes: stats class renamed, added comments to unit test asserts, updated docs
bcb6d4ca5 [Andor Molnar] ZOOKEEPER-2940. Added new metrics to python files
77a5f0aa8 [Andor Molnar] ZOOKEEPER-2940. Fixed failing unit tests
2def61c30 [Andor Molnar] ZOOKEEPER-2940. Track size of client responses

Change-Id: I68df371097cc355b1f41b8dbb0168da4fa5dee43

4 months agoZOOKEEPER-3084: Exit when ZooKeeper cannot bind to the leader election port
Fangmin Lyu [Wed, 11 Jul 2018 04:04:17 +0000 (21:04 -0700)] 
ZOOKEEPER-3084: Exit when ZooKeeper cannot bind to the leader election port

Author: Fangmin Lyu <allenlyu@fb.com>

Reviewers: Andor Molnár <andor@apache.org>, Benjamin Reed <breed@apache.org>, Norbert Kalmar <nkalmar@cloudera.com>, Michael Han <hanm@apache.org>

Closes #562 from lvfangmin/ZOOKEEPER-3084

4 months agoZOOKEEPER-3073: fix couple of typos
Christine Poerschke [Tue, 10 Jul 2018 11:29:20 +0000 (04:29 -0700)] 
ZOOKEEPER-3073: fix couple of typos

Author: Christine Poerschke <cpoerschke@bloomberg.net>

Reviewers: Norbert Kalmar <nkalmar@cloudera.com>, 毛蛤丝 <maoling199210191@sina.com>, Benjamin Reed <breed@apache.org>

Closes #554 from cpoerschke/master-ZOOKEEPER-3073

4 months agoZOOKEEPER-3078: remove print_completion_queue
Kent R. Spillner [Tue, 10 Jul 2018 10:58:32 +0000 (03:58 -0700)] 
ZOOKEEPER-3078: remove print_completion_queue

The fprintf(LOGSTREAM, ...) calls cause compiler errors when building
with GCC 8: "error: null argument where non-null required".  This is
because since ZOOKEEPER-1400 (2013-05-19 commit 37973fab: Allow logging
via callback instead of raw FILE pointer) LOGSTREAM is defined as NULL.
However, the last use of print_completion_queue was removed 2008-01-10
in commit ffc4b0d4 (Changed zoo_get() signature, changed the watcher
callback signature, fixed zookeeper_close() resource leaks and race
conditions, fixed the race condition causing xid mismatch).  So we can
avoid the compiler errors by just removing print_completion_queue.

Signed-off-by: Kent R. Spillner <kspillneracm.org>
Author: Kent R. Spillner <kspillner@acm.org>

Reviewers: Norbert Kalmar <nkalmar@cloudera.com>, Andor Molnár <andor@apache.org>, Benjamin Reed <breed@apache.org>

Closes #558 from sl4mmy/zookeeper-3078

4 months agoZOOKEEPER-3079: avoid unsafe use of sprintf(3)
Kent R. Spillner [Tue, 10 Jul 2018 10:50:07 +0000 (03:50 -0700)] 
ZOOKEEPER-3079: avoid unsafe use of sprintf(3)

The function format_endpoint_info declares both addrstr and buf as 128
element char arrays, however on non-Windows platforms it calls
sprintf(3) to write into buf the value of addrstr followed by ':'
followed by the the port number.  This causes a compiler error when
building with GCC 8 because this could potentially overflow buf if the
value of addrstr was ever 127 characters long (or a little less
depending on how many digits are in port).  Of course, this couldn't
actually happen because addrstr is initialized by inet_ntop(3) which
won't write more than INET6_ADDRSTRLEN bytes (defined in <netinet/in.h>
on POSIX-compliant systems).  Of course, GCC doesn't know that, so let's
just declare addrstr as a char array of only size INET6_ADDRSTRLEN
instead of 128.

Signed-off-by: Kent R. Spillner <kspillneracm.org>
Author: Kent R. Spillner <kspillner@acm.org>

Reviewers: Benjamin Reed <breed@apache.org>

Closes #559 from sl4mmy/zookeeper-3079

4 months agoZOOKEEPER-2886: Permanent session moved error in multi-op only conne…
Fangmin Lyu [Tue, 10 Jul 2018 10:46:36 +0000 (03:46 -0700)] 
ZOOKEEPER-2886: Permanent session moved error in multi-op only conne…

…ctions

Author: Fangmin Lyu <allenlyu@fb.com>

Reviewers: Andor Molnár <andor@apache.org>, Benjamin Reed <breed@apache.org>

Closes #353 from lvfangmin/ZOOKEEPER-2886

4 months agoZOOKEEPER-2873: abort startup on invalid ports
Norbert Kalmar [Wed, 4 Jul 2018 15:11:39 +0000 (17:11 +0200)] 
ZOOKEEPER-2873: abort startup on invalid ports

This change will check each server.x config if the client and election port are the same. Currently, ZK will startup and a race for the ports will take place. There will be an error, but ZK will keep running (without the ability to elect a leader). Now, ZK will fail on startup.

Author: Norbert Kalmar <nkalmar@yahoo.com>

Reviewers: Andor Molnar <andor@apache.org>

Closes #549 from nkalmar/ZOOKEEPER-2873 and squashes the following commits:

022c8b70 [Norbert Kalmar] ZOOKEEPER-2873 modify test case to expect exception
60b8128d [Norbert Kalmar] ZOOKEEPER-2873 fix old test - ReconfigTest.testUnspecifiedClientAddress
3d747c08 [Norbert Kalmar] ZOOKEEPER-2873 abort startup on invalid ports

4 months agoZOOKEEPER-3022: MAVEN MIGRATION - Iteration 1 - docs, it
Norbert Kalmar [Wed, 4 Jul 2018 11:02:19 +0000 (13:02 +0200)] 
ZOOKEEPER-3022: MAVEN MIGRATION - Iteration 1 - docs, it

First iteration of the directory changes in maven migration.
This time, the empty zookeeper-it for future integration tests were created, and the docs source were moved to zookeeper-docs.
Tested with forest v0.9, documents generations were successful with ant.

Author: Norbert Kalmar <nkalmar@yahoo.com>

Reviewers: Andor Molnar <andor@apache.org>

Closes #550 from nkalmar/ZOOKEEPER-3022-1

4 months agoZOOKEEPER-3066: Expose on JMX of Followers the id of the current leader
Enrico Olivelli [Tue, 26 Jun 2018 09:18:38 +0000 (11:18 +0200)] 
ZOOKEEPER-3066: Expose on JMX of Followers the id of the current leader

Expose a new JMX attribute "isLeader" in RemotePeerBean and LocalPeerBean

Author: Enrico Olivelli <eolivelli@apache.org>

Reviewers: Andor Molnar <andor@apache.org>

Closes #546 from eolivelli/fix/ZOOKEEPER-3066-leader-jmx and squashes the following commits:

bf09e37d [Enrico Olivelli] clean up spaces
ded4ce20 [Enrico Olivelli] reorder imports
81d7bb1c [Enrico Olivelli] split tests into LocalPeerBeanTest and QuorumPeerTest
a1984ef1 [Enrico Olivelli] fix typo
eb8d1bea [Enrico Olivelli] split tests
86b116b0 [Enrico Olivelli] enhance tests
b5000efc [Enrico Olivelli] clean up test
43782fe5 [Enrico Olivelli] introduce mockito tests
2778e742 [Enrico Olivelli] revert "ZOOKEEPER-3066 add servers restart to test case"
5f120631 [Enrico Olivelli] ZOOKEEPER-3066 add servers restart to test case
067aed9e [Enrico Olivelli] ZOOKEEPER-3066 Expose on JMX of Followers the id of the current leader Enhance RemotePeerMXBean and LocalPeerMXBean by adding information about leadership

4 months agoZOOKEEPER-3059: EventThread leak in case of Sasl AuthFailed
Abhishek Singh Chouhan [Mon, 25 Jun 2018 10:30:19 +0000 (12:30 +0200)] 
ZOOKEEPER-3059: EventThread leak in case of Sasl AuthFailed

Since authFailed is similar to session expired and is considered a fatal event, we should clean up after ourselves once we get a AuthFailed, other wise this results in an unavoidable and un-cleanable thread leak  of EventThread since the close operation is also a no-op (we return after checking for isAlive).

Author: Abhishek Singh Chouhan <abhishekchouhan121@gmail.com>

Reviewers: Andor Molnar <andor@apache.org>

Closes #541 from abhishek-chouhan/master and squashes the following commits:

c54a83a4 [Abhishek Singh Chouhan] ZOOKEEPER-3059 EventThread leak in case of Sasl AuthFailed. Adding testcase for the scenario
c1d9d7af [Abhishek Singh Chouhan] ZOOKEEPER-3059 EventThread leak in case of Sasl AuthFailed

4 months ago[ZOOKEEPER-2368] Send a watch event is when a client is closed
Tim Ward [Wed, 20 Jun 2018 13:22:07 +0000 (15:22 +0200)] 
[ZOOKEEPER-2368] Send a watch event is when a client is closed

Currently, if the client is closed (rather than being remotely disconnected) there is no notification to the watcher. This means that asynchronous clients can end up waiting indefinitely for events that will never come. Watchers need to be aware that the client is closed for good.

Signed-off-by: Tim Ward <timothyjwardapache.org>
Note that this is a variation on a patch I produced some time ago, which was broadly accepted as a good idea, and didn't cause any problems for Curator, but was deemed by some to be too risky because it reused an existing KeeperState. This patch is therefore updated to use a new `Closed` KeeperState. Fixing this would allow me to avoid maintaining a separate fork of Zookeeper just to support this one feature!

Author: Tim Ward <timothyjward@apache.org>

Reviewers: Andor Molnar <andor@apache.org>

Closes #529 from timothyjward/ZOOKEEPER-2368 and squashes the following commits:

d7196d19 [Tim Ward] Review comments from @anmolnar
088056b4 [Tim Ward] Review comments from @enixon
7fad1d36 [Tim Ward] [ZOOKEEPER-2368] Send a watch event is when a client is closed

(cherry picked from commit 6748a0e3f58f2a398dec4c6988bc70ea4363b807)
Signed-off-by: Andor Molnar <andor@cloudera.com>
5 months agoZOOKEEPER-3009: Potential NPE in NIOServerCnxnFactory
LJ1043041006 [Fri, 15 Jun 2018 06:02:41 +0000 (23:02 -0700)] 
ZOOKEEPER-3009: Potential NPE in NIOServerCnxnFactory

We have developed a static analysis tool [NPEDetector](https://github.com/lujiefsi/NPEDetector) to find some potential NPE. Our analysis shows that NPE reason can be simple:some callees may return null directly in corner case(e.g. node crash , IO exception), some of their callers have  !=null check but some do not have.
### Bug:
Callee getSocketAddress can return null, may caused by node crash, network exception....
<pre>
    public InetAddress getSocketAddress() {
        if (sock.isOpen() == false) {
            return null;
        }
        return sock.socket().getInetAddress();
    }
</pre>
getSocketAddress has two callers:  removeCnxn and removeCnxn

caller removeCnxn has null check
<pre>
 public boolean removeCnxn(NIOServerCnxn cnxn) {
        //other code
        InetAddress addr = cnxn.getSocketAddress();
        if (addr != null) {
            Set<NIOServerCnxn> set = ipMap.get(addr);
            //other code
        }
     //other code
    }
</pre>

but caller addCnxn has the similar code, but don't have the null check:
<pre>
     private void addCnxn(NIOServerCnxn cnxn) {
         InetAddress addr = cnxn.getSocketAddress();
         Set<NIOServerCnxn> set = ipMap.get(addr);
        //other code
      }
</pre>
I commit a patch to fix it: adding an null checker in addCnxn, and throws a semantics IOException rather than the ugly NPE.  I think the IOException  is ok, because the caller of addCnxn has the handler code:
<pre>
  private void processAcceptedConnections() {
               //other code
               try {
                    addCnxn(cnxn);
               } catch (IOException e) {
                    // register, createConnection
                    cleanupSelectionKey(key);
                    fastCloseSock(accepted);
               }
             }
</pre>
Maybe i am wrong, please point out my error.

Author: LJ1043041006 <1239497420@qq.com>

Reviewers: Patrick Hunt <phunt@apache.org>, Allan Lyu <fangmin@apache.org>, Michael Han <hanm@apache.org>

Closes #525 from lujiefsi/ZOOKEEPER-3009

5 months agoZOOKEEPER-3063: Track outstanding changes with ArrayDeque
Yisong Yue [Fri, 15 Jun 2018 05:41:07 +0000 (22:41 -0700)] 
ZOOKEEPER-3063: Track outstanding changes with ArrayDeque

Changed outstandingChanges from ArrayList to ArrayDeque.

Author: Yisong Yue <yisongyue@fb.com>

Reviewers: Michael Han <hanm@apache.org>

Closes #543 from yisong-yue/ZOOKEEPER-3063

5 months agoZOOKEEPER-3019: add metric for slow fsyncs count
Norbert Kalmar [Fri, 8 Jun 2018 14:52:58 +0000 (16:52 +0200)] 
ZOOKEEPER-3019: add metric for slow fsyncs count

Added metric to count fsyncWarningThresholdMS exceed in FileTxnLog.commit(). Both jmx bean and Command can be used to get the stat.

Also updated the python standalone client and documentation.

Tested the py script, i.e.:
src/contrib/monitoring/check_zookeeper.py -o cacti -s "localhost:2181" -k zk_num_alive_connections
localhost_2181:1

rc/contrib/monitoring/check_zookeeper.py -o cacti -s "localhost:2181" -k zk_fsync_threshold_exceed_count
localhost_2181:0

mntr command now returns:
zk_version 3.6.0-SNAPSHOT-13c9f899ff62be6a2eacb28e522d06703f1dab08, built on 04/04/2018 12:09 GMT
zk_avg_latency 0
zk_max_latency 0
zk_min_latency 0
zk_packets_received 7
zk_packets_sent 6
zk_num_alive_connections 1
zk_outstanding_requests 0
zk_server_state standalone
zk_znode_count 5
zk_watch_count 0
zk_ephemerals_count 0
zk_approximate_data_size 44
zk_open_file_descriptor_count 61
zk_max_file_descriptor_count 10240
zk_fsync_threshold_exceed_count 0

Author: Norbert Kalmar <nkalmar@yahoo.com>

Reviewers: Andor Molnar <andor@apache.org>

Closes #501 from nkalmar/ZOOKEEPER-3019 and squashes the following commits:

067edf6a [Norbert Kalmar] ZOOKEEPER-3019 remove redundant log
7430dbce [Norbert Kalmar] ZOOKEEPER-3019 remove metric from 4ltr command as no longer supported
1916a418 [Norbert Kalmar] ZOOKEEPER-3019 add extra warning log
761450f9 [Norbert Kalmar] ZOOKEEPER-3019 remove fsync from py script stat check
3b22bb7b [Norbert Kalmar] ZOOKEEPER-3019 remove fsyncEsceed from stats
0be003a8 [Norbert Kalmar] ZOOKEEPER-3019 exclude serverStats IS chec from findbugs
b48d2958 [Norbert Kalmar] ZOOKEEPER-3019 add unit test and fix PR comments
fb4c7a31 [Norbert Kalmar] ZOOKEEPER-3019 add metric to track slow fsyncs count + update py script and docs

5 months agoZOOKEEPER-2968: Add C client code coverage tests
Mark Fenes [Thu, 31 May 2018 19:57:21 +0000 (12:57 -0700)] 
ZOOKEEPER-2968: Add C client code coverage tests

ZOOKEEPER-2968: Add C client code coverage tests

This PR adds a new ant target 'c_coverage_report' which generates coverage report for the ZK C client.
The report is generated to build/c_coverage/report in html format.
As a requirement, lcov has to be installed prior to running target 'c_coverage_report'.

An additional check was added to 'check-cppunit-makefile' to ensure that the Makefile gets deleted and regenerated without the coverage compiler flags when running targets without --enable-gcov.

Author: Mark Fenes <mfenes@cloudera.com>

Reviewers: phunt@apache.org

Closes #467 from mfenes/ZOOKEEPER-2968 and squashes the following commits:

d8757821a [Mark Fenes] ZOOKEEPER-2968: Add C client code coverage tests
3c9022622 [Mark Fenes] ZOOKEEPER-2968: Add C client code coverage tests

Change-Id: Id4bd05afbff2447c593427eff5f133c3d88048d3

5 months agoZOOKEEPER-2920: Upgrade OWASP Dependency Check to 3.2.1
Patrick Hunt [Thu, 31 May 2018 03:54:52 +0000 (20:54 -0700)] 
ZOOKEEPER-2920: Upgrade OWASP Dependency Check to 3.2.1

Updated and verified on all the active branches.

Change-Id: I750d7e576e8c731aab4cef26f6863eac6b1b8dc2

Author: Patrick Hunt <phunt@apache.org>

Reviewers: Michael Han <hanm@apache.org>

Closes #536 from phunt/ZOOKEEPER-2920

5 months agoZOOKEEPER-2317: Ensure that OSGi versions are valid
Tim Ward [Wed, 30 May 2018 00:23:11 +0000 (17:23 -0700)] 
ZOOKEEPER-2317: Ensure that OSGi versions are valid

Signed-off-by: Tim Ward <timothyjwardapache.org>
Author: Tim Ward <timothyjward@apache.org>

Reviewers: phunt@apache.org

Closes #531 from timothyjward/ZOOKEEPER-2317

Change-Id: I072db1e9de3bc1ad66e23be40bdea642866f6883
(cherry picked from commit 1c2c6849f0ebc6d56a1e987d3a637c0c050f7a53)
Signed-off-by: Patrick Hunt <phunt@apache.org>
5 months agoZOOKEEPER-3043: QuorumKerberosHostBasedAuthTest fails on Linux box: Unable to parse...
Enrico Olivelli [Wed, 30 May 2018 00:02:56 +0000 (17:02 -0700)] 
ZOOKEEPER-3043: QuorumKerberosHostBasedAuthTest fails on Linux box: Unable to parse:includedir /etc/krb5.conf.d/

Fixes QuorumKerberosHostBasedAuthTest, see ZOOKEEPER-3043

 - upgrade Kerby to 1.0.0
 - upgrade commons-io to 2.5, needed by Kerby
 - fix test dir in KerberosTestUtils

This should be also cherry-picked to 3.5 branch

Author: Enrico Olivelli <eolivelli@apache.org>

Reviewers: phunt@apache.org

Closes #524 from eolivelli/fix/ZOOKEEPER-3043 and squashes the following commits:

b4f31ad67 [Enrico Olivelli] upgrade libs
e224e823e [Enrico Olivelli] QuorumKerberosHostBasedAuthTest fails on Linux box: Unable to parse:includedir /etc/krb5.conf.d/  - upgrade Kerby to 1.0.0  - upgrade commons-io to 2.5, needed by Kerby  - fix test dir in KerberosTestUtils

Change-Id: Idaa0c05d1212c936b60fa2aa5ccb9dee114cce49

5 months agoZOOKEEPER-1919 Update the C implementation of removeWatches to have it match ZOOKEEPE...
Andor Molnar [Tue, 29 May 2018 23:27:43 +0000 (16:27 -0700)] 
ZOOKEEPER-1919 Update the C implementation of removeWatches to have it match ZOOKEEPER-1910

Existing patch on Jira has been rebased and applied to master.

Replaces #511

Author: Andor Molnar <andor@cloudera.com>

Reviewers: phunt@apache.org

Closes #522 from anmolnar/ZOOKEEPER-1919 and squashes the following commits:

f81a7608a [Andor Molnar] ZOOKEEPER-1919. Fixed indentation
d6455b062 [Andor Molnar] ZOOKEEPER-1919. Test fixes
769677693 [Andor Molnar] ZOOKEEPER-1919. Changes in C code

Change-Id: I2597854e4b28196a5dc5dc89553ced41537663eb

5 months agoZOOKEEPER-2993: Removed 'generated' line from .gitignore
asutosh936 [Wed, 23 May 2018 03:42:47 +0000 (20:42 -0700)] 
ZOOKEEPER-2993: Removed 'generated' line from .gitignore

Author: asutosh936 <asutosh.pandya@hotmail.com>

Reviewers: Abraham Fine <afine@apache.org>, Andor Molnár <andor@cloudera.com>, Michael Han <hanm@apache.org>

Closes #488 from asutosh936/ZOOKEEPER-2993

5 months agoZOOKEEPER-3051: Updated jackson to the latest version
Patrick Hunt [Wed, 23 May 2018 03:34:19 +0000 (20:34 -0700)] 
ZOOKEEPER-3051: Updated jackson to the latest version

Change-Id: Iec76a7df76f8e1928828fd716c4c25f48e887ba1

Author: Patrick Hunt <phunt@apache.org>

Reviewers: Michael Han <hanm@apache.org>

Closes #527 from phunt/ZOOKEEPER-3051

5 months agoZOOKEEPER-3050: update to the newest version of Jetty
Patrick Hunt [Tue, 22 May 2018 04:37:04 +0000 (21:37 -0700)] 
ZOOKEEPER-3050: update to the newest version of Jetty

Change-Id: I1f63c471e59a1ed9d1cf58e721fedf47452acc6b

Author: Patrick Hunt <phunt@apache.org>

Reviewers: Michael Han <hanm@apache.org>

Closes #526 from phunt/ZOOKEEPER-3050

5 months agoZOOKEEPER-3046: added junit timeout to precede 'ant' timeout
Bogdan Kanivets [Mon, 21 May 2018 18:11:40 +0000 (11:11 -0700)] 
ZOOKEEPER-3046: added junit timeout to precede 'ant' timeout

When 'ant' timeout triggers, output of the test isn't captured.
Related issue ZOOKEEPER-2916

Author: Bogdan Kanivets <bkanivets@gmail.com>

Reviewers: phunt@apache.org

Closes #523 from lavacat/test-timeouts

Change-Id: I4941451395bd4f35342582e9f4852d73104da138
(cherry picked from commit 831bfebaec2500c5672fd665020b517282d9a8a9)
Signed-off-by: Patrick Hunt <phunt@apache.org>
6 months agoZOOKEEPER-3041: Typo in error message, affects log analysis; charater --> character
Hugh O'Brien [Wed, 16 May 2018 17:30:31 +0000 (10:30 -0700)] 
ZOOKEEPER-3041: Typo in error message, affects log analysis; charater --> character

Author: Hugh O'Brien <hugh.obrien@jet.com>

Reviewers: phunt@apache.org

Closes #498 from hughobrienjet/master

Change-Id: I3f4145c5c3eb4052cd7f0859053bb3711dfdd64c

6 months agoZOOKEEPER-3039: TxnLogToolkit uses Scanner badly
Andor Molnar [Thu, 10 May 2018 20:14:24 +0000 (13:14 -0700)] 
ZOOKEEPER-3039: TxnLogToolkit uses Scanner badly

Fixed by creating a single Scanner for all queries in the main() method.

Author: Andor Molnar <andor@cloudera.com>

Reviewers: phunt@apache.org

Closes #517 from anmolnar/ZOOKEEPER-3039 and squashes the following commits:

a35e2e280 [Andor Molnar] ZOOKEEPER-3039. Optimize imports
a196443cb [Andor Molnar] ZOOKEEPER-3039. Use the same Scanner for all queries

Change-Id: Icf66888d4e6ad902615ed8ffde58a5a8fdd41237

6 months agoZOOKEEPER-3038: Cleanup some nitpicks in TTL implementation
Andor Molnar [Thu, 10 May 2018 04:13:16 +0000 (21:13 -0700)] 
ZOOKEEPER-3038: Cleanup some nitpicks in TTL implementation

A few nitpicks which needs to be cleaned up:

1. Rename OldEphemeralType --> EphemeralTypeEmulate353
2. Remove unused method: getTTL()
3. Remove unused import from QuorumPeer

Author: Andor Molnar <andor@cloudera.com>

Reviewers: phunt@apache.org

Closes #516 from anmolnar/ZOOKEEPER-3038

Change-Id: Iec537706a35863d53daa593da2b01f6e523ef466

6 months agoZOOKEEPER-2959: ignore accepted epoch and LEADERINFO ack from observers
Alexander Shraer [Thu, 10 May 2018 04:00:15 +0000 (21:00 -0700)] 
ZOOKEEPER-2959: ignore accepted epoch and LEADERINFO ack from observers

6 months agoZOOKEEPER-3012: Fix unit test: testDataDirAndDataLogDir should not use hardcode test...
Andor Molnar [Wed, 9 May 2018 22:14:18 +0000 (15:14 -0700)] 
ZOOKEEPER-3012: Fix unit test: testDataDirAndDataLogDir should not use hardcode test folders

A little bit more than just fixing the hardcoded folder names. Because the original issue was only on the 3.4 branch, the unit test has also been added to that branch only.

In this PR I add the fixed version of test to the master branch. Should be committed to 3.5 as well and I'll create a separate PR for 3.4

https://issues.apache.org/jira/browse/ZOOKEEPER-3012

Author: Andor Molnar <andor@cloudera.com>

Reviewers: phunt@apache.org

Closes #514 from anmolnar/ZOOKEEPER-3012

Change-Id: Iabba2630008158580a121a007a5c45b43a301315

6 months agoZOOKEEPER-2901: TTL Nodes don't work with Server IDs > 127
randgalt [Wed, 9 May 2018 21:57:41 +0000 (14:57 -0700)] 
ZOOKEEPER-2901: TTL Nodes don't work with Server IDs > 127

There was a major oversight when TTL nodes were implemented. The session ID generator for each server is seeded with the configured Server ID in the high byte. TTL Nodes were using the highest bit to denote a TTL node when used in the ephemeral owner. This meant that Server IDs > 127 that created ephemeral nodes would have those nodes always considered TTL nodes (with the TTL being essentially a random number).

This PR fixes the issue by disabling TTL Nodes by default. They must now be enabled in zoo.cfg. When TTL Nodes are enabled, the max Server ID changes from 255 to 254. This allows the high byte of a session ID stored in the ephemeral owner to use 0xFF to denote a TTL node.

About this change:

- The doc has been updated to note that TTL nodes are disabled by default and must be enabled via config. Also, the docs explains that when TTL nodes are enabled the max Server ID becomes 254
- The TTL implementation has been updated to use 0xFF in the high byte of the ephemeralOwner to denote a TTL node. This decreases the max TTL by an insignificant amount
- PrepRequestProcessor now throws `KeeperException.UnimplementedException` when an attempt to create a TTL node is made but the server has not been configured to enable TTL Nodes.
- QuorumPeer throws a `RuntimeException` if TTL Nodes are enabled but the Server ID > 254
- Tests have been added to validate all of this

IMPORTANT NOTE: TTL Nodes created in 3.5.3 will revert to EPHEMERAL with this change. We need to discuss the impact of this and consider workarounds, etc.

Author: randgalt <jordan@jordanzimmerman.com>
Author: Abraham Fine <afine@apache.org>

Reviewers: phunt@apache.org

Closes #377 from Randgalt/ZOOKEEPER-2901

Change-Id: I6923a22ecf847710d4e7151daf8c044734873f6b

6 months agoZOOKEEPER-2982: Re-try DNS hostname -> IP resolution if node connection fails
Eron Wright [Tue, 8 May 2018 22:54:02 +0000 (00:54 +0200)] 
ZOOKEEPER-2982: Re-try DNS hostname -> IP resolution if node connection fails

This PR ports a fix from the 3.4 to the master branch, that was originally made in ZOOKEEPER-1506.

Closes ZOOKEEPER-2982.

Author: Eron Wright <eron.wright@gmail.com>

Reviewers: Andor Molnar <andor@cloudera.com>, Abraham Fine <afine@apache.org>, Flavio Junqueira <fpj@apache.org>

Closes #513 from EronWright/ZOOKEEPER-2982-master