You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@zookeeper.apache.org by afine <gi...@git.apache.org> on 2017/06/13 18:56:45 UTC

[GitHub] zookeeper pull request #280: ZOOKEEPER-2806: Flaky test: org.apache.zookeepe...

GitHub user afine opened a pull request:

    https://github.com/apache/zookeeper/pull/280

    ZOOKEEPER-2806: Flaky test: org.apache.zookeeper.server.quorum.FLEBackwardElectionRoundTest.testBackwardElectionRound

    Here is an example of a test failure: https://builds.apache.org/job/ZooKeeper_branch34_jdk8/1016/testReport/org.apache.zookeeper.server.quorum/FLEBackwardElectionRoundTest/testBackwardElectionRound/
    
    This flaky test is caused by the reuse of a `ByteBuffer` object between `QuorumCnxManager`s. 
    
    When sending a `ByteBuffer` we reset its position first:
    
    ```
            synchronized void send(ByteBuffer b) throws IOException {
                byte[] msgBytes = new byte[b.capacity()];
                try {
                    b.position(0);
                    b.get(msgBytes);
                } catch (BufferUnderflowException be) {
                    LOG.error("BufferUnderflowException ", be);
                    return;
                }
                dout.writeInt(b.capacity());
                dout.write(b.array());
                dout.flush();
            }
    ```
    
    `b.get(msgBytes);` changes the position of the `ByteBuffer`. So we can have a race here that results in a `BufferUnderflowException` causing a message never to be sent and this test to fail. 
    
    The fix is to create a new `ByteBuffer` for each message we send in the test.

You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/afine/zookeeper ZOOKEEPER-2806

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/zookeeper/pull/280.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #280
    
----
commit 384bf271a79333a7d646a74e1e6c326955d7001c
Author: Abraham Fine <ab...@cloudera.com>
Date:   2017-06-13T18:46:48Z

    ZOOKEEPER-2806: Flaky test: org.apache.zookeeper.server.quorum.FLEBackwardElectionRoundTest.testBackwardElectionRound

----


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] zookeeper pull request #280: ZOOKEEPER-2806: Flaky test: org.apache.zookeepe...

Posted by afine <gi...@git.apache.org>.
Github user afine closed the pull request at:

    https://github.com/apache/zookeeper/pull/280


---

[GitHub] zookeeper issue #280: ZOOKEEPER-2806: Flaky test: org.apache.zookeeper.serve...

Posted by phunt <gi...@git.apache.org>.
Github user phunt commented on the issue:

    https://github.com/apache/zookeeper/pull/280
  
    lgtm. +1 thanks Abe.
    
    Can you close this?


---