|
@@ -20,6 +20,7 @@ package org.apache.hadoop.ozone.scm;
|
|
|
import com.google.common.cache.Cache;
|
|
|
import org.apache.commons.lang3.RandomStringUtils;
|
|
|
import org.apache.hadoop.hdds.scm.container.common.helpers.ContainerWithPipeline;
|
|
|
+import org.apache.hadoop.hdds.scm.container.common.helpers.PipelineID;
|
|
|
import org.apache.hadoop.io.IOUtils;
|
|
|
import org.apache.hadoop.ozone.MiniOzoneCluster;
|
|
|
import org.apache.hadoop.hdds.conf.OzoneConfiguration;
|
|
@@ -81,21 +82,18 @@ public class TestXceiverClientManager {
|
|
|
.allocateContainer(clientManager.getType(), clientManager.getFactor(),
|
|
|
containerOwner);
|
|
|
XceiverClientSpi client1 = clientManager
|
|
|
- .acquireClient(container1.getPipeline(),
|
|
|
- container1.getContainerInfo().getContainerID());
|
|
|
+ .acquireClient(container1.getPipeline());
|
|
|
Assert.assertEquals(1, client1.getRefcount());
|
|
|
|
|
|
ContainerWithPipeline container2 = storageContainerLocationClient
|
|
|
.allocateContainer(clientManager.getType(), clientManager.getFactor(),
|
|
|
containerOwner);
|
|
|
XceiverClientSpi client2 = clientManager
|
|
|
- .acquireClient(container2.getPipeline(),
|
|
|
- container2.getContainerInfo().getContainerID());
|
|
|
+ .acquireClient(container2.getPipeline());
|
|
|
Assert.assertEquals(1, client2.getRefcount());
|
|
|
|
|
|
XceiverClientSpi client3 = clientManager
|
|
|
- .acquireClient(container1.getPipeline(),
|
|
|
- container1.getContainerInfo().getContainerID());
|
|
|
+ .acquireClient(container1.getPipeline());
|
|
|
Assert.assertEquals(2, client3.getRefcount());
|
|
|
Assert.assertEquals(2, client1.getRefcount());
|
|
|
Assert.assertEquals(client1, client3);
|
|
@@ -109,7 +107,7 @@ public class TestXceiverClientManager {
|
|
|
OzoneConfiguration conf = new OzoneConfiguration();
|
|
|
conf.setInt(SCM_CONTAINER_CLIENT_MAX_SIZE_KEY, 1);
|
|
|
XceiverClientManager clientManager = new XceiverClientManager(conf);
|
|
|
- Cache<Long, XceiverClientSpi> cache =
|
|
|
+ Cache<PipelineID, XceiverClientSpi> cache =
|
|
|
clientManager.getClientCache();
|
|
|
|
|
|
ContainerWithPipeline container1 =
|
|
@@ -117,8 +115,7 @@ public class TestXceiverClientManager {
|
|
|
clientManager.getType(), HddsProtos.ReplicationFactor.ONE,
|
|
|
containerOwner);
|
|
|
XceiverClientSpi client1 = clientManager
|
|
|
- .acquireClient(container1.getPipeline(),
|
|
|
- container1.getContainerInfo().getContainerID());
|
|
|
+ .acquireClient(container1.getPipeline());
|
|
|
Assert.assertEquals(1, client1.getRefcount());
|
|
|
Assert.assertEquals(container1.getPipeline(),
|
|
|
client1.getPipeline());
|
|
@@ -128,14 +125,13 @@ public class TestXceiverClientManager {
|
|
|
clientManager.getType(),
|
|
|
HddsProtos.ReplicationFactor.ONE, containerOwner);
|
|
|
XceiverClientSpi client2 = clientManager
|
|
|
- .acquireClient(container2.getPipeline(),
|
|
|
- container2.getContainerInfo().getContainerID());
|
|
|
+ .acquireClient(container2.getPipeline());
|
|
|
Assert.assertEquals(1, client2.getRefcount());
|
|
|
Assert.assertNotEquals(client1, client2);
|
|
|
|
|
|
// least recent container (i.e containerName1) is evicted
|
|
|
XceiverClientSpi nonExistent1 = cache
|
|
|
- .getIfPresent(container1.getContainerInfo().getContainerID());
|
|
|
+ .getIfPresent(container1.getContainerInfo().getPipelineID());
|
|
|
Assert.assertEquals(null, nonExistent1);
|
|
|
// However container call should succeed because of refcount on the client.
|
|
|
String traceID1 = "trace" + RandomStringUtils.randomNumeric(4);
|
|
@@ -164,7 +160,7 @@ public class TestXceiverClientManager {
|
|
|
OzoneConfiguration conf = new OzoneConfiguration();
|
|
|
conf.setInt(SCM_CONTAINER_CLIENT_MAX_SIZE_KEY, 1);
|
|
|
XceiverClientManager clientManager = new XceiverClientManager(conf);
|
|
|
- Cache<Long, XceiverClientSpi> cache =
|
|
|
+ Cache<PipelineID, XceiverClientSpi> cache =
|
|
|
clientManager.getClientCache();
|
|
|
|
|
|
ContainerWithPipeline container1 =
|
|
@@ -172,8 +168,7 @@ public class TestXceiverClientManager {
|
|
|
clientManager.getType(),
|
|
|
clientManager.getFactor(), containerOwner);
|
|
|
XceiverClientSpi client1 = clientManager
|
|
|
- .acquireClient(container1.getPipeline(),
|
|
|
- container1.getContainerInfo().getContainerID());
|
|
|
+ .acquireClient(container1.getPipeline());
|
|
|
Assert.assertEquals(1, client1.getRefcount());
|
|
|
|
|
|
clientManager.releaseClient(client1);
|
|
@@ -183,14 +178,13 @@ public class TestXceiverClientManager {
|
|
|
.allocateContainer(clientManager.getType(), clientManager.getFactor(),
|
|
|
containerOwner);
|
|
|
XceiverClientSpi client2 = clientManager
|
|
|
- .acquireClient(container2.getPipeline(),
|
|
|
- container2.getContainerInfo().getContainerID());
|
|
|
+ .acquireClient(container2.getPipeline());
|
|
|
Assert.assertEquals(1, client2.getRefcount());
|
|
|
Assert.assertNotEquals(client1, client2);
|
|
|
|
|
|
// now client 1 should be evicted
|
|
|
XceiverClientSpi nonExistent = cache
|
|
|
- .getIfPresent(container1.getContainerInfo().getContainerID());
|
|
|
+ .getIfPresent(container1.getContainerInfo().getPipelineID());
|
|
|
Assert.assertEquals(null, nonExistent);
|
|
|
|
|
|
// Any container operation should now fail
|