Skip to content
Merged
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -69,16 +69,20 @@ public class ContainerOperationClient implements ScmClient {
private final StorageContainerLocationProtocol
storageContainerLocationClient;
private final boolean containerTokenEnabled;
private final OzoneConfiguration configuration;
private XceiverClientManager xceiverClientManager;

public XceiverClientManager getXceiverClientManager() {
public synchronized XceiverClientManager getXceiverClientManager()
throws IOException {
if (this.xceiverClientManager == null) {
this.xceiverClientManager = newXCeiverClientManager(configuration);
}
return xceiverClientManager;
}

private final XceiverClientManager xceiverClientManager;

public ContainerOperationClient(OzoneConfiguration conf) throws IOException {
Comment thread
adoroszlai marked this conversation as resolved.
Outdated
this.configuration = conf;
storageContainerLocationClient = newContainerRpcClient(conf);
this.xceiverClientManager = newXCeiverClientManager(conf);
containerSizeB = (int) conf.getStorageSize(OZONE_SCM_CONTAINER_SIZE,
OZONE_SCM_CONTAINER_SIZE_DEFAULT, StorageUnit.BYTES);
boolean useRatis = conf.getBoolean(
Expand Down Expand Up @@ -131,7 +135,7 @@ public ContainerWithPipeline createContainer(String owner)
allocateContainer(replicationType, replicationFactor, owner);

Pipeline pipeline = containerWithPipeline.getPipeline();
client = xceiverClientManager.acquireClient(pipeline);
client = getXceiverClientManager().acquireClient(pipeline);
Comment thread
adoroszlai marked this conversation as resolved.
Outdated

Preconditions.checkState(
pipeline.isOpen(),
Expand All @@ -143,7 +147,7 @@ public ContainerWithPipeline createContainer(String owner)
return containerWithPipeline;
} finally {
if (client != null) {
xceiverClientManager.releaseClient(client, false);
getXceiverClientManager().releaseClient(client, false);
}
}
}
Expand Down Expand Up @@ -238,13 +242,13 @@ public ContainerWithPipeline createContainer(HddsProtos.ReplicationType type,
owner);
Pipeline pipeline = containerWithPipeline.getPipeline();
// connect to pipeline leader and allocate container on leader datanode.
client = xceiverClientManager.acquireClient(pipeline);
client = getXceiverClientManager().acquireClient(pipeline);
createContainer(client,
containerWithPipeline.getContainerInfo().getContainerID());
return containerWithPipeline;
} finally {
if (client != null) {
xceiverClientManager.releaseClient(client, false);
getXceiverClientManager().releaseClient(client, false);
}
}
}
Expand Down Expand Up @@ -333,7 +337,12 @@ public void closePipeline(HddsProtos.PipelineID pipelineID)
@Override
public void close() {
try {
xceiverClientManager.close();
if (xceiverClientManager != null) {
xceiverClientManager.close();
}
if (storageContainerLocationClient != null) {
storageContainerLocationClient.close();
}
} catch (Exception ex) {
LOG.error("Can't close " + this.getClass().getSimpleName(), ex);
}
Expand All @@ -354,7 +363,7 @@ public void deleteContainer(long containerId, Pipeline pipeline,
try {
String encodedToken = getEncodedContainerToken(containerId);

client = xceiverClientManager.acquireClient(pipeline);
client = getXceiverClientManager().acquireClient(pipeline);
ContainerProtocolCalls
.deleteContainer(client, containerId, force, encodedToken);
storageContainerLocationClient
Expand All @@ -365,7 +374,7 @@ public void deleteContainer(long containerId, Pipeline pipeline,
}
} finally {
if (client != null) {
xceiverClientManager.releaseClient(client, false);
getXceiverClientManager().releaseClient(client, false);
}
}
}
Expand Down Expand Up @@ -413,7 +422,7 @@ public ContainerDataProto readContainer(long containerID,

XceiverClientSpi client = null;
try {
client = xceiverClientManager.acquireClientForReadData(pipeline);
client = getXceiverClientManager().acquireClientForReadData(pipeline);
ReadContainerResponseProto response = ContainerProtocolCalls
.readContainer(client, containerID, encodedToken);
if (LOG.isDebugEnabled()) {
Expand All @@ -423,7 +432,7 @@ public ContainerDataProto readContainer(long containerID,
return response.getContainerData();
} finally {
if (client != null) {
xceiverClientManager.releaseClient(client, false);
getXceiverClientManager().releaseClient(client, false);
}
}
}
Expand Down