Improve error handling for existing directories - #429
Open
AdamWillden wants to merge 1 commit into
Open
AdamWillden wants to merge 1 commit into
AdamWillden wants to merge 1 commit into
Conversation
Handle the case where a directory is created concurrently by another deployment without treating it as an error. With the move to CodeDeploy Agent v2 and its support for concurrent deployments, we are experiencing failures during the Install step when multiple deployments attempt to create the same directory at the same time. In our case, three deployments run simultaneously and copy files into separate destinations beneath a shared nested directory structure that does not initially exist. Each deployment determines that the shared parent directory needs to be created and queues a directory creation command. If another deployment creates that directory before the command is executed, fs::create_dir returns AlreadyExists, causing the deployment to fail. This change treats AlreadyExists as successful when the existing path is a directory. The directory is only written to the cleanup file when it was created by the current deployment, ensuring that a deployment does not subsequently attempt to clean up a directory created by another deployment.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Handle the case where a directory is created concurrently by another deployment without treating it as an error.
With the move to CodeDeploy Agent v2 and its support for concurrent deployments, we are experiencing failures during the Install step when multiple deployments attempt to create the same directory at the same time.
In our case, three deployments run simultaneously and copy files into separate destinations beneath a shared nested directory structure that does not initially exist. Each deployment determines that the shared parent directory needs to be created and queues a directory creation command. If another deployment creates that directory before the command is executed, fs::create_dir returns AlreadyExists, causing the deployment to fail.
This change treats AlreadyExists as successful when the existing path is a directory. The directory is only written to the cleanup file when it was created by the current deployment, ensuring that a deployment does not subsequently attempt to clean up a directory created by another deployment.
Issue #, if available: - no issue raised yet
Description of changes: - see above
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.