Details
-
Sub-task
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
None
-
None
-
Reviewed
Description
When a container gets created, corresponding metadata gets added to ContainerManagerImpl#containerMap. What containerMap stores is a containerName to ContainerStatus instance map. When datanode starts, it also loads this map from disk file metadata. As long as the containerName is found in this map, it is considered an existing container.
An issue we saw was that, occasionally, when the container creation on datanode fails, the metadata of the failed container may still get added to containerMap, with active flag set to false. But currently such containers are not being handled, containers with active=false are just treated as normal containers. Then when someone tries to write to this container, fails can happen.