From 67c0d2ceb1328a331c48b6fb20c0bd682a5f09c7 Mon Sep 17 00:00:00 2001 From: Andrew Purtell Date: Thu, 10 Mar 2022 11:30:28 -0800 Subject: [PATCH] HBASE-26824 TestHBaseTestingUtil.testResolvePortConflict failing after HBASE-26582 --- .../hadoop/hbase/HBaseCommonTestingUtil.java | 14 ++++++++++---- .../apache/hadoop/hbase/TestHBaseTestingUtil.java | 2 +- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/hbase-common/src/test/java/org/apache/hadoop/hbase/HBaseCommonTestingUtil.java b/hbase-common/src/test/java/org/apache/hadoop/hbase/HBaseCommonTestingUtil.java index fa5a8dea3ec2..3a63ae7368b0 100644 --- a/hbase-common/src/test/java/org/apache/hadoop/hbase/HBaseCommonTestingUtil.java +++ b/hbase-common/src/test/java/org/apache/hadoop/hbase/HBaseCommonTestingUtil.java @@ -23,6 +23,7 @@ import java.util.Arrays; import java.util.HashSet; import java.util.List; +import java.util.Random; import java.util.Set; import java.util.UUID; import java.util.concurrent.ThreadLocalRandom; @@ -266,10 +267,11 @@ static class PortAllocator { /** A set of ports that have been claimed using {@link #randomFreePort()}. */ private final Set takenRandomPorts = new HashSet<>(); - + private final Random random; private final AvailablePortChecker portChecker; public PortAllocator() { + this.random = new Random(); this.portChecker = new AvailablePortChecker() { @Override public boolean available(int port) { @@ -284,10 +286,15 @@ public boolean available(int port) { }; } - public PortAllocator(AvailablePortChecker portChecker) { + public PortAllocator(Random random, AvailablePortChecker portChecker) { + this.random = random; this.portChecker = portChecker; } + public PortAllocator(AvailablePortChecker portChecker) { + this(new Random(), portChecker); + } + /** * Returns a random free port and marks that port as taken. Not thread-safe. Expected to be * called from single-threaded test setup code/ @@ -314,8 +321,7 @@ public int randomFreePort() { * dynamic allocation (see http://bit.ly/dynports). */ private int randomPort() { - return MIN_RANDOM_PORT + - ThreadLocalRandom.current().nextInt(MAX_RANDOM_PORT - MIN_RANDOM_PORT); + return MIN_RANDOM_PORT + random.nextInt(MAX_RANDOM_PORT - MIN_RANDOM_PORT); } interface AvailablePortChecker { diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/TestHBaseTestingUtil.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/TestHBaseTestingUtil.java index 489f6eb374d9..7076bf936126 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/TestHBaseTestingUtil.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/TestHBaseTestingUtil.java @@ -429,7 +429,7 @@ public Integer answer(InvocationOnMock invocation) { when(portChecker.available(anyInt())).thenReturn(true); HBaseTestingUtil.PortAllocator portAllocator = - new HBaseTestingUtil.PortAllocator(portChecker); + new HBaseTestingUtil.PortAllocator(random, portChecker); int port1 = portAllocator.randomFreePort(); int port2 = portAllocator.randomFreePort();