Skip to content

Improve error handling for existing directories - #429

Merged
gmiliaras merged 2 commits into
aws:mainfrom
AdamWillden:patch-1
Oct 27, 2026
Merged

gmiliaras merged 2 commits into
aws:mainfrom
AdamWillden:patch-1

Conversation

@AdamWillden

@AdamWillden AdamWillden commented Sep 18, 2026 •

Copy link
Copy Markdown
Contributor

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.

AdamWillden and others added 2 commits September 18, 2026 16:15
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.
@gmiliaras

Copy link
Copy Markdown
Contributor

Hey @AdamWillden, thank you for the contribution, this change is reasonable. I have updated the formatting and the failing unit tests.

I wanted your help in understanding your use-case and see how we could better serve it with the agent and the CodeDeploy service. What is the reasoning behind using shared directories? Are you deploying reusable code or tooling, or trying to share state across deployments?

@gmiliaras
gmiliaras merged commit 3a4d822 into aws:main Oct 27, 2026
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants