The current implementation requires a container to be created in datanode before starting the chunk write. This can be optimized by creating the container on the first chunk write.
During chunk write, if the container is missing, we can go ahead and create the container.
Along with this change ALLOCATED and CREATING container states can be removed as they were used to track which containers have been successfully created. Also there is a shouldCreateContainer flag which is used by client to know if it needs to create container. This flag can be removed.