HDDS-1374. ContainerStateMap cannot find container while allocating blocks. (#735)
This commit is contained in:
parent
f2ab2795db
commit
3ac3e50b20
|
@ -246,7 +246,17 @@ public class SCMContainerManager implements ContainerManager {
|
||||||
containerStateManager.allocateContainer(pipelineManager, type,
|
containerStateManager.allocateContainer(pipelineManager, type,
|
||||||
replicationFactor, owner);
|
replicationFactor, owner);
|
||||||
// Add container to DB.
|
// Add container to DB.
|
||||||
addContainerToDB(containerInfo);
|
try {
|
||||||
|
addContainerToDB(containerInfo);
|
||||||
|
} catch (IOException ex) {
|
||||||
|
// When adding to DB failed, we are removing from containerStateMap.
|
||||||
|
// We should also remove from pipeline2Container Map in
|
||||||
|
// PipelineStateManager.
|
||||||
|
pipelineManager.removeContainerFromPipeline(
|
||||||
|
containerInfo.getPipelineID(),
|
||||||
|
new ContainerID(containerInfo.getContainerID()));
|
||||||
|
throw ex;
|
||||||
|
}
|
||||||
return containerInfo;
|
return containerInfo;
|
||||||
} finally {
|
} finally {
|
||||||
lock.unlock();
|
lock.unlock();
|
||||||
|
@ -440,6 +450,8 @@ public class SCMContainerManager implements ContainerManager {
|
||||||
} catch (IOException ex) {
|
} catch (IOException ex) {
|
||||||
// If adding to containerStore fails, we should remove the container
|
// If adding to containerStore fails, we should remove the container
|
||||||
// from in-memory map.
|
// from in-memory map.
|
||||||
|
LOG.error("Add Container to DB failed for ContainerID #{}",
|
||||||
|
containerInfo.getContainerID());
|
||||||
try {
|
try {
|
||||||
containerStateManager.removeContainer(containerInfo.containerID());
|
containerStateManager.removeContainer(containerInfo.containerID());
|
||||||
} catch (ContainerNotFoundException cnfe) {
|
} catch (ContainerNotFoundException cnfe) {
|
||||||
|
|
Loading…
Reference in New Issue