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?
---