-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Added feature icav2 copy batch state machine #143
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM.! Yup, just needa hook up with outer CDK code would be good.
...ad/stateless/icav2_copy_batch_utility/step_functions_templates/copy_batch_state_machine.json
Outdated
Show resolved
Hide resolved
Put this branch into draft mode until we finalise |
Ignore secret in Readme.md
b7e2984
to
b453395
Compare
@victorskl this one is now ready for review |
thanks Alexis for update, will review today. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM from me.
] | ||
} | ||
] | ||
``` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
"Flip Manifest" Very creative concept, Alexis.! 👍
DEFAULT_WAIT_TIME_SECONDS = 10 | ||
|
||
|
||
def handler(event, context): |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Non blocker comment (due to time constraint).
One fine day down the track, we should unit test this handler to guardrail couple of if
branching statements down under. Need to make sure these branching logics maintain throughout the system SDLC and, retain it when refactoring happens.
Summary
This ICAv2 Copy Batch Utility wraps an AWS Step Function over the ICAv2 CopyBatch API.
This api is designed to copy a list of illumina file ids into a directory.
We exploit this API by taking in a manifest (a list of key values of source ids with their respective destinations) ( a source may have multiple destinations if it needs to be copied into a few different places ), and then monitor a set of API jobs to completion.
These CopyBatch API jobs have about a 20% fail rate, so we sometimes need to resubmit, this is built into the step function.
A 20% fail rate seems quite high, but when they work, these jobs can transfer 80 Gb of data in under 10 seconds so it's worth persisting with.
When working with the ICAv2 CopyBatch API, we need to provide a unique identifier for the run, and a unique location for the outputs.
Once all jobs are deployed we monitor their status (redeploy if failed - up to five times) and wait for all jobs to complete.
This process will transfer an entire BCLConvert process from one ICAv2 project to another in under 10 minutes!
Note that a current limitation prevents using this API within the same project.
TODO List