HADOOP-10072. TestNfsExports#testMultiMatchers fails due to non-deterministic timing around cache expiry check. Contributed by Chris Nauroth.

git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/trunk@1535918 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Chris Nauroth 2013-10-26 04:25:50 +00:00
parent b4a5476d95
commit 7e820b9965
2 changed files with 14 additions and 2 deletions

View File

@ -449,6 +449,9 @@ Release 2.2.1 - UNRELEASED
HADOOP-10055. FileSystemShell.apt.vm doc has typo "numRepicas". HADOOP-10055. FileSystemShell.apt.vm doc has typo "numRepicas".
(Akira Ajisaka via cnauroth) (Akira Ajisaka via cnauroth)
HADOOP-10072. TestNfsExports#testMultiMatchers fails due to non-deterministic
timing around cache expiry check. (cnauroth)
Release 2.2.0 - 2013-10-13 Release 2.2.0 - 2013-10-13
INCOMPATIBLE CHANGES INCOMPATIBLE CHANGES

View File

@ -35,6 +35,7 @@ public class TestNfsExports {
Nfs3Constant.EXPORTS_CACHE_EXPIRYTIME_MILLIS_DEFAULT * 1000 * 1000; Nfs3Constant.EXPORTS_CACHE_EXPIRYTIME_MILLIS_DEFAULT * 1000 * 1000;
private static final int CacheSize = Nfs3Constant.EXPORTS_CACHE_SIZE_DEFAULT; private static final int CacheSize = Nfs3Constant.EXPORTS_CACHE_SIZE_DEFAULT;
private static final long NanosPerMillis = 1000000;
@Test @Test
public void testWildcardRW() { public void testWildcardRW() {
@ -185,7 +186,15 @@ public void testMultiMatchers() throws Exception {
Thread.sleep(1000); Thread.sleep(1000);
// no cache for address2 now // no cache for address2 now
Assert.assertEquals(AccessPrivilege.NONE, AccessPrivilege ap;
matcher.getAccessPrivilege(address2, address2)); long startNanos = System.nanoTime();
do {
ap = matcher.getAccessPrivilege(address2, address2);
if (ap == AccessPrivilege.NONE) {
break;
}
Thread.sleep(500);
} while ((System.nanoTime() - startNanos) / NanosPerMillis < 5000);
Assert.assertEquals(AccessPrivilege.NONE, ap);
} }
} }