Add aws.batch.forceGlacierTransfer config option#6700
Conversation
✅ Deploy Preview for nextflow-docs-staging ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
1ca5397 to
daf9ed7
Compare
Clean up trailing spaces in retryEnv(), s3Lib(), and s5cmdLib() methods, and update corresponding test expectations. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> Signed-off-by: Rob Syme <rob.syme@gmail.com>
daf9ed7 to
ee43990
Compare
|
@claude Review |
|
Claude finished @robsyme's task —— View job Code Review AnalysisReviewing PR #6700: Add aws.batch.forceGlacierTransfer config option Todo List:
Review SummaryThis PR successfully implements the ✅ Strengths1. Clean Architecture & Implementation
2. Targeted Solution
3. Excellent Test Coverage
4. Documentation & Clarity
🔍 Technical DetailsConfig Flow AnalysisThe implementation follows a clean data flow:
Bash Script GenerationThe generated bash includes the flag conditionally: # When forceGlacierTransfer = true
aws s3 cp --only-show-errors --recursive --force-glacier-transfer "$source" "$target"
# When forceGlacierTransfer = false (default)
aws s3 cp --only-show-errors --recursive "$source" "$target"
|
Add configuration option to enable --force-glacier-transfer flag for AWS CLI S3 download commands. This allows downloading restored Glacier/Deep Archive objects that retain their storage class metadata. When enabled via: aws.batch.forceGlacierTransfer = true The nxf_s3_download function will include --force-glacier-transfer in aws s3 cp commands, enabling downloads of restored Glacier objects without AWS CLI skipping them due to storage class checks. Fixes: #4747 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> Signed-off-by: Rob Syme <rob.syme@gmail.com>
ee43990 to
8fc1ffc
Compare
|
In response to the performance consideration raided by @claude: From what I can see, when enabling the flag for standard storage class objects, the flag is effectively a no-op - the transfer proceeds normally either way. There are:
|
|
Claude finished @robsyme's task —— View job Claude is reviewing @robsyme's clarification Todo List:
Updated Code Review AnalysisThank you for the clarification @robsyme! You're absolutely correct about the performance consideration. ✅ Performance Clarification - Issue ResolvedYour explanation confirms that my minor performance observation was indeed not a concern: AWS CLI
This means the flag is effectively transparent for non-Glacier objects, making it safe to enable globally when needed without any performance penalty. 📊 Final AssessmentStatus: ✅ APPROVE - Ready for merge The implementation is excellent and my previous "performance consideration" is resolved. This PR:
The |
|
happy to help test as soon as you can point us to a nextflow dev version ! thanks @robsyme ! |
plugins/nf-amazon/src/main/nextflow/cloud/aws/config/AwsBatchConfig.groovy
Outdated
Show resolved
Hide resolved
Signed-off-by: Ben Sherman <bentshermann@gmail.com>
plugins/nf-amazon/src/main/nextflow/cloud/aws/util/S3BashLib.groovy
Outdated
Show resolved
Hide resolved
Signed-off-by: Ben Sherman <bentshermann@gmail.com>
Signed-off-by: Ben Sherman <bentshermann@gmail.com>
Co-authored-by: Ben Sherman <bentshermann@gmail.com>

Summary
aws.batch.forceGlacierTransferconfiguration option to enable--force-glacier-transferflag for AWS CLI S3 download commandsProblem
When Nextflow stages input files from S3 directories containing restored Glacier/Deep Archive objects, AWS CLI skips them even though they are fully accessible. This is because AWS CLI checks the storage class metadata (which remains
GLACIERorDEEP_ARCHIVEeven after restoration) and refuses to download unless--force-glacier-transferis specified.Error message from AWS CLI:
Solution
Add a new config option:
aws { batch { forceGlacierTransfer = true } }When enabled, the
nxf_s3_downloadbash function includes--force-glacier-transferinaws s3 cpcommands, allowing restored Glacier objects to be downloaded.Test plan
AwsBatchConfigTestS3BashLibTestCloses #4747